diff options
Diffstat (limited to 'newlib/libm/machine/spu')
334 files changed, 0 insertions, 24499 deletions
diff --git a/newlib/libm/machine/spu/Makefile.am b/newlib/libm/machine/spu/Makefile.am deleted file mode 100644 index 2ca70a751..000000000 --- a/newlib/libm/machine/spu/Makefile.am +++ /dev/null @@ -1,41 +0,0 @@ -## Process this file with automake to generate Makefile.in - -AUTOMAKE_OPTIONS = cygnus - -INCLUDES = -I $(newlib_basedir)/../newlib/libm/common $(NEWLIB_CFLAGS) \ - $(CROSS_CFLAGS) $(TARGET_CFLAGS) - -LIB_SOURCES = \ - feclearexcept.c fe_dfl_env.c fegetenv.c fegetexceptflag.c \ - fegetround.c feholdexcept.c feraiseexcept.c fesetenv.c \ - fesetexceptflag.c fesetround.c fetestexcept.c feupdateenv.c \ - llrint.c llrintf.c llround.c llroundf.c log2.c log2f.c s_asinh.c \ - s_atan.c s_cbrt.c s_ceil.c s_copysign.c s_cos.c s_erf.c s_expm1.c \ - s_fabs.c sf_asinh.c sf_atan.c sf_cbrt.c sf_ceil.c sf_copysign.c \ - sf_cos.c s_fdim.c sf_erf.c sf_expm1.c sf_fabs.c sf_fdim.c \ - sf_finite.c sf_floor.c sf_fma.c sf_fmax.c sf_fmin.c \ - sf_fpclassify.c sf_frexp.c sf_ilogb.c sf_isinf.c sf_isinff.c \ - sf_isnan.c sf_isnanf.c sf_ldexp.c sf_log1p.c sf_logb.c s_floor.c \ - sf_lrint.c sf_lround.c s_fma.c s_fmax.c s_fmin.c sf_nan.c \ - sf_nearbyint.c sf_nextafter.c sf_remquo.c s_frexp.c sf_rint.c \ - sf_round.c sf_scalbn.c sf_sin.c sf_tan.c sf_tanh.c sf_trunc.c \ - s_ilogb.c s_isnan.c s_ldexp.c s_log1p.c s_lrint.c s_lround.c \ - s_nearbyint.c s_nextafter.c s_remquo.c s_rint.c s_round.c \ - s_scalbn.c s_sin.c s_tan.c s_tanh.c s_trunc.c w_acos.c w_acosh.c \ - w_asin.c w_atan2.c w_atanh.c w_cosh.c w_exp2.c w_exp.c wf_acos.c \ - wf_acosh.c wf_asin.c wf_atan2.c wf_atanh.c wf_cosh.c wf_exp2.c \ - wf_exp.c wf_fmod.c wf_hypot.c wf_lgamma.c wf_log10.c wf_log.c \ - w_fmod.c wf_pow.c wf_remainder.c wf_sincos.c wf_sinh.c wf_sqrt.c \ - wf_tgamma.c w_hypot.c w_lgamma.c w_log10.c w_log.c w_pow.c \ - w_remainder.c w_sincos.c w_sinh.c w_sqrt.c w_tgamma.c - -noinst_LIBRARIES = lib.a -lib_a_SOURCES = $(LIB_SOURCES) -lib_a_CFLAGS = $(AM_CFLAGS) -lib_a_CCASFLAGS = $(AM_CCASFLAGS) -noinst_DATA = - -include $(srcdir)/../../../Makefile.shared - -ACLOCAL_AMFLAGS = -I ../../.. -I ../../../.. -CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host diff --git a/newlib/libm/machine/spu/Makefile.in b/newlib/libm/machine/spu/Makefile.in deleted file mode 100644 index 209eceb8f..000000000 --- a/newlib/libm/machine/spu/Makefile.in +++ /dev/null @@ -1,1293 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(srcdir)/../../../Makefile.shared \ - $(srcdir)/../../../../config.guess \ - $(srcdir)/../../../../config.sub $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(srcdir)/../../../../mkinstalldirs \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile $(srcdir)/../../../../compile \ - $(srcdir)/../../../../compile -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../../../acinclude.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno configure.status.lineno -mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs -CONFIG_CLEAN_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -lib_a_AR = $(AR) $(ARFLAGS) -lib_a_LIBADD = -am__objects_1 = lib_a-feclearexcept.$(OBJEXT) \ - lib_a-fe_dfl_env.$(OBJEXT) lib_a-fegetenv.$(OBJEXT) \ - lib_a-fegetexceptflag.$(OBJEXT) lib_a-fegetround.$(OBJEXT) \ - lib_a-feholdexcept.$(OBJEXT) lib_a-feraiseexcept.$(OBJEXT) \ - lib_a-fesetenv.$(OBJEXT) lib_a-fesetexceptflag.$(OBJEXT) \ - lib_a-fesetround.$(OBJEXT) lib_a-fetestexcept.$(OBJEXT) \ - lib_a-feupdateenv.$(OBJEXT) lib_a-llrint.$(OBJEXT) \ - lib_a-llrintf.$(OBJEXT) lib_a-llround.$(OBJEXT) \ - lib_a-llroundf.$(OBJEXT) lib_a-log2.$(OBJEXT) \ - lib_a-log2f.$(OBJEXT) lib_a-s_asinh.$(OBJEXT) \ - lib_a-s_atan.$(OBJEXT) lib_a-s_cbrt.$(OBJEXT) \ - lib_a-s_ceil.$(OBJEXT) lib_a-s_copysign.$(OBJEXT) \ - lib_a-s_cos.$(OBJEXT) lib_a-s_erf.$(OBJEXT) \ - lib_a-s_expm1.$(OBJEXT) lib_a-s_fabs.$(OBJEXT) \ - lib_a-sf_asinh.$(OBJEXT) lib_a-sf_atan.$(OBJEXT) \ - lib_a-sf_cbrt.$(OBJEXT) lib_a-sf_ceil.$(OBJEXT) \ - lib_a-sf_copysign.$(OBJEXT) lib_a-sf_cos.$(OBJEXT) \ - lib_a-s_fdim.$(OBJEXT) lib_a-sf_erf.$(OBJEXT) \ - lib_a-sf_expm1.$(OBJEXT) lib_a-sf_fabs.$(OBJEXT) \ - lib_a-sf_fdim.$(OBJEXT) lib_a-sf_finite.$(OBJEXT) \ - lib_a-sf_floor.$(OBJEXT) lib_a-sf_fma.$(OBJEXT) \ - lib_a-sf_fmax.$(OBJEXT) lib_a-sf_fmin.$(OBJEXT) \ - lib_a-sf_fpclassify.$(OBJEXT) lib_a-sf_frexp.$(OBJEXT) \ - lib_a-sf_ilogb.$(OBJEXT) lib_a-sf_isinf.$(OBJEXT) \ - lib_a-sf_isinff.$(OBJEXT) lib_a-sf_isnan.$(OBJEXT) \ - lib_a-sf_isnanf.$(OBJEXT) lib_a-sf_ldexp.$(OBJEXT) \ - lib_a-sf_log1p.$(OBJEXT) lib_a-sf_logb.$(OBJEXT) \ - lib_a-s_floor.$(OBJEXT) lib_a-sf_lrint.$(OBJEXT) \ - lib_a-sf_lround.$(OBJEXT) lib_a-s_fma.$(OBJEXT) \ - lib_a-s_fmax.$(OBJEXT) lib_a-s_fmin.$(OBJEXT) \ - lib_a-sf_nan.$(OBJEXT) lib_a-sf_nearbyint.$(OBJEXT) \ - lib_a-sf_nextafter.$(OBJEXT) lib_a-sf_remquo.$(OBJEXT) \ - lib_a-s_frexp.$(OBJEXT) lib_a-sf_rint.$(OBJEXT) \ - lib_a-sf_round.$(OBJEXT) lib_a-sf_scalbn.$(OBJEXT) \ - lib_a-sf_sin.$(OBJEXT) lib_a-sf_tan.$(OBJEXT) \ - lib_a-sf_tanh.$(OBJEXT) lib_a-sf_trunc.$(OBJEXT) \ - lib_a-s_ilogb.$(OBJEXT) lib_a-s_isnan.$(OBJEXT) \ - lib_a-s_ldexp.$(OBJEXT) lib_a-s_log1p.$(OBJEXT) \ - lib_a-s_lrint.$(OBJEXT) lib_a-s_lround.$(OBJEXT) \ - lib_a-s_nearbyint.$(OBJEXT) lib_a-s_nextafter.$(OBJEXT) \ - lib_a-s_remquo.$(OBJEXT) lib_a-s_rint.$(OBJEXT) \ - lib_a-s_round.$(OBJEXT) lib_a-s_scalbn.$(OBJEXT) \ - lib_a-s_sin.$(OBJEXT) lib_a-s_tan.$(OBJEXT) \ - lib_a-s_tanh.$(OBJEXT) lib_a-s_trunc.$(OBJEXT) \ - lib_a-w_acos.$(OBJEXT) lib_a-w_acosh.$(OBJEXT) \ - lib_a-w_asin.$(OBJEXT) lib_a-w_atan2.$(OBJEXT) \ - lib_a-w_atanh.$(OBJEXT) lib_a-w_cosh.$(OBJEXT) \ - lib_a-w_exp2.$(OBJEXT) lib_a-w_exp.$(OBJEXT) \ - lib_a-wf_acos.$(OBJEXT) lib_a-wf_acosh.$(OBJEXT) \ - lib_a-wf_asin.$(OBJEXT) lib_a-wf_atan2.$(OBJEXT) \ - lib_a-wf_atanh.$(OBJEXT) lib_a-wf_cosh.$(OBJEXT) \ - lib_a-wf_exp2.$(OBJEXT) lib_a-wf_exp.$(OBJEXT) \ - lib_a-wf_fmod.$(OBJEXT) lib_a-wf_hypot.$(OBJEXT) \ - lib_a-wf_lgamma.$(OBJEXT) lib_a-wf_log10.$(OBJEXT) \ - lib_a-wf_log.$(OBJEXT) lib_a-w_fmod.$(OBJEXT) \ - lib_a-wf_pow.$(OBJEXT) lib_a-wf_remainder.$(OBJEXT) \ - lib_a-wf_sincos.$(OBJEXT) lib_a-wf_sinh.$(OBJEXT) \ - lib_a-wf_sqrt.$(OBJEXT) lib_a-wf_tgamma.$(OBJEXT) \ - lib_a-w_hypot.$(OBJEXT) lib_a-w_lgamma.$(OBJEXT) \ - lib_a-w_log10.$(OBJEXT) lib_a-w_log.$(OBJEXT) \ - lib_a-w_pow.$(OBJEXT) lib_a-w_remainder.$(OBJEXT) \ - lib_a-w_sincos.$(OBJEXT) lib_a-w_sinh.$(OBJEXT) \ - lib_a-w_sqrt.$(OBJEXT) lib_a-w_tgamma.$(OBJEXT) -am_lib_a_OBJECTS = $(am__objects_1) -lib_a_OBJECTS = $(am_lib_a_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -depcomp = -am__depfiles_maybe = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(lib_a_SOURCES) -DATA = $(noinst_DATA) -ETAGS = etags -CTAGS = ctags -ACLOCAL = @ACLOCAL@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCAS = @CCAS@ -CCASFLAGS = @CCASFLAGS@ -CCDEPMODE = @CCDEPMODE@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -ELIX_LEVEL_0_FALSE = @ELIX_LEVEL_0_FALSE@ -ELIX_LEVEL_0_TRUE = @ELIX_LEVEL_0_TRUE@ -ELIX_LEVEL_1_FALSE = @ELIX_LEVEL_1_FALSE@ -ELIX_LEVEL_1_TRUE = @ELIX_LEVEL_1_TRUE@ -ELIX_LEVEL_2_FALSE = @ELIX_LEVEL_2_FALSE@ -ELIX_LEVEL_2_TRUE = @ELIX_LEVEL_2_TRUE@ -ELIX_LEVEL_3_FALSE = @ELIX_LEVEL_3_FALSE@ -ELIX_LEVEL_3_TRUE = @ELIX_LEVEL_3_TRUE@ -ELIX_LEVEL_4_FALSE = @ELIX_LEVEL_4_FALSE@ -ELIX_LEVEL_4_TRUE = @ELIX_LEVEL_4_TRUE@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ -MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ -MAKEINFO = @MAKEINFO@ -MAY_SUPPLY_SYSCALLS_FALSE = @MAY_SUPPLY_SYSCALLS_FALSE@ -MAY_SUPPLY_SYSCALLS_TRUE = @MAY_SUPPLY_SYSCALLS_TRUE@ -NEWLIB_CFLAGS = @NEWLIB_CFLAGS@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -READELF = @READELF@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_LIBTOOL_FALSE = @USE_LIBTOOL_FALSE@ -USE_LIBTOOL_TRUE = @USE_LIBTOOL_TRUE@ -VERSION = @VERSION@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_READELF = @ac_ct_READELF@ -ac_ct_STRIP = @ac_ct_STRIP@ -aext = @aext@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -libm_machine_dir = @libm_machine_dir@ -localstatedir = @localstatedir@ -lpfx = @lpfx@ -machine_dir = @machine_dir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -newlib_basedir = @newlib_basedir@ -oext = @oext@ -oldincludedir = @oldincludedir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sys_dir = @sys_dir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -AUTOMAKE_OPTIONS = cygnus -INCLUDES = -I $(newlib_basedir)/../newlib/libm/common $(NEWLIB_CFLAGS) \ - $(CROSS_CFLAGS) $(TARGET_CFLAGS) - -LIB_SOURCES = \ - feclearexcept.c fe_dfl_env.c fegetenv.c fegetexceptflag.c \ - fegetround.c feholdexcept.c feraiseexcept.c fesetenv.c \ - fesetexceptflag.c fesetround.c fetestexcept.c feupdateenv.c \ - llrint.c llrintf.c llround.c llroundf.c log2.c log2f.c s_asinh.c \ - s_atan.c s_cbrt.c s_ceil.c s_copysign.c s_cos.c s_erf.c s_expm1.c \ - s_fabs.c sf_asinh.c sf_atan.c sf_cbrt.c sf_ceil.c sf_copysign.c \ - sf_cos.c s_fdim.c sf_erf.c sf_expm1.c sf_fabs.c sf_fdim.c \ - sf_finite.c sf_floor.c sf_fma.c sf_fmax.c sf_fmin.c \ - sf_fpclassify.c sf_frexp.c sf_ilogb.c sf_isinf.c sf_isinff.c \ - sf_isnan.c sf_isnanf.c sf_ldexp.c sf_log1p.c sf_logb.c s_floor.c \ - sf_lrint.c sf_lround.c s_fma.c s_fmax.c s_fmin.c sf_nan.c \ - sf_nearbyint.c sf_nextafter.c sf_remquo.c s_frexp.c sf_rint.c \ - sf_round.c sf_scalbn.c sf_sin.c sf_tan.c sf_tanh.c sf_trunc.c \ - s_ilogb.c s_isnan.c s_ldexp.c s_log1p.c s_lrint.c s_lround.c \ - s_nearbyint.c s_nextafter.c s_remquo.c s_rint.c s_round.c \ - s_scalbn.c s_sin.c s_tan.c s_tanh.c s_trunc.c w_acos.c w_acosh.c \ - w_asin.c w_atan2.c w_atanh.c w_cosh.c w_exp2.c w_exp.c wf_acos.c \ - wf_acosh.c wf_asin.c wf_atan2.c wf_atanh.c wf_cosh.c wf_exp2.c \ - wf_exp.c wf_fmod.c wf_hypot.c wf_lgamma.c wf_log10.c wf_log.c \ - w_fmod.c wf_pow.c wf_remainder.c wf_sincos.c wf_sinh.c wf_sqrt.c \ - wf_tgamma.c w_hypot.c w_lgamma.c w_log10.c w_log.c w_pow.c \ - w_remainder.c w_sincos.c w_sinh.c w_sqrt.c w_tgamma.c - -noinst_LIBRARIES = lib.a -lib_a_SOURCES = $(LIB_SOURCES) -lib_a_CFLAGS = $(AM_CFLAGS) -lib_a_CCASFLAGS = $(AM_CCASFLAGS) -noinst_DATA = -ACLOCAL_AMFLAGS = -I ../../.. -I ../../../.. -CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -am--refresh: - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../../../Makefile.shared $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --cygnus '; \ - cd $(srcdir) && $(AUTOMAKE) --cygnus \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --cygnus Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES) - -rm -f lib.a - $(lib_a_AR) lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD) - $(RANLIB) lib.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -.c.o: - $(COMPILE) -c $< - -.c.obj: - $(COMPILE) -c `$(CYGPATH_W) '$<'` - -lib_a-feclearexcept.o: feclearexcept.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feclearexcept.o `test -f 'feclearexcept.c' || echo '$(srcdir)/'`feclearexcept.c - -lib_a-feclearexcept.obj: feclearexcept.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feclearexcept.obj `if test -f 'feclearexcept.c'; then $(CYGPATH_W) 'feclearexcept.c'; else $(CYGPATH_W) '$(srcdir)/feclearexcept.c'; fi` - -lib_a-fe_dfl_env.o: fe_dfl_env.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fe_dfl_env.o `test -f 'fe_dfl_env.c' || echo '$(srcdir)/'`fe_dfl_env.c - -lib_a-fe_dfl_env.obj: fe_dfl_env.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fe_dfl_env.obj `if test -f 'fe_dfl_env.c'; then $(CYGPATH_W) 'fe_dfl_env.c'; else $(CYGPATH_W) '$(srcdir)/fe_dfl_env.c'; fi` - -lib_a-fegetenv.o: fegetenv.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetenv.o `test -f 'fegetenv.c' || echo '$(srcdir)/'`fegetenv.c - -lib_a-fegetenv.obj: fegetenv.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetenv.obj `if test -f 'fegetenv.c'; then $(CYGPATH_W) 'fegetenv.c'; else $(CYGPATH_W) '$(srcdir)/fegetenv.c'; fi` - -lib_a-fegetexceptflag.o: fegetexceptflag.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetexceptflag.o `test -f 'fegetexceptflag.c' || echo '$(srcdir)/'`fegetexceptflag.c - -lib_a-fegetexceptflag.obj: fegetexceptflag.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetexceptflag.obj `if test -f 'fegetexceptflag.c'; then $(CYGPATH_W) 'fegetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/fegetexceptflag.c'; fi` - -lib_a-fegetround.o: fegetround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetround.o `test -f 'fegetround.c' || echo '$(srcdir)/'`fegetround.c - -lib_a-fegetround.obj: fegetround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fegetround.obj `if test -f 'fegetround.c'; then $(CYGPATH_W) 'fegetround.c'; else $(CYGPATH_W) '$(srcdir)/fegetround.c'; fi` - -lib_a-feholdexcept.o: feholdexcept.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feholdexcept.o `test -f 'feholdexcept.c' || echo '$(srcdir)/'`feholdexcept.c - -lib_a-feholdexcept.obj: feholdexcept.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feholdexcept.obj `if test -f 'feholdexcept.c'; then $(CYGPATH_W) 'feholdexcept.c'; else $(CYGPATH_W) '$(srcdir)/feholdexcept.c'; fi` - -lib_a-feraiseexcept.o: feraiseexcept.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feraiseexcept.o `test -f 'feraiseexcept.c' || echo '$(srcdir)/'`feraiseexcept.c - -lib_a-feraiseexcept.obj: feraiseexcept.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feraiseexcept.obj `if test -f 'feraiseexcept.c'; then $(CYGPATH_W) 'feraiseexcept.c'; else $(CYGPATH_W) '$(srcdir)/feraiseexcept.c'; fi` - -lib_a-fesetenv.o: fesetenv.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetenv.o `test -f 'fesetenv.c' || echo '$(srcdir)/'`fesetenv.c - -lib_a-fesetenv.obj: fesetenv.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetenv.obj `if test -f 'fesetenv.c'; then $(CYGPATH_W) 'fesetenv.c'; else $(CYGPATH_W) '$(srcdir)/fesetenv.c'; fi` - -lib_a-fesetexceptflag.o: fesetexceptflag.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetexceptflag.o `test -f 'fesetexceptflag.c' || echo '$(srcdir)/'`fesetexceptflag.c - -lib_a-fesetexceptflag.obj: fesetexceptflag.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetexceptflag.obj `if test -f 'fesetexceptflag.c'; then $(CYGPATH_W) 'fesetexceptflag.c'; else $(CYGPATH_W) '$(srcdir)/fesetexceptflag.c'; fi` - -lib_a-fesetround.o: fesetround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetround.o `test -f 'fesetround.c' || echo '$(srcdir)/'`fesetround.c - -lib_a-fesetround.obj: fesetround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fesetround.obj `if test -f 'fesetround.c'; then $(CYGPATH_W) 'fesetround.c'; else $(CYGPATH_W) '$(srcdir)/fesetround.c'; fi` - -lib_a-fetestexcept.o: fetestexcept.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fetestexcept.o `test -f 'fetestexcept.c' || echo '$(srcdir)/'`fetestexcept.c - -lib_a-fetestexcept.obj: fetestexcept.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fetestexcept.obj `if test -f 'fetestexcept.c'; then $(CYGPATH_W) 'fetestexcept.c'; else $(CYGPATH_W) '$(srcdir)/fetestexcept.c'; fi` - -lib_a-feupdateenv.o: feupdateenv.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feupdateenv.o `test -f 'feupdateenv.c' || echo '$(srcdir)/'`feupdateenv.c - -lib_a-feupdateenv.obj: feupdateenv.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-feupdateenv.obj `if test -f 'feupdateenv.c'; then $(CYGPATH_W) 'feupdateenv.c'; else $(CYGPATH_W) '$(srcdir)/feupdateenv.c'; fi` - -lib_a-llrint.o: llrint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-llrint.o `test -f 'llrint.c' || echo '$(srcdir)/'`llrint.c - -lib_a-llrint.obj: llrint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-llrint.obj `if test -f 'llrint.c'; then $(CYGPATH_W) 'llrint.c'; else $(CYGPATH_W) '$(srcdir)/llrint.c'; fi` - -lib_a-llrintf.o: llrintf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-llrintf.o `test -f 'llrintf.c' || echo '$(srcdir)/'`llrintf.c - -lib_a-llrintf.obj: llrintf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-llrintf.obj `if test -f 'llrintf.c'; then $(CYGPATH_W) 'llrintf.c'; else $(CYGPATH_W) '$(srcdir)/llrintf.c'; fi` - -lib_a-llround.o: llround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-llround.o `test -f 'llround.c' || echo '$(srcdir)/'`llround.c - -lib_a-llround.obj: llround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-llround.obj `if test -f 'llround.c'; then $(CYGPATH_W) 'llround.c'; else $(CYGPATH_W) '$(srcdir)/llround.c'; fi` - -lib_a-llroundf.o: llroundf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-llroundf.o `test -f 'llroundf.c' || echo '$(srcdir)/'`llroundf.c - -lib_a-llroundf.obj: llroundf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-llroundf.obj `if test -f 'llroundf.c'; then $(CYGPATH_W) 'llroundf.c'; else $(CYGPATH_W) '$(srcdir)/llroundf.c'; fi` - -lib_a-log2.o: log2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-log2.o `test -f 'log2.c' || echo '$(srcdir)/'`log2.c - -lib_a-log2.obj: log2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-log2.obj `if test -f 'log2.c'; then $(CYGPATH_W) 'log2.c'; else $(CYGPATH_W) '$(srcdir)/log2.c'; fi` - -lib_a-log2f.o: log2f.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-log2f.o `test -f 'log2f.c' || echo '$(srcdir)/'`log2f.c - -lib_a-log2f.obj: log2f.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-log2f.obj `if test -f 'log2f.c'; then $(CYGPATH_W) 'log2f.c'; else $(CYGPATH_W) '$(srcdir)/log2f.c'; fi` - -lib_a-s_asinh.o: s_asinh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_asinh.o `test -f 's_asinh.c' || echo '$(srcdir)/'`s_asinh.c - -lib_a-s_asinh.obj: s_asinh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_asinh.obj `if test -f 's_asinh.c'; then $(CYGPATH_W) 's_asinh.c'; else $(CYGPATH_W) '$(srcdir)/s_asinh.c'; fi` - -lib_a-s_atan.o: s_atan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_atan.o `test -f 's_atan.c' || echo '$(srcdir)/'`s_atan.c - -lib_a-s_atan.obj: s_atan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_atan.obj `if test -f 's_atan.c'; then $(CYGPATH_W) 's_atan.c'; else $(CYGPATH_W) '$(srcdir)/s_atan.c'; fi` - -lib_a-s_cbrt.o: s_cbrt.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_cbrt.o `test -f 's_cbrt.c' || echo '$(srcdir)/'`s_cbrt.c - -lib_a-s_cbrt.obj: s_cbrt.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_cbrt.obj `if test -f 's_cbrt.c'; then $(CYGPATH_W) 's_cbrt.c'; else $(CYGPATH_W) '$(srcdir)/s_cbrt.c'; fi` - -lib_a-s_ceil.o: s_ceil.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_ceil.o `test -f 's_ceil.c' || echo '$(srcdir)/'`s_ceil.c - -lib_a-s_ceil.obj: s_ceil.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_ceil.obj `if test -f 's_ceil.c'; then $(CYGPATH_W) 's_ceil.c'; else $(CYGPATH_W) '$(srcdir)/s_ceil.c'; fi` - -lib_a-s_copysign.o: s_copysign.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_copysign.o `test -f 's_copysign.c' || echo '$(srcdir)/'`s_copysign.c - -lib_a-s_copysign.obj: s_copysign.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_copysign.obj `if test -f 's_copysign.c'; then $(CYGPATH_W) 's_copysign.c'; else $(CYGPATH_W) '$(srcdir)/s_copysign.c'; fi` - -lib_a-s_cos.o: s_cos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_cos.o `test -f 's_cos.c' || echo '$(srcdir)/'`s_cos.c - -lib_a-s_cos.obj: s_cos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_cos.obj `if test -f 's_cos.c'; then $(CYGPATH_W) 's_cos.c'; else $(CYGPATH_W) '$(srcdir)/s_cos.c'; fi` - -lib_a-s_erf.o: s_erf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_erf.o `test -f 's_erf.c' || echo '$(srcdir)/'`s_erf.c - -lib_a-s_erf.obj: s_erf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_erf.obj `if test -f 's_erf.c'; then $(CYGPATH_W) 's_erf.c'; else $(CYGPATH_W) '$(srcdir)/s_erf.c'; fi` - -lib_a-s_expm1.o: s_expm1.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_expm1.o `test -f 's_expm1.c' || echo '$(srcdir)/'`s_expm1.c - -lib_a-s_expm1.obj: s_expm1.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_expm1.obj `if test -f 's_expm1.c'; then $(CYGPATH_W) 's_expm1.c'; else $(CYGPATH_W) '$(srcdir)/s_expm1.c'; fi` - -lib_a-s_fabs.o: s_fabs.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fabs.o `test -f 's_fabs.c' || echo '$(srcdir)/'`s_fabs.c - -lib_a-s_fabs.obj: s_fabs.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fabs.obj `if test -f 's_fabs.c'; then $(CYGPATH_W) 's_fabs.c'; else $(CYGPATH_W) '$(srcdir)/s_fabs.c'; fi` - -lib_a-sf_asinh.o: sf_asinh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_asinh.o `test -f 'sf_asinh.c' || echo '$(srcdir)/'`sf_asinh.c - -lib_a-sf_asinh.obj: sf_asinh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_asinh.obj `if test -f 'sf_asinh.c'; then $(CYGPATH_W) 'sf_asinh.c'; else $(CYGPATH_W) '$(srcdir)/sf_asinh.c'; fi` - -lib_a-sf_atan.o: sf_atan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_atan.o `test -f 'sf_atan.c' || echo '$(srcdir)/'`sf_atan.c - -lib_a-sf_atan.obj: sf_atan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_atan.obj `if test -f 'sf_atan.c'; then $(CYGPATH_W) 'sf_atan.c'; else $(CYGPATH_W) '$(srcdir)/sf_atan.c'; fi` - -lib_a-sf_cbrt.o: sf_cbrt.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_cbrt.o `test -f 'sf_cbrt.c' || echo '$(srcdir)/'`sf_cbrt.c - -lib_a-sf_cbrt.obj: sf_cbrt.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_cbrt.obj `if test -f 'sf_cbrt.c'; then $(CYGPATH_W) 'sf_cbrt.c'; else $(CYGPATH_W) '$(srcdir)/sf_cbrt.c'; fi` - -lib_a-sf_ceil.o: sf_ceil.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_ceil.o `test -f 'sf_ceil.c' || echo '$(srcdir)/'`sf_ceil.c - -lib_a-sf_ceil.obj: sf_ceil.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_ceil.obj `if test -f 'sf_ceil.c'; then $(CYGPATH_W) 'sf_ceil.c'; else $(CYGPATH_W) '$(srcdir)/sf_ceil.c'; fi` - -lib_a-sf_copysign.o: sf_copysign.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_copysign.o `test -f 'sf_copysign.c' || echo '$(srcdir)/'`sf_copysign.c - -lib_a-sf_copysign.obj: sf_copysign.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_copysign.obj `if test -f 'sf_copysign.c'; then $(CYGPATH_W) 'sf_copysign.c'; else $(CYGPATH_W) '$(srcdir)/sf_copysign.c'; fi` - -lib_a-sf_cos.o: sf_cos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_cos.o `test -f 'sf_cos.c' || echo '$(srcdir)/'`sf_cos.c - -lib_a-sf_cos.obj: sf_cos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_cos.obj `if test -f 'sf_cos.c'; then $(CYGPATH_W) 'sf_cos.c'; else $(CYGPATH_W) '$(srcdir)/sf_cos.c'; fi` - -lib_a-s_fdim.o: s_fdim.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fdim.o `test -f 's_fdim.c' || echo '$(srcdir)/'`s_fdim.c - -lib_a-s_fdim.obj: s_fdim.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fdim.obj `if test -f 's_fdim.c'; then $(CYGPATH_W) 's_fdim.c'; else $(CYGPATH_W) '$(srcdir)/s_fdim.c'; fi` - -lib_a-sf_erf.o: sf_erf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_erf.o `test -f 'sf_erf.c' || echo '$(srcdir)/'`sf_erf.c - -lib_a-sf_erf.obj: sf_erf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_erf.obj `if test -f 'sf_erf.c'; then $(CYGPATH_W) 'sf_erf.c'; else $(CYGPATH_W) '$(srcdir)/sf_erf.c'; fi` - -lib_a-sf_expm1.o: sf_expm1.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_expm1.o `test -f 'sf_expm1.c' || echo '$(srcdir)/'`sf_expm1.c - -lib_a-sf_expm1.obj: sf_expm1.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_expm1.obj `if test -f 'sf_expm1.c'; then $(CYGPATH_W) 'sf_expm1.c'; else $(CYGPATH_W) '$(srcdir)/sf_expm1.c'; fi` - -lib_a-sf_fabs.o: sf_fabs.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fabs.o `test -f 'sf_fabs.c' || echo '$(srcdir)/'`sf_fabs.c - -lib_a-sf_fabs.obj: sf_fabs.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fabs.obj `if test -f 'sf_fabs.c'; then $(CYGPATH_W) 'sf_fabs.c'; else $(CYGPATH_W) '$(srcdir)/sf_fabs.c'; fi` - -lib_a-sf_fdim.o: sf_fdim.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fdim.o `test -f 'sf_fdim.c' || echo '$(srcdir)/'`sf_fdim.c - -lib_a-sf_fdim.obj: sf_fdim.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fdim.obj `if test -f 'sf_fdim.c'; then $(CYGPATH_W) 'sf_fdim.c'; else $(CYGPATH_W) '$(srcdir)/sf_fdim.c'; fi` - -lib_a-sf_finite.o: sf_finite.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_finite.o `test -f 'sf_finite.c' || echo '$(srcdir)/'`sf_finite.c - -lib_a-sf_finite.obj: sf_finite.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_finite.obj `if test -f 'sf_finite.c'; then $(CYGPATH_W) 'sf_finite.c'; else $(CYGPATH_W) '$(srcdir)/sf_finite.c'; fi` - -lib_a-sf_floor.o: sf_floor.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_floor.o `test -f 'sf_floor.c' || echo '$(srcdir)/'`sf_floor.c - -lib_a-sf_floor.obj: sf_floor.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_floor.obj `if test -f 'sf_floor.c'; then $(CYGPATH_W) 'sf_floor.c'; else $(CYGPATH_W) '$(srcdir)/sf_floor.c'; fi` - -lib_a-sf_fma.o: sf_fma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fma.o `test -f 'sf_fma.c' || echo '$(srcdir)/'`sf_fma.c - -lib_a-sf_fma.obj: sf_fma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fma.obj `if test -f 'sf_fma.c'; then $(CYGPATH_W) 'sf_fma.c'; else $(CYGPATH_W) '$(srcdir)/sf_fma.c'; fi` - -lib_a-sf_fmax.o: sf_fmax.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fmax.o `test -f 'sf_fmax.c' || echo '$(srcdir)/'`sf_fmax.c - -lib_a-sf_fmax.obj: sf_fmax.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fmax.obj `if test -f 'sf_fmax.c'; then $(CYGPATH_W) 'sf_fmax.c'; else $(CYGPATH_W) '$(srcdir)/sf_fmax.c'; fi` - -lib_a-sf_fmin.o: sf_fmin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fmin.o `test -f 'sf_fmin.c' || echo '$(srcdir)/'`sf_fmin.c - -lib_a-sf_fmin.obj: sf_fmin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fmin.obj `if test -f 'sf_fmin.c'; then $(CYGPATH_W) 'sf_fmin.c'; else $(CYGPATH_W) '$(srcdir)/sf_fmin.c'; fi` - -lib_a-sf_fpclassify.o: sf_fpclassify.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fpclassify.o `test -f 'sf_fpclassify.c' || echo '$(srcdir)/'`sf_fpclassify.c - -lib_a-sf_fpclassify.obj: sf_fpclassify.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_fpclassify.obj `if test -f 'sf_fpclassify.c'; then $(CYGPATH_W) 'sf_fpclassify.c'; else $(CYGPATH_W) '$(srcdir)/sf_fpclassify.c'; fi` - -lib_a-sf_frexp.o: sf_frexp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_frexp.o `test -f 'sf_frexp.c' || echo '$(srcdir)/'`sf_frexp.c - -lib_a-sf_frexp.obj: sf_frexp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_frexp.obj `if test -f 'sf_frexp.c'; then $(CYGPATH_W) 'sf_frexp.c'; else $(CYGPATH_W) '$(srcdir)/sf_frexp.c'; fi` - -lib_a-sf_ilogb.o: sf_ilogb.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_ilogb.o `test -f 'sf_ilogb.c' || echo '$(srcdir)/'`sf_ilogb.c - -lib_a-sf_ilogb.obj: sf_ilogb.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_ilogb.obj `if test -f 'sf_ilogb.c'; then $(CYGPATH_W) 'sf_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/sf_ilogb.c'; fi` - -lib_a-sf_isinf.o: sf_isinf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_isinf.o `test -f 'sf_isinf.c' || echo '$(srcdir)/'`sf_isinf.c - -lib_a-sf_isinf.obj: sf_isinf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_isinf.obj `if test -f 'sf_isinf.c'; then $(CYGPATH_W) 'sf_isinf.c'; else $(CYGPATH_W) '$(srcdir)/sf_isinf.c'; fi` - -lib_a-sf_isinff.o: sf_isinff.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_isinff.o `test -f 'sf_isinff.c' || echo '$(srcdir)/'`sf_isinff.c - -lib_a-sf_isinff.obj: sf_isinff.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_isinff.obj `if test -f 'sf_isinff.c'; then $(CYGPATH_W) 'sf_isinff.c'; else $(CYGPATH_W) '$(srcdir)/sf_isinff.c'; fi` - -lib_a-sf_isnan.o: sf_isnan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_isnan.o `test -f 'sf_isnan.c' || echo '$(srcdir)/'`sf_isnan.c - -lib_a-sf_isnan.obj: sf_isnan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_isnan.obj `if test -f 'sf_isnan.c'; then $(CYGPATH_W) 'sf_isnan.c'; else $(CYGPATH_W) '$(srcdir)/sf_isnan.c'; fi` - -lib_a-sf_isnanf.o: sf_isnanf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_isnanf.o `test -f 'sf_isnanf.c' || echo '$(srcdir)/'`sf_isnanf.c - -lib_a-sf_isnanf.obj: sf_isnanf.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_isnanf.obj `if test -f 'sf_isnanf.c'; then $(CYGPATH_W) 'sf_isnanf.c'; else $(CYGPATH_W) '$(srcdir)/sf_isnanf.c'; fi` - -lib_a-sf_ldexp.o: sf_ldexp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_ldexp.o `test -f 'sf_ldexp.c' || echo '$(srcdir)/'`sf_ldexp.c - -lib_a-sf_ldexp.obj: sf_ldexp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_ldexp.obj `if test -f 'sf_ldexp.c'; then $(CYGPATH_W) 'sf_ldexp.c'; else $(CYGPATH_W) '$(srcdir)/sf_ldexp.c'; fi` - -lib_a-sf_log1p.o: sf_log1p.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_log1p.o `test -f 'sf_log1p.c' || echo '$(srcdir)/'`sf_log1p.c - -lib_a-sf_log1p.obj: sf_log1p.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_log1p.obj `if test -f 'sf_log1p.c'; then $(CYGPATH_W) 'sf_log1p.c'; else $(CYGPATH_W) '$(srcdir)/sf_log1p.c'; fi` - -lib_a-sf_logb.o: sf_logb.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_logb.o `test -f 'sf_logb.c' || echo '$(srcdir)/'`sf_logb.c - -lib_a-sf_logb.obj: sf_logb.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_logb.obj `if test -f 'sf_logb.c'; then $(CYGPATH_W) 'sf_logb.c'; else $(CYGPATH_W) '$(srcdir)/sf_logb.c'; fi` - -lib_a-s_floor.o: s_floor.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_floor.o `test -f 's_floor.c' || echo '$(srcdir)/'`s_floor.c - -lib_a-s_floor.obj: s_floor.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_floor.obj `if test -f 's_floor.c'; then $(CYGPATH_W) 's_floor.c'; else $(CYGPATH_W) '$(srcdir)/s_floor.c'; fi` - -lib_a-sf_lrint.o: sf_lrint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_lrint.o `test -f 'sf_lrint.c' || echo '$(srcdir)/'`sf_lrint.c - -lib_a-sf_lrint.obj: sf_lrint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_lrint.obj `if test -f 'sf_lrint.c'; then $(CYGPATH_W) 'sf_lrint.c'; else $(CYGPATH_W) '$(srcdir)/sf_lrint.c'; fi` - -lib_a-sf_lround.o: sf_lround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_lround.o `test -f 'sf_lround.c' || echo '$(srcdir)/'`sf_lround.c - -lib_a-sf_lround.obj: sf_lround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_lround.obj `if test -f 'sf_lround.c'; then $(CYGPATH_W) 'sf_lround.c'; else $(CYGPATH_W) '$(srcdir)/sf_lround.c'; fi` - -lib_a-s_fma.o: s_fma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fma.o `test -f 's_fma.c' || echo '$(srcdir)/'`s_fma.c - -lib_a-s_fma.obj: s_fma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fma.obj `if test -f 's_fma.c'; then $(CYGPATH_W) 's_fma.c'; else $(CYGPATH_W) '$(srcdir)/s_fma.c'; fi` - -lib_a-s_fmax.o: s_fmax.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fmax.o `test -f 's_fmax.c' || echo '$(srcdir)/'`s_fmax.c - -lib_a-s_fmax.obj: s_fmax.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fmax.obj `if test -f 's_fmax.c'; then $(CYGPATH_W) 's_fmax.c'; else $(CYGPATH_W) '$(srcdir)/s_fmax.c'; fi` - -lib_a-s_fmin.o: s_fmin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fmin.o `test -f 's_fmin.c' || echo '$(srcdir)/'`s_fmin.c - -lib_a-s_fmin.obj: s_fmin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_fmin.obj `if test -f 's_fmin.c'; then $(CYGPATH_W) 's_fmin.c'; else $(CYGPATH_W) '$(srcdir)/s_fmin.c'; fi` - -lib_a-sf_nan.o: sf_nan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_nan.o `test -f 'sf_nan.c' || echo '$(srcdir)/'`sf_nan.c - -lib_a-sf_nan.obj: sf_nan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_nan.obj `if test -f 'sf_nan.c'; then $(CYGPATH_W) 'sf_nan.c'; else $(CYGPATH_W) '$(srcdir)/sf_nan.c'; fi` - -lib_a-sf_nearbyint.o: sf_nearbyint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_nearbyint.o `test -f 'sf_nearbyint.c' || echo '$(srcdir)/'`sf_nearbyint.c - -lib_a-sf_nearbyint.obj: sf_nearbyint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_nearbyint.obj `if test -f 'sf_nearbyint.c'; then $(CYGPATH_W) 'sf_nearbyint.c'; else $(CYGPATH_W) '$(srcdir)/sf_nearbyint.c'; fi` - -lib_a-sf_nextafter.o: sf_nextafter.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_nextafter.o `test -f 'sf_nextafter.c' || echo '$(srcdir)/'`sf_nextafter.c - -lib_a-sf_nextafter.obj: sf_nextafter.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_nextafter.obj `if test -f 'sf_nextafter.c'; then $(CYGPATH_W) 'sf_nextafter.c'; else $(CYGPATH_W) '$(srcdir)/sf_nextafter.c'; fi` - -lib_a-sf_remquo.o: sf_remquo.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_remquo.o `test -f 'sf_remquo.c' || echo '$(srcdir)/'`sf_remquo.c - -lib_a-sf_remquo.obj: sf_remquo.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_remquo.obj `if test -f 'sf_remquo.c'; then $(CYGPATH_W) 'sf_remquo.c'; else $(CYGPATH_W) '$(srcdir)/sf_remquo.c'; fi` - -lib_a-s_frexp.o: s_frexp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_frexp.o `test -f 's_frexp.c' || echo '$(srcdir)/'`s_frexp.c - -lib_a-s_frexp.obj: s_frexp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_frexp.obj `if test -f 's_frexp.c'; then $(CYGPATH_W) 's_frexp.c'; else $(CYGPATH_W) '$(srcdir)/s_frexp.c'; fi` - -lib_a-sf_rint.o: sf_rint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_rint.o `test -f 'sf_rint.c' || echo '$(srcdir)/'`sf_rint.c - -lib_a-sf_rint.obj: sf_rint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_rint.obj `if test -f 'sf_rint.c'; then $(CYGPATH_W) 'sf_rint.c'; else $(CYGPATH_W) '$(srcdir)/sf_rint.c'; fi` - -lib_a-sf_round.o: sf_round.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_round.o `test -f 'sf_round.c' || echo '$(srcdir)/'`sf_round.c - -lib_a-sf_round.obj: sf_round.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_round.obj `if test -f 'sf_round.c'; then $(CYGPATH_W) 'sf_round.c'; else $(CYGPATH_W) '$(srcdir)/sf_round.c'; fi` - -lib_a-sf_scalbn.o: sf_scalbn.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_scalbn.o `test -f 'sf_scalbn.c' || echo '$(srcdir)/'`sf_scalbn.c - -lib_a-sf_scalbn.obj: sf_scalbn.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_scalbn.obj `if test -f 'sf_scalbn.c'; then $(CYGPATH_W) 'sf_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/sf_scalbn.c'; fi` - -lib_a-sf_sin.o: sf_sin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_sin.o `test -f 'sf_sin.c' || echo '$(srcdir)/'`sf_sin.c - -lib_a-sf_sin.obj: sf_sin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_sin.obj `if test -f 'sf_sin.c'; then $(CYGPATH_W) 'sf_sin.c'; else $(CYGPATH_W) '$(srcdir)/sf_sin.c'; fi` - -lib_a-sf_tan.o: sf_tan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_tan.o `test -f 'sf_tan.c' || echo '$(srcdir)/'`sf_tan.c - -lib_a-sf_tan.obj: sf_tan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_tan.obj `if test -f 'sf_tan.c'; then $(CYGPATH_W) 'sf_tan.c'; else $(CYGPATH_W) '$(srcdir)/sf_tan.c'; fi` - -lib_a-sf_tanh.o: sf_tanh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_tanh.o `test -f 'sf_tanh.c' || echo '$(srcdir)/'`sf_tanh.c - -lib_a-sf_tanh.obj: sf_tanh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_tanh.obj `if test -f 'sf_tanh.c'; then $(CYGPATH_W) 'sf_tanh.c'; else $(CYGPATH_W) '$(srcdir)/sf_tanh.c'; fi` - -lib_a-sf_trunc.o: sf_trunc.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_trunc.o `test -f 'sf_trunc.c' || echo '$(srcdir)/'`sf_trunc.c - -lib_a-sf_trunc.obj: sf_trunc.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sf_trunc.obj `if test -f 'sf_trunc.c'; then $(CYGPATH_W) 'sf_trunc.c'; else $(CYGPATH_W) '$(srcdir)/sf_trunc.c'; fi` - -lib_a-s_ilogb.o: s_ilogb.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_ilogb.o `test -f 's_ilogb.c' || echo '$(srcdir)/'`s_ilogb.c - -lib_a-s_ilogb.obj: s_ilogb.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_ilogb.obj `if test -f 's_ilogb.c'; then $(CYGPATH_W) 's_ilogb.c'; else $(CYGPATH_W) '$(srcdir)/s_ilogb.c'; fi` - -lib_a-s_isnan.o: s_isnan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_isnan.o `test -f 's_isnan.c' || echo '$(srcdir)/'`s_isnan.c - -lib_a-s_isnan.obj: s_isnan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_isnan.obj `if test -f 's_isnan.c'; then $(CYGPATH_W) 's_isnan.c'; else $(CYGPATH_W) '$(srcdir)/s_isnan.c'; fi` - -lib_a-s_ldexp.o: s_ldexp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_ldexp.o `test -f 's_ldexp.c' || echo '$(srcdir)/'`s_ldexp.c - -lib_a-s_ldexp.obj: s_ldexp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_ldexp.obj `if test -f 's_ldexp.c'; then $(CYGPATH_W) 's_ldexp.c'; else $(CYGPATH_W) '$(srcdir)/s_ldexp.c'; fi` - -lib_a-s_log1p.o: s_log1p.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_log1p.o `test -f 's_log1p.c' || echo '$(srcdir)/'`s_log1p.c - -lib_a-s_log1p.obj: s_log1p.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_log1p.obj `if test -f 's_log1p.c'; then $(CYGPATH_W) 's_log1p.c'; else $(CYGPATH_W) '$(srcdir)/s_log1p.c'; fi` - -lib_a-s_lrint.o: s_lrint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_lrint.o `test -f 's_lrint.c' || echo '$(srcdir)/'`s_lrint.c - -lib_a-s_lrint.obj: s_lrint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_lrint.obj `if test -f 's_lrint.c'; then $(CYGPATH_W) 's_lrint.c'; else $(CYGPATH_W) '$(srcdir)/s_lrint.c'; fi` - -lib_a-s_lround.o: s_lround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_lround.o `test -f 's_lround.c' || echo '$(srcdir)/'`s_lround.c - -lib_a-s_lround.obj: s_lround.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_lround.obj `if test -f 's_lround.c'; then $(CYGPATH_W) 's_lround.c'; else $(CYGPATH_W) '$(srcdir)/s_lround.c'; fi` - -lib_a-s_nearbyint.o: s_nearbyint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_nearbyint.o `test -f 's_nearbyint.c' || echo '$(srcdir)/'`s_nearbyint.c - -lib_a-s_nearbyint.obj: s_nearbyint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_nearbyint.obj `if test -f 's_nearbyint.c'; then $(CYGPATH_W) 's_nearbyint.c'; else $(CYGPATH_W) '$(srcdir)/s_nearbyint.c'; fi` - -lib_a-s_nextafter.o: s_nextafter.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_nextafter.o `test -f 's_nextafter.c' || echo '$(srcdir)/'`s_nextafter.c - -lib_a-s_nextafter.obj: s_nextafter.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_nextafter.obj `if test -f 's_nextafter.c'; then $(CYGPATH_W) 's_nextafter.c'; else $(CYGPATH_W) '$(srcdir)/s_nextafter.c'; fi` - -lib_a-s_remquo.o: s_remquo.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_remquo.o `test -f 's_remquo.c' || echo '$(srcdir)/'`s_remquo.c - -lib_a-s_remquo.obj: s_remquo.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_remquo.obj `if test -f 's_remquo.c'; then $(CYGPATH_W) 's_remquo.c'; else $(CYGPATH_W) '$(srcdir)/s_remquo.c'; fi` - -lib_a-s_rint.o: s_rint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_rint.o `test -f 's_rint.c' || echo '$(srcdir)/'`s_rint.c - -lib_a-s_rint.obj: s_rint.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_rint.obj `if test -f 's_rint.c'; then $(CYGPATH_W) 's_rint.c'; else $(CYGPATH_W) '$(srcdir)/s_rint.c'; fi` - -lib_a-s_round.o: s_round.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_round.o `test -f 's_round.c' || echo '$(srcdir)/'`s_round.c - -lib_a-s_round.obj: s_round.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_round.obj `if test -f 's_round.c'; then $(CYGPATH_W) 's_round.c'; else $(CYGPATH_W) '$(srcdir)/s_round.c'; fi` - -lib_a-s_scalbn.o: s_scalbn.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_scalbn.o `test -f 's_scalbn.c' || echo '$(srcdir)/'`s_scalbn.c - -lib_a-s_scalbn.obj: s_scalbn.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_scalbn.obj `if test -f 's_scalbn.c'; then $(CYGPATH_W) 's_scalbn.c'; else $(CYGPATH_W) '$(srcdir)/s_scalbn.c'; fi` - -lib_a-s_sin.o: s_sin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_sin.o `test -f 's_sin.c' || echo '$(srcdir)/'`s_sin.c - -lib_a-s_sin.obj: s_sin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_sin.obj `if test -f 's_sin.c'; then $(CYGPATH_W) 's_sin.c'; else $(CYGPATH_W) '$(srcdir)/s_sin.c'; fi` - -lib_a-s_tan.o: s_tan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_tan.o `test -f 's_tan.c' || echo '$(srcdir)/'`s_tan.c - -lib_a-s_tan.obj: s_tan.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_tan.obj `if test -f 's_tan.c'; then $(CYGPATH_W) 's_tan.c'; else $(CYGPATH_W) '$(srcdir)/s_tan.c'; fi` - -lib_a-s_tanh.o: s_tanh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_tanh.o `test -f 's_tanh.c' || echo '$(srcdir)/'`s_tanh.c - -lib_a-s_tanh.obj: s_tanh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_tanh.obj `if test -f 's_tanh.c'; then $(CYGPATH_W) 's_tanh.c'; else $(CYGPATH_W) '$(srcdir)/s_tanh.c'; fi` - -lib_a-s_trunc.o: s_trunc.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_trunc.o `test -f 's_trunc.c' || echo '$(srcdir)/'`s_trunc.c - -lib_a-s_trunc.obj: s_trunc.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-s_trunc.obj `if test -f 's_trunc.c'; then $(CYGPATH_W) 's_trunc.c'; else $(CYGPATH_W) '$(srcdir)/s_trunc.c'; fi` - -lib_a-w_acos.o: w_acos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_acos.o `test -f 'w_acos.c' || echo '$(srcdir)/'`w_acos.c - -lib_a-w_acos.obj: w_acos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_acos.obj `if test -f 'w_acos.c'; then $(CYGPATH_W) 'w_acos.c'; else $(CYGPATH_W) '$(srcdir)/w_acos.c'; fi` - -lib_a-w_acosh.o: w_acosh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_acosh.o `test -f 'w_acosh.c' || echo '$(srcdir)/'`w_acosh.c - -lib_a-w_acosh.obj: w_acosh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_acosh.obj `if test -f 'w_acosh.c'; then $(CYGPATH_W) 'w_acosh.c'; else $(CYGPATH_W) '$(srcdir)/w_acosh.c'; fi` - -lib_a-w_asin.o: w_asin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_asin.o `test -f 'w_asin.c' || echo '$(srcdir)/'`w_asin.c - -lib_a-w_asin.obj: w_asin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_asin.obj `if test -f 'w_asin.c'; then $(CYGPATH_W) 'w_asin.c'; else $(CYGPATH_W) '$(srcdir)/w_asin.c'; fi` - -lib_a-w_atan2.o: w_atan2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_atan2.o `test -f 'w_atan2.c' || echo '$(srcdir)/'`w_atan2.c - -lib_a-w_atan2.obj: w_atan2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_atan2.obj `if test -f 'w_atan2.c'; then $(CYGPATH_W) 'w_atan2.c'; else $(CYGPATH_W) '$(srcdir)/w_atan2.c'; fi` - -lib_a-w_atanh.o: w_atanh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_atanh.o `test -f 'w_atanh.c' || echo '$(srcdir)/'`w_atanh.c - -lib_a-w_atanh.obj: w_atanh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_atanh.obj `if test -f 'w_atanh.c'; then $(CYGPATH_W) 'w_atanh.c'; else $(CYGPATH_W) '$(srcdir)/w_atanh.c'; fi` - -lib_a-w_cosh.o: w_cosh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_cosh.o `test -f 'w_cosh.c' || echo '$(srcdir)/'`w_cosh.c - -lib_a-w_cosh.obj: w_cosh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_cosh.obj `if test -f 'w_cosh.c'; then $(CYGPATH_W) 'w_cosh.c'; else $(CYGPATH_W) '$(srcdir)/w_cosh.c'; fi` - -lib_a-w_exp2.o: w_exp2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_exp2.o `test -f 'w_exp2.c' || echo '$(srcdir)/'`w_exp2.c - -lib_a-w_exp2.obj: w_exp2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_exp2.obj `if test -f 'w_exp2.c'; then $(CYGPATH_W) 'w_exp2.c'; else $(CYGPATH_W) '$(srcdir)/w_exp2.c'; fi` - -lib_a-w_exp.o: w_exp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_exp.o `test -f 'w_exp.c' || echo '$(srcdir)/'`w_exp.c - -lib_a-w_exp.obj: w_exp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_exp.obj `if test -f 'w_exp.c'; then $(CYGPATH_W) 'w_exp.c'; else $(CYGPATH_W) '$(srcdir)/w_exp.c'; fi` - -lib_a-wf_acos.o: wf_acos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_acos.o `test -f 'wf_acos.c' || echo '$(srcdir)/'`wf_acos.c - -lib_a-wf_acos.obj: wf_acos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_acos.obj `if test -f 'wf_acos.c'; then $(CYGPATH_W) 'wf_acos.c'; else $(CYGPATH_W) '$(srcdir)/wf_acos.c'; fi` - -lib_a-wf_acosh.o: wf_acosh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_acosh.o `test -f 'wf_acosh.c' || echo '$(srcdir)/'`wf_acosh.c - -lib_a-wf_acosh.obj: wf_acosh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_acosh.obj `if test -f 'wf_acosh.c'; then $(CYGPATH_W) 'wf_acosh.c'; else $(CYGPATH_W) '$(srcdir)/wf_acosh.c'; fi` - -lib_a-wf_asin.o: wf_asin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_asin.o `test -f 'wf_asin.c' || echo '$(srcdir)/'`wf_asin.c - -lib_a-wf_asin.obj: wf_asin.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_asin.obj `if test -f 'wf_asin.c'; then $(CYGPATH_W) 'wf_asin.c'; else $(CYGPATH_W) '$(srcdir)/wf_asin.c'; fi` - -lib_a-wf_atan2.o: wf_atan2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_atan2.o `test -f 'wf_atan2.c' || echo '$(srcdir)/'`wf_atan2.c - -lib_a-wf_atan2.obj: wf_atan2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_atan2.obj `if test -f 'wf_atan2.c'; then $(CYGPATH_W) 'wf_atan2.c'; else $(CYGPATH_W) '$(srcdir)/wf_atan2.c'; fi` - -lib_a-wf_atanh.o: wf_atanh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_atanh.o `test -f 'wf_atanh.c' || echo '$(srcdir)/'`wf_atanh.c - -lib_a-wf_atanh.obj: wf_atanh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_atanh.obj `if test -f 'wf_atanh.c'; then $(CYGPATH_W) 'wf_atanh.c'; else $(CYGPATH_W) '$(srcdir)/wf_atanh.c'; fi` - -lib_a-wf_cosh.o: wf_cosh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_cosh.o `test -f 'wf_cosh.c' || echo '$(srcdir)/'`wf_cosh.c - -lib_a-wf_cosh.obj: wf_cosh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_cosh.obj `if test -f 'wf_cosh.c'; then $(CYGPATH_W) 'wf_cosh.c'; else $(CYGPATH_W) '$(srcdir)/wf_cosh.c'; fi` - -lib_a-wf_exp2.o: wf_exp2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_exp2.o `test -f 'wf_exp2.c' || echo '$(srcdir)/'`wf_exp2.c - -lib_a-wf_exp2.obj: wf_exp2.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_exp2.obj `if test -f 'wf_exp2.c'; then $(CYGPATH_W) 'wf_exp2.c'; else $(CYGPATH_W) '$(srcdir)/wf_exp2.c'; fi` - -lib_a-wf_exp.o: wf_exp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_exp.o `test -f 'wf_exp.c' || echo '$(srcdir)/'`wf_exp.c - -lib_a-wf_exp.obj: wf_exp.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_exp.obj `if test -f 'wf_exp.c'; then $(CYGPATH_W) 'wf_exp.c'; else $(CYGPATH_W) '$(srcdir)/wf_exp.c'; fi` - -lib_a-wf_fmod.o: wf_fmod.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_fmod.o `test -f 'wf_fmod.c' || echo '$(srcdir)/'`wf_fmod.c - -lib_a-wf_fmod.obj: wf_fmod.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_fmod.obj `if test -f 'wf_fmod.c'; then $(CYGPATH_W) 'wf_fmod.c'; else $(CYGPATH_W) '$(srcdir)/wf_fmod.c'; fi` - -lib_a-wf_hypot.o: wf_hypot.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_hypot.o `test -f 'wf_hypot.c' || echo '$(srcdir)/'`wf_hypot.c - -lib_a-wf_hypot.obj: wf_hypot.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_hypot.obj `if test -f 'wf_hypot.c'; then $(CYGPATH_W) 'wf_hypot.c'; else $(CYGPATH_W) '$(srcdir)/wf_hypot.c'; fi` - -lib_a-wf_lgamma.o: wf_lgamma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_lgamma.o `test -f 'wf_lgamma.c' || echo '$(srcdir)/'`wf_lgamma.c - -lib_a-wf_lgamma.obj: wf_lgamma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_lgamma.obj `if test -f 'wf_lgamma.c'; then $(CYGPATH_W) 'wf_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/wf_lgamma.c'; fi` - -lib_a-wf_log10.o: wf_log10.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_log10.o `test -f 'wf_log10.c' || echo '$(srcdir)/'`wf_log10.c - -lib_a-wf_log10.obj: wf_log10.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_log10.obj `if test -f 'wf_log10.c'; then $(CYGPATH_W) 'wf_log10.c'; else $(CYGPATH_W) '$(srcdir)/wf_log10.c'; fi` - -lib_a-wf_log.o: wf_log.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_log.o `test -f 'wf_log.c' || echo '$(srcdir)/'`wf_log.c - -lib_a-wf_log.obj: wf_log.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_log.obj `if test -f 'wf_log.c'; then $(CYGPATH_W) 'wf_log.c'; else $(CYGPATH_W) '$(srcdir)/wf_log.c'; fi` - -lib_a-w_fmod.o: w_fmod.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_fmod.o `test -f 'w_fmod.c' || echo '$(srcdir)/'`w_fmod.c - -lib_a-w_fmod.obj: w_fmod.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_fmod.obj `if test -f 'w_fmod.c'; then $(CYGPATH_W) 'w_fmod.c'; else $(CYGPATH_W) '$(srcdir)/w_fmod.c'; fi` - -lib_a-wf_pow.o: wf_pow.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_pow.o `test -f 'wf_pow.c' || echo '$(srcdir)/'`wf_pow.c - -lib_a-wf_pow.obj: wf_pow.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_pow.obj `if test -f 'wf_pow.c'; then $(CYGPATH_W) 'wf_pow.c'; else $(CYGPATH_W) '$(srcdir)/wf_pow.c'; fi` - -lib_a-wf_remainder.o: wf_remainder.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_remainder.o `test -f 'wf_remainder.c' || echo '$(srcdir)/'`wf_remainder.c - -lib_a-wf_remainder.obj: wf_remainder.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_remainder.obj `if test -f 'wf_remainder.c'; then $(CYGPATH_W) 'wf_remainder.c'; else $(CYGPATH_W) '$(srcdir)/wf_remainder.c'; fi` - -lib_a-wf_sincos.o: wf_sincos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_sincos.o `test -f 'wf_sincos.c' || echo '$(srcdir)/'`wf_sincos.c - -lib_a-wf_sincos.obj: wf_sincos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_sincos.obj `if test -f 'wf_sincos.c'; then $(CYGPATH_W) 'wf_sincos.c'; else $(CYGPATH_W) '$(srcdir)/wf_sincos.c'; fi` - -lib_a-wf_sinh.o: wf_sinh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_sinh.o `test -f 'wf_sinh.c' || echo '$(srcdir)/'`wf_sinh.c - -lib_a-wf_sinh.obj: wf_sinh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_sinh.obj `if test -f 'wf_sinh.c'; then $(CYGPATH_W) 'wf_sinh.c'; else $(CYGPATH_W) '$(srcdir)/wf_sinh.c'; fi` - -lib_a-wf_sqrt.o: wf_sqrt.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_sqrt.o `test -f 'wf_sqrt.c' || echo '$(srcdir)/'`wf_sqrt.c - -lib_a-wf_sqrt.obj: wf_sqrt.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_sqrt.obj `if test -f 'wf_sqrt.c'; then $(CYGPATH_W) 'wf_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/wf_sqrt.c'; fi` - -lib_a-wf_tgamma.o: wf_tgamma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_tgamma.o `test -f 'wf_tgamma.c' || echo '$(srcdir)/'`wf_tgamma.c - -lib_a-wf_tgamma.obj: wf_tgamma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wf_tgamma.obj `if test -f 'wf_tgamma.c'; then $(CYGPATH_W) 'wf_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/wf_tgamma.c'; fi` - -lib_a-w_hypot.o: w_hypot.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_hypot.o `test -f 'w_hypot.c' || echo '$(srcdir)/'`w_hypot.c - -lib_a-w_hypot.obj: w_hypot.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_hypot.obj `if test -f 'w_hypot.c'; then $(CYGPATH_W) 'w_hypot.c'; else $(CYGPATH_W) '$(srcdir)/w_hypot.c'; fi` - -lib_a-w_lgamma.o: w_lgamma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_lgamma.o `test -f 'w_lgamma.c' || echo '$(srcdir)/'`w_lgamma.c - -lib_a-w_lgamma.obj: w_lgamma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_lgamma.obj `if test -f 'w_lgamma.c'; then $(CYGPATH_W) 'w_lgamma.c'; else $(CYGPATH_W) '$(srcdir)/w_lgamma.c'; fi` - -lib_a-w_log10.o: w_log10.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_log10.o `test -f 'w_log10.c' || echo '$(srcdir)/'`w_log10.c - -lib_a-w_log10.obj: w_log10.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_log10.obj `if test -f 'w_log10.c'; then $(CYGPATH_W) 'w_log10.c'; else $(CYGPATH_W) '$(srcdir)/w_log10.c'; fi` - -lib_a-w_log.o: w_log.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_log.o `test -f 'w_log.c' || echo '$(srcdir)/'`w_log.c - -lib_a-w_log.obj: w_log.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_log.obj `if test -f 'w_log.c'; then $(CYGPATH_W) 'w_log.c'; else $(CYGPATH_W) '$(srcdir)/w_log.c'; fi` - -lib_a-w_pow.o: w_pow.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_pow.o `test -f 'w_pow.c' || echo '$(srcdir)/'`w_pow.c - -lib_a-w_pow.obj: w_pow.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_pow.obj `if test -f 'w_pow.c'; then $(CYGPATH_W) 'w_pow.c'; else $(CYGPATH_W) '$(srcdir)/w_pow.c'; fi` - -lib_a-w_remainder.o: w_remainder.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_remainder.o `test -f 'w_remainder.c' || echo '$(srcdir)/'`w_remainder.c - -lib_a-w_remainder.obj: w_remainder.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_remainder.obj `if test -f 'w_remainder.c'; then $(CYGPATH_W) 'w_remainder.c'; else $(CYGPATH_W) '$(srcdir)/w_remainder.c'; fi` - -lib_a-w_sincos.o: w_sincos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_sincos.o `test -f 'w_sincos.c' || echo '$(srcdir)/'`w_sincos.c - -lib_a-w_sincos.obj: w_sincos.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_sincos.obj `if test -f 'w_sincos.c'; then $(CYGPATH_W) 'w_sincos.c'; else $(CYGPATH_W) '$(srcdir)/w_sincos.c'; fi` - -lib_a-w_sinh.o: w_sinh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_sinh.o `test -f 'w_sinh.c' || echo '$(srcdir)/'`w_sinh.c - -lib_a-w_sinh.obj: w_sinh.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_sinh.obj `if test -f 'w_sinh.c'; then $(CYGPATH_W) 'w_sinh.c'; else $(CYGPATH_W) '$(srcdir)/w_sinh.c'; fi` - -lib_a-w_sqrt.o: w_sqrt.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_sqrt.o `test -f 'w_sqrt.c' || echo '$(srcdir)/'`w_sqrt.c - -lib_a-w_sqrt.obj: w_sqrt.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_sqrt.obj `if test -f 'w_sqrt.c'; then $(CYGPATH_W) 'w_sqrt.c'; else $(CYGPATH_W) '$(srcdir)/w_sqrt.c'; fi` - -lib_a-w_tgamma.o: w_tgamma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_tgamma.o `test -f 'w_tgamma.c' || echo '$(srcdir)/'`w_tgamma.c - -lib_a-w_tgamma.obj: w_tgamma.c - $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-w_tgamma.obj `if test -f 'w_tgamma.c'; then $(CYGPATH_W) 'w_tgamma.c'; else $(CYGPATH_W) '$(srcdir)/w_tgamma.c'; fi` -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-am: -check: check-am -all-am: Makefile $(LIBRARIES) $(DATA) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ - clean-generic clean-noinstLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-tags dvi dvi-am \ - html html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -objectlist.awk.in: $(noinst_LTLIBRARIES) - -rm -f objectlist.awk.in - for i in `ls *.lo` ; \ - do \ - echo $$i `pwd`/$$i >> objectlist.awk.in ; \ - done -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/newlib/libm/machine/spu/aclocal.m4 b/newlib/libm/machine/spu/aclocal.m4 deleted file mode 100644 index 2b07e80eb..000000000 --- a/newlib/libm/machine/spu/aclocal.m4 +++ /dev/null @@ -1,880 +0,0 @@ -# generated automatically by aclocal 1.9.6 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005 Free Software Foundation, Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.9.6])]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 7 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 3 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 12 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.58])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $1 | $1:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -AC_DEFUN([AM_MAINTAINER_MODE], -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl -] -) - -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. -# -# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories -# created by `make install' are always world readable, even if the -# installer happens to have an overly restrictive umask (e.g. 077). -# This was a mistake. There are at least two reasons why we must not -# use `-m 0755': -# - it causes special bits like SGID to be ignored, -# - it may be too restrictive (some setups expect 775 directories). -# -# Do not use -m 0755 and let people choose whatever they expect by -# setting umask. -# -# We cannot accept any implementation of `mkdir' that recognizes `-p'. -# Some implementations (such as Solaris 8's) are not thread-safe: if a -# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' -# concurrently, both version can detect that a/ is missing, but only -# one can create it and the other will error out. Consequently we -# restrict ourselves to GNU make (using the --version option ensures -# this.) -AC_DEFUN([AM_PROG_MKDIR_P], -[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi -AC_SUBST([mkdir_p])]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# ------------------------------ -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar <conftest.tar]) - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([../../../acinclude.m4]) diff --git a/newlib/libm/machine/spu/configure b/newlib/libm/machine/spu/configure deleted file mode 100644 index f111ce34c..000000000 --- a/newlib/libm/machine/spu/configure +++ /dev/null @@ -1,4085 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for newlib 1.16.0. -# -# Copyright (C) 2003 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME='newlib' -PACKAGE_TARNAME='newlib' -PACKAGE_VERSION='1.16.0' -PACKAGE_STRING='newlib 1.16.0' -PACKAGE_BUGREPORT='' - -ac_unique_file="Makefile.am" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAY_SUPPLY_SYSCALLS_TRUE MAY_SUPPLY_SYSCALLS_FALSE newlib_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB READELF ac_ct_READELF MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CCAS CCASFLAGS NEWLIB_CFLAGS LDFLAGS ELIX_LEVEL_0_TRUE ELIX_LEVEL_0_FALSE ELIX_LEVEL_1_TRUE ELIX_LEVEL_1_FALSE ELIX_LEVEL_2_TRUE ELIX_LEVEL_2_FALSE ELIX_LEVEL_3_TRUE ELIX_LEVEL_3_FALSE ELIX_LEVEL_4_TRUE ELIX_LEVEL_4_FALSE USE_LIBTOOL_TRUE USE_LIBTOOL_FALSE OBJEXT oext aext lpfx libm_machine_dir machine_dir sys_dir LIBOBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CCAS_set=${CCAS+set} -ac_env_CCAS_value=$CCAS -ac_cv_env_CCAS_set=${CCAS+set} -ac_cv_env_CCAS_value=$CCAS -ac_env_CCASFLAGS_set=${CCASFLAGS+set} -ac_env_CCASFLAGS_value=$CCASFLAGS -ac_cv_env_CCASFLAGS_set=${CCASFLAGS+set} -ac_cv_env_CCASFLAGS_value=$CCASFLAGS - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures newlib 1.16.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of newlib 1.16.0:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-multilib build many library versions (default) - --enable-target-optspace optimize for space - --enable-malloc-debugging indicate malloc debugging requested - --enable-newlib-multithread enable support for multiple threads - --enable-newlib-iconv enable iconv library support - --enable-newlib-elix-level supply desired elix library level (1-4) - --disable-newlib-io-float disable printf/scanf family float support - --disable-newlib-supplied-syscalls disable newlib from supplying syscalls - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - -Some influential environment variables: - CCAS assembler compiler command (defaults to CC) - CCASFLAGS assembler compiler flags (defaults to CFLAGS) - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF -newlib configure 1.16.0 -generated by GNU Autoconf 2.59 - -Copyright (C) 2003 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by newlib $as_me 1.16.0, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ac_aux_dir= -for ac_dir in ../../../.. $srcdir/../../../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ../../../.. $srcdir/../../../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in ../../../.. $srcdir/../../../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - - - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -am__api_version="1.9" -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 -# Just in case -sleep 1 -echo timestamp > conftest.file -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="$(MAKE)"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -DEPDIR="${am__leading_dot}deps" - - ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo done -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi -fi - - -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 -rm -f confinc confmf - -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" - -fi; -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' -fi - - -if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - - - -# Check whether --enable-multilib or --disable-multilib was given. -if test "${enable_multilib+set}" = set; then - enableval="$enable_multilib" - case "${enableval}" in - yes) multilib=yes ;; - no) multilib=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for multilib option" >&5 -echo "$as_me: error: bad value ${enableval} for multilib option" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - multilib=yes -fi; -# Check whether --enable-target-optspace or --disable-target-optspace was given. -if test "${enable_target_optspace+set}" = set; then - enableval="$enable_target_optspace" - case "${enableval}" in - yes) target_optspace=yes ;; - no) target_optspace=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for target-optspace option" >&5 -echo "$as_me: error: bad value ${enableval} for target-optspace option" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - target_optspace= -fi; -# Check whether --enable-malloc-debugging or --disable-malloc-debugging was given. -if test "${enable_malloc_debugging+set}" = set; then - enableval="$enable_malloc_debugging" - case "${enableval}" in - yes) malloc_debugging=yes ;; - no) malloc_debugging=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for malloc-debugging option" >&5 -echo "$as_me: error: bad value ${enableval} for malloc-debugging option" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - malloc_debugging= -fi; -# Check whether --enable-newlib-multithread or --disable-newlib-multithread was given. -if test "${enable_newlib_multithread+set}" = set; then - enableval="$enable_newlib_multithread" - case "${enableval}" in - yes) newlib_multithread=yes ;; - no) newlib_multithread=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-multithread option" >&5 -echo "$as_me: error: bad value ${enableval} for newlib-multithread option" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - newlib_multithread=yes -fi; -# Check whether --enable-newlib-iconv or --disable-newlib-iconv was given. -if test "${enable_newlib_iconv+set}" = set; then - enableval="$enable_newlib_iconv" - if test "${newlib_iconv+set}" != set; then - case "${enableval}" in - yes) newlib_iconv=yes ;; - no) newlib_iconv=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-iconv option" >&5 -echo "$as_me: error: bad value ${enableval} for newlib-iconv option" >&2;} - { (exit 1); exit 1; }; } ;; - esac - fi -else - newlib_iconv=${newlib_iconv} -fi; -# Check whether --enable-newlib-elix-level or --disable-newlib-elix-level was given. -if test "${enable_newlib_elix_level+set}" = set; then - enableval="$enable_newlib_elix_level" - case "${enableval}" in - 0) newlib_elix_level=0 ;; - 1) newlib_elix_level=1 ;; - 2) newlib_elix_level=2 ;; - 3) newlib_elix_level=3 ;; - 4) newlib_elix_level=4 ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-elix-level option" >&5 -echo "$as_me: error: bad value ${enableval} for newlib-elix-level option" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - newlib_elix_level=0 -fi; -# Check whether --enable-newlib-io-float or --disable-newlib-io-float was given. -if test "${enable_newlib_io_float+set}" = set; then - enableval="$enable_newlib_io_float" - case "${enableval}" in - yes) newlib_io_float=yes ;; - no) newlib_io_float=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-io-float option" >&5 -echo "$as_me: error: bad value ${enableval} for newlib-io-float option" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - newlib_io_float=yes -fi; -# Check whether --enable-newlib-supplied-syscalls or --disable-newlib-supplied-syscalls was given. -if test "${enable_newlib_supplied_syscalls+set}" = set; then - enableval="$enable_newlib_supplied_syscalls" - case "${enableval}" in - yes) newlib_may_supply_syscalls=yes ;; - no) newlib_may_supply_syscalls=no ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for newlib-supplied-syscalls option" >&5 -echo "$as_me: error: bad value ${enableval} for newlib-supplied-syscalls option" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - newlib_may_supply_syscalls=yes -fi; - - -if test x${newlib_may_supply_syscalls} = xyes; then - MAY_SUPPLY_SYSCALLS_TRUE= - MAY_SUPPLY_SYSCALLS_FALSE='#' -else - MAY_SUPPLY_SYSCALLS_TRUE='#' - MAY_SUPPLY_SYSCALLS_FALSE= -fi - - - -test -z "${with_target_subdir}" && with_target_subdir=. - -if test "${srcdir}" = "."; then - if test "${with_target_subdir}" != "."; then - newlib_basedir="${srcdir}/${with_multisrctop}../../../.." - else - newlib_basedir="${srcdir}/${with_multisrctop}../../.." - fi -else - newlib_basedir="${srcdir}/../../.." -fi - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - - -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='newlib' - VERSION='1.16.0' - - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -install_sh=${install_sh-"$am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - STRIP=$ac_ct_STRIP -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} - -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' - - - - - - -# FIXME: We temporarily define our own version of AC_PROG_CC. This is -# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We -# are probably using a cross compiler, which will not be able to fully -# link an executable. This should really be fixed in autoconf -# itself. - - - - - - - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - -depcc="$CC" am_compiler_list= - -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - - -if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable cc found in \$PATH" >&5 -echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -fi - -echo "$as_me:$LINENO: checking whether we are using GNU C" >&5 -echo $ECHO_N "checking whether we are using GNU C... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat > conftest.c <<EOF -#ifdef __GNUC__ - yes; -#endif -EOF -if { ac_try='${CC-cc} -E conftest.c' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } | egrep yes >/dev/null 2>&1; then - ac_cv_c_compiler_gnu=yes -else - ac_cv_c_compiler_gnu=no -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 - -if test $ac_cv_c_compiler_gnu = yes; then - GCC=yes - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS= - ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi - if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" - elif test $ac_cv_prog_cc_g = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-O2" - fi -else - GCC= - test "${CFLAGS+set}" = set || CFLAGS="-g" -fi - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AS="${ac_tool_prefix}as" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - echo "$as_me:$LINENO: result: $AS" >&5 -echo "${ECHO_T}$AS" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AS="as" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 -echo "${ECHO_T}$ac_ct_AS" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AS=$ac_ct_AS -else - AS="$ac_cv_prog_AS" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AR=$ac_ct_AR -else - AR="$ac_cv_prog_AR" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}readelf", so it can be a program name with args. -set dummy ${ac_tool_prefix}readelf; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_READELF+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$READELF"; then - ac_cv_prog_READELF="$READELF" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_READELF="${ac_tool_prefix}readelf" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -READELF=$ac_cv_prog_READELF -if test -n "$READELF"; then - echo "$as_me:$LINENO: result: $READELF" >&5 -echo "${ECHO_T}$READELF" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_READELF"; then - ac_ct_READELF=$READELF - # Extract the first word of "readelf", so it can be a program name with args. -set dummy readelf; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_READELF+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_READELF"; then - ac_cv_prog_ac_ct_READELF="$ac_ct_READELF" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_READELF="readelf" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_READELF" && ac_cv_prog_ac_ct_READELF=":" -fi -fi -ac_ct_READELF=$ac_cv_prog_ac_ct_READELF -if test -n "$ac_ct_READELF"; then - echo "$as_me:$LINENO: result: $ac_ct_READELF" >&5 -echo "${ECHO_T}$ac_ct_READELF" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - READELF=$ac_ct_READELF -else - READELF="$ac_cv_prog_READELF" -fi - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -# Hack to ensure that INSTALL won't be set to "../" with autoconf 2.13. */ -ac_given_INSTALL=$INSTALL - -echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" - USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi; - echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 - - -if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - -# By default we simply use the C compiler to build assembly code. - -test "${CCAS+set}" = set || CCAS=$CC -test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS - - - - -# We need AC_EXEEXT to keep automake happy in cygnus mode. However, -# at least currently, we never actually build a program, so we never -# need to use $(EXEEXT). Moreover, the test for EXEEXT normally -# fails, because we are probably configuring with a cross compiler -# which can't create executables. So we include AC_EXEEXT to keep -# automake happy, but we don't execute it, since we don't care about -# the result. -if false; then - - dummy_var=1 -fi - -. ${newlib_basedir}/configure.host - -newlib_cflags="${newlib_cflags} -fno-builtin" - -NEWLIB_CFLAGS=${newlib_cflags} - - -LDFLAGS=${ldflags} - - - - -if test x${newlib_elix_level} = x0; then - ELIX_LEVEL_0_TRUE= - ELIX_LEVEL_0_FALSE='#' -else - ELIX_LEVEL_0_TRUE='#' - ELIX_LEVEL_0_FALSE= -fi - - - -if test x${newlib_elix_level} = x1; then - ELIX_LEVEL_1_TRUE= - ELIX_LEVEL_1_FALSE='#' -else - ELIX_LEVEL_1_TRUE='#' - ELIX_LEVEL_1_FALSE= -fi - - - -if test x${newlib_elix_level} = x2; then - ELIX_LEVEL_2_TRUE= - ELIX_LEVEL_2_FALSE='#' -else - ELIX_LEVEL_2_TRUE='#' - ELIX_LEVEL_2_FALSE= -fi - - - -if test x${newlib_elix_level} = x3; then - ELIX_LEVEL_3_TRUE= - ELIX_LEVEL_3_FALSE='#' -else - ELIX_LEVEL_3_TRUE='#' - ELIX_LEVEL_3_FALSE= -fi - - - -if test x${newlib_elix_level} = x4; then - ELIX_LEVEL_4_TRUE= - ELIX_LEVEL_4_FALSE='#' -else - ELIX_LEVEL_4_TRUE='#' - ELIX_LEVEL_4_FALSE= -fi - - - - -if test x${use_libtool} = xyes; then - USE_LIBTOOL_TRUE= - USE_LIBTOOL_FALSE='#' -else - USE_LIBTOOL_TRUE='#' - USE_LIBTOOL_FALSE= -fi - - -# Hard-code OBJEXT. Normally it is set by AC_OBJEXT, but we -# use oext, which is set in configure.host based on the target platform. -OBJEXT=${oext} - - - - - - - - - - - - ac_config_files="$ac_config_files Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g -t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g -t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed - - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${MAY_SUPPLY_SYSCALLS_TRUE}" && test -z "${MAY_SUPPLY_SYSCALLS_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAY_SUPPLY_SYSCALLS\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAY_SUPPLY_SYSCALLS\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${ELIX_LEVEL_0_TRUE}" && test -z "${ELIX_LEVEL_0_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_0\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"ELIX_LEVEL_0\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${ELIX_LEVEL_1_TRUE}" && test -z "${ELIX_LEVEL_1_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_1\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"ELIX_LEVEL_1\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${ELIX_LEVEL_2_TRUE}" && test -z "${ELIX_LEVEL_2_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_2\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"ELIX_LEVEL_2\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${ELIX_LEVEL_3_TRUE}" && test -z "${ELIX_LEVEL_3_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_3\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"ELIX_LEVEL_3\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${ELIX_LEVEL_4_TRUE}" && test -z "${ELIX_LEVEL_4_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"ELIX_LEVEL_4\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"ELIX_LEVEL_4\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${USE_LIBTOOL_TRUE}" && test -z "${USE_LIBTOOL_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"USE_LIBTOOL\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"USE_LIBTOOL\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by newlib $as_me 1.16.0, which was -generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Configuration commands: -$config_commands - -Report bugs to <bug-autoconf@gnu.org>." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -newlib config.status 1.16.0 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# - -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - -_ACEOF - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@MAY_SUPPLY_SYSCALLS_TRUE@,$MAY_SUPPLY_SYSCALLS_TRUE,;t t -s,@MAY_SUPPLY_SYSCALLS_FALSE@,$MAY_SUPPLY_SYSCALLS_FALSE,;t t -s,@newlib_basedir@,$newlib_basedir,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@CYGPATH_W@,$CYGPATH_W,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@mkdir_p@,$mkdir_p,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@am__leading_dot@,$am__leading_dot,;t t -s,@AMTAR@,$AMTAR,;t t -s,@am__tar@,$am__tar,;t t -s,@am__untar@,$am__untar,;t t -s,@CC@,$CC,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t -s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -s,@AS@,$AS,;t t -s,@ac_ct_AS@,$ac_ct_AS,;t t -s,@AR@,$AR,;t t -s,@ac_ct_AR@,$ac_ct_AR,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@READELF@,$READELF,;t t -s,@ac_ct_READELF@,$ac_ct_READELF,;t t -s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t -s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t -s,@MAINT@,$MAINT,;t t -s,@CCAS@,$CCAS,;t t -s,@CCASFLAGS@,$CCASFLAGS,;t t -s,@NEWLIB_CFLAGS@,$NEWLIB_CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@ELIX_LEVEL_0_TRUE@,$ELIX_LEVEL_0_TRUE,;t t -s,@ELIX_LEVEL_0_FALSE@,$ELIX_LEVEL_0_FALSE,;t t -s,@ELIX_LEVEL_1_TRUE@,$ELIX_LEVEL_1_TRUE,;t t -s,@ELIX_LEVEL_1_FALSE@,$ELIX_LEVEL_1_FALSE,;t t -s,@ELIX_LEVEL_2_TRUE@,$ELIX_LEVEL_2_TRUE,;t t -s,@ELIX_LEVEL_2_FALSE@,$ELIX_LEVEL_2_FALSE,;t t -s,@ELIX_LEVEL_3_TRUE@,$ELIX_LEVEL_3_TRUE,;t t -s,@ELIX_LEVEL_3_FALSE@,$ELIX_LEVEL_3_FALSE,;t t -s,@ELIX_LEVEL_4_TRUE@,$ELIX_LEVEL_4_TRUE,;t t -s,@ELIX_LEVEL_4_FALSE@,$ELIX_LEVEL_4_FALSE,;t t -s,@USE_LIBTOOL_TRUE@,$USE_LIBTOOL_TRUE,;t t -s,@USE_LIBTOOL_FALSE@,$USE_LIBTOOL_FALSE,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@oext@,$oext,;t t -s,@aext@,$aext,;t t -s,@lpfx@,$lpfx,;t t -s,@libm_machine_dir@,$libm_machine_dir,;t t -s,@machine_dir@,$machine_dir,;t t -s,@sys_dir@,$sys_dir,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; }; } - - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done - ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/newlib/libm/machine/spu/configure.in b/newlib/libm/machine/spu/configure.in deleted file mode 100644 index cd8ac94d2..000000000 --- a/newlib/libm/machine/spu/configure.in +++ /dev/null @@ -1,14 +0,0 @@ -dnl This is the newlib/libc/machine/spu configure.in file. -dnl Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.59) -AC_INIT([newlib],[NEWLIB_VERSION]) -AC_CONFIG_SRCDIR([Makefile.am]) - -dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake. -AC_CONFIG_AUX_DIR(../../../..) - -NEWLIB_CONFIGURE(../../..) - -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT diff --git a/newlib/libm/machine/spu/fe_dfl_env.c b/newlib/libm/machine/spu/fe_dfl_env.c deleted file mode 100644 index 25b8a000f..000000000 --- a/newlib/libm/machine/spu/fe_dfl_env.c +++ /dev/null @@ -1,5 +0,0 @@ -#include <fenv.h> -/* - * Define for FE_DFL_ENV macro, all bits zero. - */ -const fenv_t __fe_dfl_env = { 0 }; diff --git a/newlib/libm/machine/spu/feclearexcept.c b/newlib/libm/machine/spu/feclearexcept.c deleted file mode 100644 index fbec7addb..000000000 --- a/newlib/libm/machine/spu/feclearexcept.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/feclearexcept.h" - -void feclearexcept(int excepts) -{ - _feclearexcept(excepts); -} diff --git a/newlib/libm/machine/spu/fegetenv.c b/newlib/libm/machine/spu/fegetenv.c deleted file mode 100644 index 544877b7c..000000000 --- a/newlib/libm/machine/spu/fegetenv.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/fegetenv.h" - -void fegetenv(fenv_t *envp) -{ - _fegetenv(envp); -} diff --git a/newlib/libm/machine/spu/fegetexceptflag.c b/newlib/libm/machine/spu/fegetexceptflag.c deleted file mode 100644 index 0c98199f1..000000000 --- a/newlib/libm/machine/spu/fegetexceptflag.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/fegetexceptflag.h" - -void fegetexceptflag(fexcept_t *flagp, int excepts) -{ - _fegetexceptflag(flagp, excepts); -} diff --git a/newlib/libm/machine/spu/fegetround.c b/newlib/libm/machine/spu/fegetround.c deleted file mode 100644 index a810aeddf..000000000 --- a/newlib/libm/machine/spu/fegetround.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/fegetround.h" - -int fegetround() -{ - return _fegetround(); -} diff --git a/newlib/libm/machine/spu/feholdexcept.c b/newlib/libm/machine/spu/feholdexcept.c deleted file mode 100644 index 57b57b11a..000000000 --- a/newlib/libm/machine/spu/feholdexcept.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/feholdexcept.h" - -int feholdexcept(fenv_t *envp) -{ - return _feholdexcept(envp); -} diff --git a/newlib/libm/machine/spu/feraiseexcept.c b/newlib/libm/machine/spu/feraiseexcept.c deleted file mode 100644 index 0a6946e0d..000000000 --- a/newlib/libm/machine/spu/feraiseexcept.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/feraiseexcept.h" - -void feraiseexcept(int excepts) -{ - _feraiseexcept(excepts); -} diff --git a/newlib/libm/machine/spu/fesetenv.c b/newlib/libm/machine/spu/fesetenv.c deleted file mode 100644 index 187511377..000000000 --- a/newlib/libm/machine/spu/fesetenv.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/fesetenv.h" - -void fesetenv(const fenv_t *envp) -{ - _fesetenv(envp); -} diff --git a/newlib/libm/machine/spu/fesetexceptflag.c b/newlib/libm/machine/spu/fesetexceptflag.c deleted file mode 100644 index 0312aed2c..000000000 --- a/newlib/libm/machine/spu/fesetexceptflag.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/fesetexceptflag.h" - -void fesetexceptflag(const fexcept_t *flagp, int excepts) -{ - _fesetexceptflag(flagp, excepts); -} diff --git a/newlib/libm/machine/spu/fesetround.c b/newlib/libm/machine/spu/fesetround.c deleted file mode 100644 index 8ad982286..000000000 --- a/newlib/libm/machine/spu/fesetround.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/fesetround.h" - -int fesetround(int rounding_mode) -{ - return _fesetround(rounding_mode); -} diff --git a/newlib/libm/machine/spu/fetestexcept.c b/newlib/libm/machine/spu/fetestexcept.c deleted file mode 100644 index 7e88f787e..000000000 --- a/newlib/libm/machine/spu/fetestexcept.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/fetestexcept.h" - -int fetestexcept(int excepts) -{ - return _fetestexcept(excepts); -} diff --git a/newlib/libm/machine/spu/feupdateenv.c b/newlib/libm/machine/spu/feupdateenv.c deleted file mode 100644 index 9198158ef..000000000 --- a/newlib/libm/machine/spu/feupdateenv.c +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/feupdateenv.h" - -void feupdateenv(const fenv_t *envp) -{ - _feupdateenv(envp); -} diff --git a/newlib/libm/machine/spu/headers/acos.h b/newlib/libm/machine/spu/headers/acos.h deleted file mode 100644 index feec8c329..000000000 --- a/newlib/libm/machine/spu/headers/acos.h +++ /dev/null @@ -1,18 +0,0 @@ -#include "headers/acosd2.h" -#include "headers/dom_chkd_negone_one.h" - -static __inline double _acos(double x) -{ - double res; - vector double vx; - - vx = spu_splats(x); - res = spu_extract(_acosd2(vx), 0); -#ifndef _IEEE_LIBM - /* - * Domain error if not in the interval [-1, +1] - */ - dom_chkd_negone_one(vx); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/acosd2.h b/newlib/libm/machine/spu/headers/acosd2.h deleted file mode 100644 index fb702e81b..000000000 --- a/newlib/libm/machine/spu/headers/acosd2.h +++ /dev/null @@ -1,165 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _ACOSD2_H_ -#define _ACOSD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "simdmath.h" -#include "sqrtd2.h" -#include "divd2.h" - -/* - * FUNCTION - * vector double _acosd2(vector double x) - * - * DESCRIPTION - * Compute the arc cosine of the vector of double precision elements - * specified by x, returning the resulting angles in radians. The input - * elements are to be in the closed interval [-1, 1]. Values outside - * this range result in a invalid operation execption being latched in - * the FPSCR register and a NAN is returned. - * - * The basic algorithm computes the arc cosine using PI/2 - asind2(x). - * However, as |x| approaches 1, there is a cancellation error in - * subtracting asind2(x) from PI/2, so we simplify the evaluation - * instead of layering acosd2 on top of asind2. - * - * This yields the basic algorithm of: - * - * absx = (x < 0.0) ? -x : x; - * - * if (absx > 0.5) { - * if (x < 0) { - * addend = SM_PI; - * multiplier = -2.0; - * } else { - * addend = 0.0; - * multiplier = 2.0; - * } - * - * x = sqrt(-0.5 * absx + 0.5); - * } else { - * addend = SM_PI_2; - * multiplier = -1.0; - * } - * - * x2 = x * x; - * x3 = x2 * x; - * - * p = ((((P5 * x2 + P4)*x2 + P3)*x2 + P2)*x2 + P1)*x2 + P0; - * - * q = ((((Q5 * x2 + Q4)*x2 + Q3)*x2 + Q2)*x2 + Q1)*x2 + Q0;; - * - * pq = p / q; - * - * result = (x3*pq + x)*multiplier - addend; - * - * Where P5-P0 and Q5-Q0 are the polynomial coeficients. See asind2 - * for additional details. - */ -static __inline vector double _acosd2(vector double x) -{ - vec_uint4 x_gt_half, x_eq_half; - vec_double2 x_neg; // input x is negative - vec_double2 x_abs; // absolute value of x - vec_double2 x_trans; // transformed x when |x| > 0.5 - vec_double2 x2, x3; // x squared and x cubed, respectively. - vec_double2 result; - vec_double2 multiplier, addend; - vec_double2 p, q, pq; - vec_double2 half = spu_splats(0.5); - vec_double2 sign = (vec_double2)spu_splats(0x8000000000000000ULL); - vec_uchar16 splat_hi = ((vec_uchar16){0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11}); - - // Compute the absolute value of x - x_abs = spu_andc(x, sign); - - // Perform transformation for the case where |x| > 0.5. We rely on - // sqrtd2 producing a NAN is |x| > 1.0. - x_trans = _sqrtd2(spu_nmsub(x_abs, half, half)); - - // Determine the correct addend and multiplier. - x_neg = (vec_double2)spu_rlmaska((vec_int4)spu_shuffle(x, x, splat_hi), -31); - - x_gt_half = spu_cmpgt((vec_uint4)x_abs, (vec_uint4)half); - x_eq_half = spu_cmpeq((vec_uint4)x_abs, (vec_uint4)half); - x_gt_half = spu_or(x_gt_half, spu_and(x_eq_half, spu_rlqwbyte(x_gt_half, 4))); - x_gt_half = spu_shuffle(x_gt_half, x_gt_half, splat_hi); - - addend = spu_sel(spu_splats(SM_PI_2), spu_and(spu_splats(SM_PI), x_neg), (vec_ullong2)x_gt_half); - - multiplier = spu_sel(spu_splats(-1.0), spu_sel(spu_splats(2.0), x, (vec_ullong2)sign), (vec_ullong2)x_gt_half); - - // Select whether to use the x or the transformed x for the polygon evaluation. - // if |x| > 0.5 use x_trans - // else use x - - x = spu_sel(x, x_trans, (vec_ullong2)x_gt_half); - - // Compute the polynomials. - - x2 = spu_mul(x, x); - x3 = spu_mul(x2, x); - - p = spu_madd(spu_splats(0.004253011369004428248960), x2, spu_splats(-0.6019598008014123785661)); - p = spu_madd(p, x2, spu_splats(5.444622390564711410273)); - p = spu_madd(p, x2, spu_splats(-16.26247967210700244449)); - p = spu_madd(p, x2, spu_splats(19.56261983317594739197)); - p = spu_madd(p, x2, spu_splats(-8.198089802484824371615)); - - q = spu_add(x2, spu_splats(-14.74091372988853791896)); - q = spu_madd(q, x2, spu_splats(70.49610280856842141659)); - q = spu_madd(q, x2, spu_splats(-147.1791292232726029859)); - q = spu_madd(q, x2, spu_splats(139.5105614657485689735)); - q = spu_madd(q, x2, spu_splats(-49.18853881490881290097)); - - // Compute the rational solution p/q and final multiplication and addend - // correction. - pq = _divd2(p, q); - - result = spu_madd(spu_madd(x3, pq, x), multiplier, addend); - - return (result); -} - -#endif /* _ACOSD2_H_ */ -#endif /* __SPU__ */ - diff --git a/newlib/libm/machine/spu/headers/acosf.h b/newlib/libm/machine/spu/headers/acosf.h deleted file mode 100644 index 49ab628fc..000000000 --- a/newlib/libm/machine/spu/headers/acosf.h +++ /dev/null @@ -1,18 +0,0 @@ -#include "headers/acosf4.h" -#include "headers/dom_chkf_negone_one.h" - -static __inline float _acosf(float x) -{ - float res; - vector float vx; - - vx = spu_splats(x); - res = spu_extract(_acosf4(vx), 0); -#ifndef _IEEE_LIBM - /* - * Domain error if not in the interval [-1, +1] - */ - dom_chkf_negone_one(vx); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/acosf4.h b/newlib/libm/machine/spu/headers/acosf4.h deleted file mode 100644 index 4b76fda23..000000000 --- a/newlib/libm/machine/spu/headers/acosf4.h +++ /dev/null @@ -1,168 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _ACOSF4_H_ -#define _ACOSF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "divf4.h" -#include "sqrtf4.h" - -/* - * FUNCTION - * vector float _acosf4(vector float x) - * - * DESCRIPTION - * The _acosf4 function computes the arc cosine for a vector of values x; - * that is the values whose cosine is x. Results are undefined if x is - * outside the range [-1, 1]. - * - * RETURNS - * The _acosf4 function returns the arc cosine in radians and the value is - * mathematically defined to be in the range [0, pi]. - * - */ -static __inline vector float _acosf4(vector float x) -{ - vec_float4 zero = spu_splats(0.0f); - vec_float4 half = spu_splats(0.5f); - vec_float4 one = spu_splats(1.0f); - vec_float4 two = spu_splats(2.0f); - vec_float4 pi = spu_splats(3.1415925026e+00f); - vec_float4 pio2_hi = spu_splats(1.5707962513e+00f); - vec_float4 pio2_lo = spu_splats(7.5497894159e-08f); - - vec_float4 snan = (vec_float4)spu_splats((unsigned int)0x7FC00000); - vec_uint4 denorm_threshold = spu_splats((unsigned int)0x23000000); - vec_uint4 sign_mask = spu_splats((unsigned int)0x80000000); - - - vec_float4 p0 = (vec_float4)spu_splats((unsigned int)0x3E2AAAAB); - vec_float4 p1 = (vec_float4)spu_splats((unsigned int)0xBEA6B090); - vec_float4 p2 = (vec_float4)spu_splats((unsigned int)0x3E4E0AA8); - vec_float4 p3 = (vec_float4)spu_splats((unsigned int)0xBD241146); - vec_float4 p4 = (vec_float4)spu_splats((unsigned int)0x3A4F7F04); - vec_float4 p5 = (vec_float4)spu_splats((unsigned int)0x3811EF08); - - vec_float4 q1 = (vec_float4)spu_splats((unsigned int)0xC019D139); - vec_float4 q2 = (vec_float4)spu_splats((unsigned int)0x4001572D); - vec_float4 q3 = (vec_float4)spu_splats((unsigned int)0xBF303361); - vec_float4 q4 = (vec_float4)spu_splats((unsigned int)0x3D9DC62E); - - - vec_uint4 x_abs = spu_andc((vec_uint4)x,sign_mask); - vec_uint4 x_pos = spu_cmpgt(sign_mask,(vec_uint4)x); - - - vec_uint4 almost_half = spu_splats((unsigned int)0x3EFFFFFF); - vec_uint4 sel0 = spu_nand(spu_splats((unsigned int)0xFFFFFFFF),spu_cmpgt(x_abs,almost_half)); - vec_uint4 sel1 = spu_andc(x_pos,sel0); // pos - - vec_float4 za = spu_sel(spu_sel(spu_add(one,x),spu_sub(one,x),sel1) ,x,sel0); - vec_float4 zb = spu_sel(half,x,sel0); - - vec_float4 z = spu_mul(za,zb); - - vec_float4 p; - p = spu_madd(z,p5,p4); - p = spu_madd(p,z,p3); - p = spu_madd(p,z,p2); - p = spu_madd(p,z,p1); - p = spu_madd(p,z,p0); - p = spu_mul(p,z); - - vec_float4 q; - q = spu_madd(z,q4,q3); - q = spu_madd(q,z,q2); - q = spu_madd(q,z,q1); - q = spu_madd(q,z,one); - - // Only used by secondaries - vec_float4 s = _sqrtf4(z); - - vec_float4 r = _divf4(p,q); - - vec_float4 w1 = spu_msub(r,s,pio2_lo); - - - vec_float4 df = (vec_float4)spu_and((vec_uint4)s,0xFFFFF000); - vec_float4 c = _divf4(spu_nmsub(df,df,z),spu_add(s,df)); - vec_float4 w2 = spu_madd(r,s,c); - - vec_float4 result0 = spu_sub(pio2_hi,spu_sub(x,spu_nmsub(x,r,pio2_lo))); - - - vec_float4 result1 = spu_mul(two,spu_add(df,w2)); - vec_float4 result2 = spu_nmsub(two,spu_add(s,w1),pi); - - - vec_float4 result; - - result = spu_sel(result2,result1,sel1); - result = spu_sel(result,result0,sel0); - - // If |x|==1 then: - // if x == 1, return 0 - // else return pi - - vec_uint4 abs_one = spu_cmpeq(x_abs,(vec_uint4)one); - vec_uint4 out_of_bounds = spu_cmpgt(x_abs,(vec_uint4)one); - vec_uint4 underflow = spu_cmpgt(denorm_threshold,x_abs); - - - - result = spu_sel(result,spu_sel(pi,zero,x_pos),abs_one); - - // If 1 < |x| then return sNaN - result = spu_sel(result,snan,out_of_bounds); - - // If |x| < 2**-57, then return pi/2 (OFF BY 1 ULP) - result = spu_sel(result,spu_add(pio2_hi,pio2_lo),underflow); - - return result; -} - -#endif /* _ACOSF4_H_ */ -#endif /* __SPU__ */ - - diff --git a/newlib/libm/machine/spu/headers/acosh.h b/newlib/libm/machine/spu/headers/acosh.h deleted file mode 100644 index d84708a30..000000000 --- a/newlib/libm/machine/spu/headers/acosh.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "headers/acoshd2.h" -#include "headers/dom_chkd_less_than.h" - -static __inline double _acosh(double x) -{ - double res; - vector double vx; - vector double vc = { 1.0, 1.0 }; - - vx = spu_promote(x, 0); - res = spu_extract(_acoshd2(vx), 0); -#ifndef _IEEE_LIBM - dom_chkd_less_than(vx, vc); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/acoshd2.h b/newlib/libm/machine/spu/headers/acoshd2.h deleted file mode 100644 index a60eaccb6..000000000 --- a/newlib/libm/machine/spu/headers/acoshd2.h +++ /dev/null @@ -1,159 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ACOSHD2_H_ -#define _ACOSHD2_H_ 1 - -#include <spu_intrinsics.h> -#include "logd2.h" -#include "sqrtd2.h" - -/* - * FUNCTION - * vector double _acoshd2(vector double x) - * - * DESCRIPTION - * The acoshd2 function returns a vector containing the hyperbolic - * arccosines of the corresponding elements of the input vector. - * - * We are using the formula: - * acosh = ln(x + sqrt(x^2 - 1)) - * - * For x near one, we use the Taylor series: - * - * infinity - * ------ - * - ' - * - k - * acosh x = - C (x - 1) - * - k - * - , - * ------ - * k = 0 - * - * - * Special Cases: - * - acosh(1) = +0 - * - acosh(NaN) = NaN - * - acosh(Infinity) = Infinity - * - acosh(x < 1) = NaN - * - */ - -/* - * Taylor Series Coefficients - * for x around 1. - */ -#define SDM_ACOSHD2_TAY01 1.000000000000000000000000000000000E0 /* 1 / 1 */ -#define SDM_ACOSHD2_TAY02 -8.333333333333333333333333333333333E-2 /* 1 / 12 */ -#define SDM_ACOSHD2_TAY03 1.875000000000000000000000000000000E-2 /* 3 / 160 */ -#define SDM_ACOSHD2_TAY04 -5.580357142857142857142857142857142E-3 /* 5 / 896 */ -#define SDM_ACOSHD2_TAY05 1.898871527777777777777777777777777E-3 /* 35 / 18432 */ -#define SDM_ACOSHD2_TAY06 -6.991299715909090909090909090909090E-4 /* 63 / 90112 */ -#define SDM_ACOSHD2_TAY07 2.711369441105769230769230769230769E-4 /* 231 / 851968 */ -#define SDM_ACOSHD2_TAY08 -1.091003417968750000000000000000000E-4 /* 143 / 1310720 */ -#define SDM_ACOSHD2_TAY09 4.512422225054572610294117647058823E-5 /* 6435 / 142606336 */ -#define SDM_ACOSHD2_TAY10 -1.906564361170718544407894736842105E-5 /* 12155 / 637534208 */ -#define SDM_ACOSHD2_TAY11 8.193687314078921363467261904761904E-6 /* 46189 / 5637144576 */ -#define SDM_ACOSHD2_TAY12 -3.570569274218186088230298913043478E-6 /* 88179 / 24696061952 */ -#define SDM_ACOSHD2_TAY13 1.574025955051183700561523437500000E-6 /* 676039 / 429496729600 */ -#define SDM_ACOSHD2_TAY14 -7.006881922414457356488263165509259E-7 /* 1300075 / 1855425871872 */ -#define SDM_ACOSHD2_TAY15 3.145330616650332150788142763335129E-7 /* 5014575 / 15942918602752 */ - -static __inline vector double _acoshd2(vector double x) -{ - vec_uchar16 dup_even = ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11 }); - vec_double2 minus_oned = spu_splats(-1.0); - vec_double2 twod = spu_splats(2.0); - /* Where we switch from taylor to formula */ - vec_float4 switch_approx = spu_splats(1.15f); - vec_double2 result, fresult, mresult;; - - - vec_double2 xminus1 = spu_add(x, minus_oned); - vec_float4 xf = spu_roundtf(x); - xf = spu_shuffle(xf, xf, dup_even); - - vec_ullong2 use_form = (vec_ullong2)spu_cmpgt(xf, switch_approx); - - vec_double2 sqrtargformula = spu_madd(x, x, minus_oned); - vec_double2 sqrtargtaylor = spu_mul(xminus1, twod); - vec_double2 sqrtarg = spu_sel(sqrtargtaylor, sqrtargformula, use_form); - - vec_double2 sqrtresult = _sqrtd2(sqrtarg); - - /* - * Formula: - * acosh = ln(x + sqrt(x^2 - 1)) - */ - fresult = spu_add(x, sqrtresult); - fresult = _logd2(fresult); - - /* - * Taylor Series - */ - mresult = spu_splats(SDM_ACOSHD2_TAY15); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY14)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY13)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY12)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY11)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY10)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY09)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY08)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY07)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY06)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY05)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY04)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY03)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY02)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHD2_TAY01)); - - - mresult = spu_mul(mresult, sqrtresult); - - - /* - * Select series or formula - */ - result = spu_sel(mresult, fresult, use_form); - - return result; -} - -#endif /* _ACOSHD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/acoshf.h b/newlib/libm/machine/spu/headers/acoshf.h deleted file mode 100644 index 537706c8a..000000000 --- a/newlib/libm/machine/spu/headers/acoshf.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "headers/acoshf4.h" -#include "headers/dom_chkf_less_than.h" - -static __inline float _acoshf(float x) -{ - float res; - vector float vx; - vector float vc = { 1.0, 1.0, 1.0, 1.0 }; - - vx = spu_promote(x, 0); - res = spu_extract(_acoshf4(vx), 0); -#ifndef _IEEE_LIBM - dom_chkf_less_than(vx, vc); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/acoshf4.h b/newlib/libm/machine/spu/headers/acoshf4.h deleted file mode 100644 index 4a364b640..000000000 --- a/newlib/libm/machine/spu/headers/acoshf4.h +++ /dev/null @@ -1,160 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ACOSHF4_H_ -#define _ACOSHF4_H_ 1 - -#include <spu_intrinsics.h> -#include "logf4.h" -#include "sqrtf4.h" - -/* - * FUNCTION - * vector float _acoshf4(vector float x) - * - * DESCRIPTION - * The acoshf4 function returns a vector containing the hyperbolic - * arccosines of the corresponding elements of the input vector. - * - * We are using the formula: - * acosh = ln(x + sqrt(x^2 - 1)) - * - * For x near one, we use the Taylor series: - * - * infinity - * ------ - * - ' - * - k - * acosh x = - C (x - 1) - * - k - * - , - * ------ - * k = 0 - * - * - * Special Cases: - * - acosh(1) = +0 - * - NaNs and Infinity aren't supported for single-precision on SPU. - * - */ - -/* - * Taylor Series Coefficients - * for x around 1. - */ -#define SDM_ACOSHF4_TAY01 1.00000000000000000000000000000000000E0f /* 1 / 1 */ -#define SDM_ACOSHF4_TAY02 -8.33333333333333333333333333333333333E-2f /* 1 / 12 */ -#define SDM_ACOSHF4_TAY03 1.87500000000000000000000000000000000E-2f /* 3 / 160 */ -#define SDM_ACOSHF4_TAY04 -5.58035714285714285714285714285714286E-3f /* 5 / 896 */ -#define SDM_ACOSHF4_TAY05 1.89887152777777777777777777777777778E-3f /* 35 / 18432 */ -#define SDM_ACOSHF4_TAY06 -6.99129971590909090909090909090909091E-4f /* 63 / 90112 */ -#define SDM_ACOSHF4_TAY07 2.71136944110576923076923076923076923E-4f /* 231 / 851968 */ -#define SDM_ACOSHF4_TAY08 -1.09100341796875000000000000000000000E-4f /* 143 / 1310720 */ -#define SDM_ACOSHF4_TAY09 4.51242222505457261029411764705882353E-5f /* 6435 / 142606336 */ -#define SDM_ACOSHF4_TAY10 -1.90656436117071854440789473684210526E-5f /* 12155 / 637534208 */ -#define SDM_ACOSHF4_TAY11 8.19368731407892136346726190476190476E-6f /* 46189 / 5637144576 */ -#define SDM_ACOSHF4_TAY12 -3.57056927421818608823029891304347826E-6f /* 88179 / 24696061952 */ -#define SDM_ACOSHF4_TAY13 1.57402595505118370056152343750000000E-6f /* 676039 / 429496729600 */ -#define SDM_ACOSHF4_TAY14 -7.00688192241445735648826316550925926E-7f /* 1300075 / 1855425871872 */ -#define SDM_ACOSHF4_TAY15 3.14533061665033215078814276333512931E-7f /* 5014575 / 15942918602752 */ -#if 0 -#define SDM_ACOSHF4_TAY16 -1.42216292935641362301764949675529234E-7f /* 9694845 / 68169720922112 */ -#define SDM_ACOSHF4_TAY17 6.47111067761133282064375552264126864E-8f /* 100180065 / 1548112371908608 */ -#define SDM_ACOSHF4_TAY18 -2.96094097811711825280716376645224435E-8f /* 116680311 / 3940649673949184 */ -#define SDM_ACOSHF4_TAY19 1.36154380562817937676005090612011987E-8f /* 2268783825 / 166633186212708352 */ -#endif - - - -static __inline vector float _acoshf4(vector float x) -{ - vec_float4 minus_onef = spu_splats(-1.0f); - vec_float4 twof = spu_splats(2.0f); - vec_float4 largef = spu_splats(2.5e19f); - vec_float4 xminus1; - /* Where we switch from taylor to formula */ - vec_float4 switch_approx = spu_splats(2.0f); - vec_uint4 use_form; - vec_float4 result, fresult, mresult;; - - - /* - * Formula: - * acosh = ln(x + sqrt(x^2 - 1)) - */ - fresult = _sqrtf4(spu_madd(x, x, minus_onef)); - fresult = spu_add(x, spu_sel(fresult, x, spu_cmpgt(x, largef))); - fresult = _logf4(fresult); - fresult = (vec_float4)spu_add((vec_uint4)fresult, spu_splats(2u)); - - /* - * Taylor Series - */ - xminus1 = spu_add(x, minus_onef); - - mresult = spu_splats(SDM_ACOSHF4_TAY15); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY14)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY13)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY12)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY11)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY10)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY09)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY08)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY07)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY06)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY05)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY04)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY03)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY02)); - mresult = spu_madd(xminus1, mresult, spu_splats(SDM_ACOSHF4_TAY01)); - - mresult = spu_mul(mresult, _sqrtf4(spu_mul(xminus1, twof))); - mresult = (vec_float4)spu_add((vec_uint4)mresult, spu_splats(1u)); - - /* - * Select series or formula - */ - use_form = spu_cmpgt(x, switch_approx); - result = spu_sel(mresult, fresult, use_form); - - - return result; -} - -#endif /* _ACOSHF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/asin.h b/newlib/libm/machine/spu/headers/asin.h deleted file mode 100644 index 881e532bc..000000000 --- a/newlib/libm/machine/spu/headers/asin.h +++ /dev/null @@ -1,18 +0,0 @@ -#include "headers/asind2.h" -#include "headers/dom_chkd_negone_one.h" - -static __inline double _asin(double x) -{ - double res; - vector double vx; - - vx = spu_splats(x); - res = spu_extract(_asind2(vx), 0); -#ifndef _IEEE_LIBM - /* - * Domain error if not in the interval [-1, +1] - */ - dom_chkd_negone_one(vx); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/asind2.h b/newlib/libm/machine/spu/headers/asind2.h deleted file mode 100644 index bfa5c7554..000000000 --- a/newlib/libm/machine/spu/headers/asind2.h +++ /dev/null @@ -1,166 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ - -#ifdef __SPU__ - -#ifndef _ASIND2_H_ -#define _ASIND2_H_ 1 - -#include <spu_intrinsics.h> - -#include "simdmath.h" -#include "sqrtd2.h" -#include "divd2.h" - - - -/* - * FUNCTION - * vector double _asind2(vector double x) - * - * DESCRIPTION - * Compute the arc sine of the vector of double precision elements - * specified by x, returning the resulting angles in radians. The input - * elements are to be in the closed interval [-1, 1]. Values outside - * this range result in a invalid operation execption being latched in - * the FPSCR register and a NAN is returned. - * - * The basic algorithm computes the arc sine using a rational polynomial - * of the form x + x^3 * P(x^2) / Q(x^2) for inputs |x| in the interval - * [0, 0.5]. Values outsize this range are transformed as by: - * - * asin(x) = PI/2 - 2*asin(sqrt((1-x)/2)) for x in the range (0.5, 1.0] - * - * asin(x) = -PI/2 + 2*asin(sqrt((1+x)/2)) for x in the range [-1.0, -0.5) - * - * This yields the basic algorithm of: - * - * absx = (x < 0.0) ? -x : x; - * - * if (absx > 0.5) { - * if (x < 0) { - * addend = -SM_PI_2; - * multiplier = -2.0; - * } else { - * addend = SM_PI_2; - * multiplier = 2.0; - * } - * - * x = sqrt(-0.5 * absx + 0.5); - * } else { - * addend = 0.0; - * multiplier = 1.0; - * } - * - * x2 = x * x; - * x3 = x2 * x; - * - * p = ((((P5 * x2 + P4)*x2 + P3)*x2 + P2)*x2 + P1)*x2 + P0; - * - * q = ((((Q5 * x2 + Q4)*x2 + Q3)*x2 + Q2)*x2 + Q1)*x2 + Q0;; - * - * pq = p / q; - * - * result = addend - (x3*pq + x)*multiplier; - * - * Where P5-P0 and Q5-Q0 are the polynomial coeficients. - */ -static __inline vector double _asind2(vector double x) -{ - vec_uint4 x_gt_half, x_eq_half; - vec_double2 x_abs; // absolute value of x - vec_double2 x_trans; // transformed x when |x| > 0.5 - vec_double2 x2, x3; // x squared and x cubed, respectively. - vec_double2 result; - vec_double2 multiplier, addend; - vec_double2 p, q, pq; - vec_double2 half = spu_splats(0.5); - vec_double2 sign = (vec_double2)spu_splats(0x8000000000000000ULL); - vec_uchar16 splat_hi = ((vec_uchar16){0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11}); - - // Compute the absolute value of x - x_abs = spu_andc(x, sign); - - // Perform transformation for the case where |x| > 0.5. We rely on - // sqrtd2 producing a NAN is |x| > 1.0. - x_trans = _sqrtd2(spu_nmsub(x_abs, half, half)); - - // Determine the correct addend and multiplier. - x_gt_half = spu_cmpgt((vec_uint4)x_abs, (vec_uint4)half); - x_eq_half = spu_cmpeq((vec_uint4)x_abs, (vec_uint4)half); - x_gt_half = spu_or(x_gt_half, spu_and(x_eq_half, spu_rlqwbyte(x_gt_half, 4))); - x_gt_half = spu_shuffle(x_gt_half, x_gt_half, splat_hi); - - addend = spu_and(spu_sel(spu_splats((double)SM_PI_2), x, (vec_ullong2)sign), (vec_double2)x_gt_half); - - multiplier = spu_sel(spu_splats(-1.0), spu_sel(spu_splats(2.0), x, (vec_ullong2)sign), (vec_ullong2)x_gt_half); - - // Select whether to use the x or the transformed x for the polygon evaluation. - // if |x| > 0.5 use x_trans - // else use x - - x = spu_sel(x, x_trans, (vec_ullong2)x_gt_half); - - // Compute the polynomials. - - x2 = spu_mul(x, x); - x3 = spu_mul(x2, x); - - p = spu_madd(spu_splats(0.004253011369004428248960), x2, spu_splats(-0.6019598008014123785661)); - p = spu_madd(p, x2, spu_splats(5.444622390564711410273)); - p = spu_madd(p, x2, spu_splats(-16.26247967210700244449)); - p = spu_madd(p, x2, spu_splats(19.56261983317594739197)); - p = spu_madd(p, x2, spu_splats(-8.198089802484824371615)); - - q = spu_add(x2, spu_splats(-14.74091372988853791896)); - q = spu_madd(q, x2, spu_splats(70.49610280856842141659)); - q = spu_madd(q, x2, spu_splats(-147.1791292232726029859)); - q = spu_madd(q, x2, spu_splats(139.5105614657485689735)); - q = spu_madd(q, x2, spu_splats(-49.18853881490881290097)); - - // Compute the rational solution p/q and final multiplication and addend - // correction. - pq = _divd2(p, q); - - result = spu_nmsub(spu_madd(x3, pq, x), multiplier, addend); - - return (result); -} - -#endif /* _ASIND2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/asinf.h b/newlib/libm/machine/spu/headers/asinf.h deleted file mode 100644 index cb468ecec..000000000 --- a/newlib/libm/machine/spu/headers/asinf.h +++ /dev/null @@ -1,18 +0,0 @@ -#include "headers/asinf4.h" -#include "headers/dom_chkf_negone_one.h" - -static __inline float _asinf(float x) -{ - float res; - vector float vx; - - vx = spu_splats(x); - res = spu_extract(_asinf4(vx), 0); -#ifndef _IEEE_LIBM - /* - * Domain error if not in the interval [-1, +1] - */ - dom_chkf_negone_one(vx); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/asinf4.h b/newlib/libm/machine/spu/headers/asinf4.h deleted file mode 100644 index e9db1408b..000000000 --- a/newlib/libm/machine/spu/headers/asinf4.h +++ /dev/null @@ -1,144 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _ASINF4_H_ -#define _ASINF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "divf4.h" -#include "sqrtf4.h" - -/* - * FUNCTION - * vector float _asinf4(vector float x) - * - * DESCRIPTION - * The _asinf4 function computes the arc sine for a vector of values x; - * that is the values whose sine is x. Results are undefined if x is - * outside the range [-1, 1]. - * - */ -static __inline vector float _asinf4(vector float x) -{ - /* The arcsin is computed using two different algorithms, depending - * upon the absolute value of the input. For inputs in the range - * [0, PI/4], it is computed as the ratio of two polynomials. - * - * asin(x) = p/q; - * - * where p = P11*x^11 + P09*x^9 + P07*x^7 + P05*x^5 + P03*x3 + x - * q = Q08*x^8 + Q06*x^6 + Q04*x^4 + Q02*x^2 + Q00 - * - * For the range of value [PI/4, 1], the arcsin is computed using: - * - * asin = PI/2 - sqrt(1 - x) * r; - * - * where r = C07*x^7 + C06*x^6 + C05*x^5 + C04*x^4 + C03*x^3 + C02*x^2 - * C01*x + C00; - */ - vector float r, r1, r2, r_hi, r_lo; - vector float xabs, x2, x4, x6; - vector float p, p_hi, p_lo; - vector float q, q_hi, q_lo; - vector float pi_over_2 = spu_splats(1.5707963267949f); - vector float pi_over_4 = spu_splats(0.7853981633974f); - vector unsigned int msb = spu_splats(0x80000000); - - - x2 = spu_mul(x, x); - x4 = spu_mul(x2, x2); - x6 = spu_mul(x4, x2); - - xabs = spu_andc(x, (vector float)msb); - - /* Compute arc-sin for values in the range [0, PI/4] - */ - p_hi = spu_madd(spu_splats(0.0000347933107596021167570f), x2, - spu_splats(0.000791534994289814532176f)); - p_hi = spu_madd(p_hi, x2, spu_splats(-0.0400555345006794114027f)); - - p_lo = spu_madd(spu_splats(0.201212532134862925881f), x2, - spu_splats(-0.325565818622400915405f)); - p_lo = spu_madd(p_lo, x2, spu_splats(0.166666666666666657415f)); - - p = spu_madd(p_hi, x6, p_lo); - - q_hi = spu_madd(spu_splats(0.0770381505559019352791f), x2, - spu_splats(-0.688283971605453293030f)); - q_hi = spu_madd(q_hi, x2, spu_splats(2.02094576023350569471f)); - - q_lo = spu_madd(spu_splats(-2.40339491173441421878f), x2, - spu_splats(1.0f)); - - q = spu_madd(q_hi, x4, q_lo); - - r1 = spu_madd(_divf4(p, q), spu_mul(xabs, x2), xabs); - - /* Compute arc-sin for values in the range [PI/4, 1] - */ - r_hi = spu_madd(spu_splats(-0.0012624911f), xabs, - spu_splats(0.0066700901f)); - r_hi = spu_madd(r_hi, xabs, spu_splats(-0.0170881256f)); - r_hi = spu_madd(r_hi, xabs, spu_splats(0.0308918810f)); - - r_lo = spu_madd(spu_splats(-0.0501743046f), xabs, - spu_splats(0.0889789874f)); - r_lo = spu_madd(r_lo, xabs, spu_splats(-0.2145988016f)); - r_lo = spu_madd(r_lo, xabs, pi_over_2); - - r = spu_madd(r_hi, x4, r_lo); - - r2 = spu_nmsub(r, _sqrtf4(spu_sub(spu_splats(1.0f), xabs)), - pi_over_2); - - /* Select the result depending upon the input value. Correct the - * sign of the result. - */ - return (spu_sel(spu_sel(r1, r2, spu_cmpgt(xabs, pi_over_4)), - x, msb)); -} - -#endif /* _ASINF4_H_ */ -#endif /* __SPU__ */ - - diff --git a/newlib/libm/machine/spu/headers/asinh.h b/newlib/libm/machine/spu/headers/asinh.h deleted file mode 100644 index b80a79a6a..000000000 --- a/newlib/libm/machine/spu/headers/asinh.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/asinhd2.h" - -static __inline double _asinh(double x) -{ - return spu_extract(_asinhd2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/asinhd2.h b/newlib/libm/machine/spu/headers/asinhd2.h deleted file mode 100644 index 8a0b97c4d..000000000 --- a/newlib/libm/machine/spu/headers/asinhd2.h +++ /dev/null @@ -1,163 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ASINHD2_H_ -#define _ASINHD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "logd2.h" -#include "sqrtd2.h" - -/* - * FUNCTION - * vector double _asinhd2(vector double x) - * - * DESCRIPTION - * The asinhd2 function returns a vector containing the hyperbolic - * arcsines of the corresponding elements of the input vector. - * - * We are using the formula: - * asinh = ln(|x| + sqrt(x^2 + 1)) - * and the anti-symmetry of asinh. - * - * For x near zero, we use the Taylor series: - * - * infinity - * ------ - * - ' P (0) - * - k-1 k - * asinh x = - ----- x - * - k - * - , - * ------ - * k = 1 - * - * Special Cases: - * asinh(+0) returns +0 - * asinh(-0) returns -0 - * asinh(+infinity) returns +infinity - * asinh(-infinity) returns -infinity - * asinh(NaN) returns NaN - * - */ - -/* - * Maclaurin Series Coefficients - * for x near 0. - */ -#define SDM_ASINHD2_MAC01 1.000000000000000000000000000000000000000000E0 -#define SDM_ASINHD2_MAC03 -1.666666666666666666666666666666666666666667E-1 -#define SDM_ASINHD2_MAC05 7.500000000000000000000000000000000000000000E-2 -#define SDM_ASINHD2_MAC07 -4.464285714285714285714285714285714285714286E-2 -#define SDM_ASINHD2_MAC09 3.038194444444444444444444444444444444444444E-2 -#define SDM_ASINHD2_MAC11 -2.237215909090909090909090909090909090909091E-2 -#define SDM_ASINHD2_MAC13 1.735276442307692307692307692307692307692308E-2 -#define SDM_ASINHD2_MAC15 -1.396484375000000000000000000000000000000000E-2 -#define SDM_ASINHD2_MAC17 1.155180089613970588235294117647058823529412E-2 - - -static __inline vector double _asinhd2(vector double x) -{ - vec_double2 sign_mask = spu_splats(-0.0); - vec_double2 oned = spu_splats(1.0); - vec_uchar16 dup_even = ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11 }); - vec_uint4 infminus1 = spu_splats(0x7FEFFFFFU); - vec_uint4 isinfnan; - vec_double2 xabs, xsqu; - vec_uint4 xabshigh; - vec_float4 switch_approx = spu_splats(0.165f); /* Where we switch from maclaurin to formula */ - vec_uint4 use_form; - vec_float4 xf; - vec_double2 result, fresult, mresult; - - - xabs = spu_andc(x, sign_mask); - xsqu = spu_mul(x, x); - - xf = spu_roundtf(xabs); - xf = spu_shuffle(xf, xf, dup_even); - - /* - * Formula: - * asinh = ln(|x| + sqrt(x^2 + 1)) - */ - fresult = _sqrtd2(spu_add(xsqu, oned)); - fresult = spu_add(xabs, fresult); - fresult = _logd2(fresult); - - - /* - * Maclaurin Series approximation - */ - - mresult = spu_splats(SDM_ASINHD2_MAC17); - mresult = spu_madd(xsqu, mresult, spu_splats(SDM_ASINHD2_MAC15)); - mresult = spu_madd(xsqu, mresult, spu_splats(SDM_ASINHD2_MAC13)); - mresult = spu_madd(xsqu, mresult, spu_splats(SDM_ASINHD2_MAC11)); - mresult = spu_madd(xsqu, mresult, spu_splats(SDM_ASINHD2_MAC09)); - mresult = spu_madd(xsqu, mresult, spu_splats(SDM_ASINHD2_MAC07)); - mresult = spu_madd(xsqu, mresult, spu_splats(SDM_ASINHD2_MAC05)); - mresult = spu_madd(xsqu, mresult, spu_splats(SDM_ASINHD2_MAC03)); - mresult = spu_madd(xsqu, mresult, spu_splats(SDM_ASINHD2_MAC01)); - mresult = spu_mul(xabs, mresult); - - - /* - * Choose between series and formula - */ - use_form = spu_cmpgt(xf, switch_approx); - result = spu_sel(mresult, fresult, (vec_ullong2)use_form); - - - /* Special Cases */ - - /* Infinity and NaN */ - xabshigh = (vec_uint4)spu_shuffle(xabs, xabs, dup_even); - isinfnan = spu_cmpgt(xabshigh, infminus1); - result = spu_sel(result, x, (vec_ullong2)isinfnan); - - - /* Restore sign - asinh is an anti-symmetric */ - result = spu_sel(result, x, (vec_ullong2)sign_mask); - - return result; -} - -#endif /* _ASINHD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/asinhf.h b/newlib/libm/machine/spu/headers/asinhf.h deleted file mode 100644 index 6abd16e2e..000000000 --- a/newlib/libm/machine/spu/headers/asinhf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/asinhf4.h" - -static __inline float _asinhf(float x) -{ - return spu_extract(_asinhf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/asinhf4.h b/newlib/libm/machine/spu/headers/asinhf4.h deleted file mode 100644 index 6a8a3b5da..000000000 --- a/newlib/libm/machine/spu/headers/asinhf4.h +++ /dev/null @@ -1,168 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ASINHF4_H_ -#define _ASINHF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "logf4.h" -#include "sqrtf4.h" - -/* - * FUNCTION - * vector float _asinhf4(vector float x) - * - * DESCRIPTION - * The asinhf4 function returns a vector containing the hyperbolic - * arcsines of the corresponding elements of the input vector. - * - * We are using the formula: - * asinh = ln(|x| + sqrt(x^2 + 1)) - * and the anti-symmetry of asinh. - * - * For x near zero, we use the Taylor series: - * - * infinity - * ------ - * - ' P (0) - * - k-1 k - * asinh x = - ----- x - * - k - * - , - * ------ - * k = 1 - * - * Special Cases: - * - asinh(+0) returns +0 - * - asinh(-0) returns -0 - * - Normally, asinh(+/- infinity) returns +/- infinity, - * but on the SPU, single-precision infinity is not supported, - * so it is treated as a normal number here. - * - */ - -/* - * Maclaurin Series Coefficients - * for x near 0. - */ -#define ASINH_MAC01 1.0000000000000000000000000000000000000000000000000000000000000000000000E0 -#define ASINH_MAC03 -1.6666666666666666666666666666666666666666666666666666666666666666666667E-1 -#define ASINH_MAC05 7.5000000000000000000000000000000000000000000000000000000000000000000000E-2 -#define ASINH_MAC07 -4.4642857142857142857142857142857142857142857142857142857142857142857143E-2 -#define ASINH_MAC09 3.0381944444444444444444444444444444444444444444444444444444444444444444E-2 -#define ASINH_MAC11 -2.2372159090909090909090909090909090909090909090909090909090909090909091E-2 -#define ASINH_MAC13 1.7352764423076923076923076923076923076923076923076923076923076923076923E-2 -#define ASINH_MAC15 -1.3964843750000000000000000000000000000000000000000000000000000000000000E-2 -#define ASINH_MAC17 1.1551800896139705882352941176470588235294117647058823529411764705882353E-2 -#define ASINH_MAC19 -9.7616095291940789473684210526315789473684210526315789473684210526315789E-3 -#define ASINH_MAC21 8.3903358096168154761904761904761904761904761904761904761904761904761905E-3 -#define ASINH_MAC23 -7.3125258735988451086956521739130434782608695652173913043478260869565217E-3 -#define ASINH_MAC25 6.4472103118896484375000000000000000000000000000000000000000000000000000E-3 -#define ASINH_MAC27 -5.7400376708419234664351851851851851851851851851851851851851851851851852E-3 -#define ASINH_MAC29 5.1533096823199041958512931034482758620689655172413793103448275862068966E-3 -#if 0 -#define ASINH_MAC31 -4.6601434869150961599042338709677419354838709677419354838709677419354839E-3 -#define ASINH_MAC33 4.2409070936793630773370916193181818181818181818181818181818181818181818E-3 -#define ASINH_MAC35 -3.8809645588376692363194056919642857142857142857142857142857142857142857E-3 -#define ASINH_MAC37 3.5692053938259345454138678473395270270270270270270270270270270270270270E-3 -#define ASINH_MAC39 -3.2970595034734847453924325796274038461538461538461538461538461538461538E-3 -#define ASINH_MAC41 3.0578216492580306693548109473251714939024390243902439024390243902439024E-3 -#define ASINH_MAC43 -2.8461784011089421678767647854117460029069767441860465116279069767441860E-3 -#endif - - - -static __inline vector float _asinhf4(vector float x) -{ - vec_float4 sign_mask = spu_splats(-0.0f); - vec_float4 onef = spu_splats(1.0f); - vec_float4 result, fresult, mresult;; - vec_float4 xabs, xsqu; - /* Where we switch from maclaurin to formula */ - vec_float4 switch_approx = spu_splats(0.685f); - vec_uint4 use_form; - - - xabs = spu_andc(x, sign_mask); - xsqu = spu_mul(x, x); - - /* - * Formula: - * asinh = ln(|x| + sqrt(x^2 + 1)) - */ - fresult = _sqrtf4(spu_madd(x, x, onef)); - fresult = spu_add(xabs, fresult); - fresult = _logf4(fresult); - - - /* - * Maclaurin Series - */ - mresult = spu_madd(xsqu, spu_splats((float)ASINH_MAC29), spu_splats((float)ASINH_MAC27)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC25)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC23)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC21)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC19)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC17)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC15)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC13)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC11)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC09)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC07)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC05)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC03)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)ASINH_MAC01)); - mresult = spu_mul(xabs, mresult); - - - /* - * Choose between series and formula - */ - use_form = spu_cmpgt(xabs, switch_approx); - result = spu_sel(mresult, fresult, use_form); - - - /* Preserve sign - asinh is anti-symmetric */ - result = spu_sel(result, x, (vec_uint4)sign_mask); - - return result; -} - -#endif /* _ASINHF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/atan.h b/newlib/libm/machine/spu/headers/atan.h deleted file mode 100644 index 18ff615d8..000000000 --- a/newlib/libm/machine/spu/headers/atan.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/atand2.h" - -static __inline double _atan(double x) -{ - return spu_extract(_atand2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/atan2.h b/newlib/libm/machine/spu/headers/atan2.h deleted file mode 100644 index a95c71665..000000000 --- a/newlib/libm/machine/spu/headers/atan2.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/atan2d2.h" - -static __inline double _atan2(double y, double x) -{ - return spu_extract(_atan2d2(spu_promote(y, 0), spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/atan2d2.h b/newlib/libm/machine/spu/headers/atan2d2.h deleted file mode 100644 index 4a25756d3..000000000 --- a/newlib/libm/machine/spu/headers/atan2d2.h +++ /dev/null @@ -1,96 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ATAN2D2_H_ -#define _ATAN2D2_H_ 1 - -#include <spu_intrinsics.h> - -#include "divd2.h" -#include "atand2.h" - -/* - * FUNCTION - * vector double _atan2d2(vector double y, vector double x) - * - * DESCRIPTION - * The atan2d2 function returns a vector containing the angles - * whose tangets are y/x for the corresponding elements of the - * input vectors. - * - * The reason this function exists is to use the signs of the - * arguments to determine the quadrant of the result. Consider - * sin(x)/cos(x) on the domain (-pi, pi]. Four quadrants are - * defined by the signs of sin and cos on this domain. - * - * Special Cases: - * - If the corresponding elements of x and y are zero, the - * resulting element is undefined. - * - */ - -static __inline vector double _atan2d2(vector double y, vector double x) -{ - vec_uchar16 dup_even = ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11 }); - vector double pi = spu_splats(SM_PI); - vector unsigned long long ones = spu_splats(0xFFFFFFFFFFFFFFFFull); - vector unsigned long long quad1; - vector unsigned long long quad4; - vector double result; - - vector unsigned long long xlt0; - vector unsigned long long yge0; - vector unsigned long long ylt0; - - xlt0 = (vec_ullong2)spu_rlmaska((vec_int4)spu_shuffle(x,x,dup_even), 31); - ylt0 = (vec_ullong2)spu_rlmaska((vec_int4)spu_shuffle(y,y,dup_even), 31); - yge0 = spu_xor(ylt0, ones); - - quad1 = spu_and(ylt0, xlt0); - quad4 = spu_and(yge0, xlt0); - - result = _atand2(_divd2(y,x)); - - result = spu_sel(result, spu_sub(result, pi), quad1); - result = spu_sel(result, spu_add(result, pi), quad4); - - return result; -} - -#endif /* _ATAN2D2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/atan2f.h b/newlib/libm/machine/spu/headers/atan2f.h deleted file mode 100644 index 8e4ca67bd..000000000 --- a/newlib/libm/machine/spu/headers/atan2f.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/atan2f4.h" - -static __inline float _atan2f(float y, float x) -{ - return spu_extract(_atan2f4(spu_promote(y, 0), spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/atan2f4.h b/newlib/libm/machine/spu/headers/atan2f4.h deleted file mode 100644 index 1899ce0c8..000000000 --- a/newlib/libm/machine/spu/headers/atan2f4.h +++ /dev/null @@ -1,94 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ATAN2F4_H_ -#define _ATAN2F4_H_ 1 - -#include <spu_intrinsics.h> - -#include "divf4.h" -#include "atanf4.h" - -/* - * FUNCTION - * vector float _atan2f4(vector float y, vector float x) - * - * DESCRIPTION - * The atan2f4 function returns a vector containing the angles - * whose tangets are y/x for the corresponding elements of the - * input vectors. - * - * The reason this function exists is to use the signs of the - * arguments to determine the quadrant of the result. Consider - * sin(x)/cos(x) on the domain (-pi, pi]. Four quadrants are - * defined by the signs of sin and cos on this domain. - * - * Special Cases: - * - If the corresponding elements of x and y are zero, the - * resulting element is undefined. - * - */ - -static __inline vector float _atan2f4(vector float y, vector float x) -{ - vector float pi = spu_splats((float)SM_PI); - vector float zero = spu_splats(0.0f); - vector unsigned int quad1; - vector unsigned int quad4; - vector float result; - - vector unsigned int xlt0; - vector unsigned int yge0; - vector unsigned int ylt0; - - xlt0 = (vec_uint4)spu_rlmaska((vec_int4)x, 31); - ylt0 = (vec_uint4)spu_rlmaska((vec_int4)y, 31); - yge0 = spu_cmpeq(ylt0, (vec_uint4)zero); - - quad1 = spu_and(ylt0, xlt0); - quad4 = spu_and(yge0, xlt0); - - result = _atanf4(_divf4(y,x)); - result = spu_sel(result, spu_sub(result, pi), quad1); - result = spu_sel(result, spu_add(result, pi), quad4); - - return result; -} - -#endif /* _ATAN2F4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/atand2.h b/newlib/libm/machine/spu/headers/atand2.h deleted file mode 100644 index 244c15d3e..000000000 --- a/newlib/libm/machine/spu/headers/atand2.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ - -#ifdef __SPU__ - -#ifndef _ATAND2_H_ -#define _ATAND2_H_ 1 - -#include <spu_intrinsics.h> - -#include "simdmath.h" -#include "recipd2.h" -#include "logd2.h" -#include "acosd2.h" -#include "asind2.h" -#include "sqrtd2.h" - -/* - * FUNCTION - * vector double _atand2(vector double x) - * - * DESCRIPTION - * The _atand2 function computes the arc tangent of a vector of values x. - * - * The arc tangent function is computed using the following relations: - * [0, 1] : arcsin(x1/sqrt(spu_add(x1squ + 1 ))); - * (1, infinity] : PI/2 + atanf(-1/x) - * [-infinity, 0) : -arcsin(|x|) - * - */ - -static __inline vector double _atand2(vector double x) -{ - vector double signbit = spu_splats(-0.0); - vector double oned = spu_splats(1.0); - vector double pi2 = spu_splats(SM_PI_2); - vector double xabs, x1; - vector double result; - vector unsigned long long gt1; - - xabs = spu_andc(x, signbit); - gt1 = spu_cmpgt(xabs, oned); - - /* - * For x > 1, use the relation: - * atan(x) = pi/2 - atan(1/x), x>1 - */ - x1 = spu_sel(xabs, _recipd2(xabs), gt1); - - vector double x1squ = spu_mul(x1, x1); - - result = _asind2(_divd2(x1, _sqrtd2(spu_add(x1squ, oned)))); - - /* - * For x > 1, use the relation: atan(x) = pi/2 - atan(1/x), x>1 - */ - result = spu_sel(result, spu_sub(pi2, result), gt1); - - /* - * Antisymmetric function - preserve sign of x in result. - */ - result = spu_sel(result, x, (vec_ullong2)signbit); - - return (result); -} - -#endif /* _ATAND2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/atanf.h b/newlib/libm/machine/spu/headers/atanf.h deleted file mode 100644 index ec01c1ec8..000000000 --- a/newlib/libm/machine/spu/headers/atanf.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _ATANF_H_ -#define _ATANF_H_ 1 - -#ifndef M_PI_2 -#define M_PI_2 1.5707963267949f -#endif /* M_PI_2 */ - -/* - * FUNCTION - * float _atanf(float x) - * - * DESCRIPTION - * _atanf computes the arc tangent of the value x; that is the value - * whose tangent is x. - * - * _atanf returns the arc tangent in radians and the value is - * mathematically defined to be in the range -PI/2 to PI/2. - * - * The arc tangent function is computed using a polynomial approximation - * (B. Carlson, M. Goldstein, Los Alamos Scientific Laboratiry, 1955). - * __8__ - * \ - * \ - * atanf(x) = / Ci*x^(2*i+1) - * /____ - * i=0 - * - * for x in the range -1 to 1. The remaining regions are defined to be: - * - * [1, infinity] : PI/2 + atanf(-1/x) - * [-infinity, -1] : -PI/2 + atanf(-1/x) - */ - -static __inline float _atanf(float x) -{ - float xabs; - float bias; - float x2, x3, x4, x8, x9; - float hi, lo; - float result; - - bias = 0.0f; - xabs = (x < 0.0f) ? -x : x; - - if (xabs >= 1.0f) { - bias = M_PI_2; - if (x < 0.0f) { - bias = -bias; - } - x = -1.0f / x; - } - /* Instruction counts can be reduced if the polynomial was - * computed entirely from nested (dependent) fma's. However, - * to reduce the number of pipeline stalls, the polygon is evaluated - * in two halves(hi and lo). - */ - bias += x; - - x2 = x * x; - x3 = x2 * x; - x4 = x2 * x2; - x8 = x4 * x4; - x9 = x8 * x; - hi = 0.0028662257f * x2 - 0.0161657367f; - hi = hi * x2 + 0.0429096138f; - hi = hi * x2 - 0.0752896400f; - hi = hi * x2 + 0.1065626393f; - lo = -0.1420889944f * x2 + 0.1999355085f; - lo = lo * x2 - 0.3333314528f; - lo = lo * x3 + bias; - - result = hi * x9 + lo; - - return (result); -} - -#endif /* _ATANF_H_ */ - - - diff --git a/newlib/libm/machine/spu/headers/atanf4.h b/newlib/libm/machine/spu/headers/atanf4.h deleted file mode 100644 index 3fd803ce9..000000000 --- a/newlib/libm/machine/spu/headers/atanf4.h +++ /dev/null @@ -1,124 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _ATANF4_H_ -#define _ATANF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "simdmath.h" -#include "recipf4.h" - -/* - * FUNCTION - * vector float _atanf4(vector float x) - * - * DESCRIPTION - * The _atanf4 function computes the arc tangent of a vector of values x; - * that is the values whose tangent is x. - * - * The _atanf4 function returns the arc tangents in radians and the value - * is mathematically defined to be in the range -PI/2 to PI/2. - * - * The arc tangent function is computed using a polynomial approximation - * (B. Carlson, M. Goldstein, Los Alamos Scientific Laboratory, 1955). - * __8__ - * \ - * \ - * atan(x) = / Ci*x^(2*i+1) - * /____ - * i=0 - * - * for x in the range -1 to 1. The remaining regions are defined to be: - * - * [1, infinity] : PI/2 + atanf(-1/x) - * [-infinity, -1] : -PI/2 + atanf(-1/x) - * - */ -static __inline vector float _atanf4(vector float x) -{ - vector float bias; - vector float x2, x3, x4, x8, x9; - vector float hi, lo; - vector float result; - vector float inv_x; - vector unsigned int sign; - vector unsigned int select; - - sign = spu_sl(spu_rlmask((vector unsigned int)x, -31), 31); - inv_x = _recipf4(x); - inv_x = (vector float)spu_xor((vector unsigned int)inv_x, spu_splats(0x80000000)); - - select = (vector unsigned int)spu_cmpabsgt(x, spu_splats(1.0f)); - bias = (vector float)spu_or(sign, (vector unsigned int)(spu_splats((float)SM_PI_2))); - bias = (vector float)spu_and((vector unsigned int)bias, select); - - x = spu_sel(x, inv_x, select); - - /* Instruction counts can be reduced if the polynomial was - * computed entirely from nested (dependent) fma's. However, - * to reduce the number of pipeline stalls, the polygon is evaluated - * in two halves(hi and lo). - */ - bias = spu_add(bias, x); - x2 = spu_mul(x, x); - x3 = spu_mul(x2, x); - x4 = spu_mul(x2, x2); - x8 = spu_mul(x4, x4); - x9 = spu_mul(x8, x); - hi = spu_madd(spu_splats(0.0028662257f), x2, spu_splats(-0.0161657367f)); - hi = spu_madd(hi, x2, spu_splats(0.0429096138f)); - hi = spu_madd(hi, x2, spu_splats(-0.0752896400f)); - hi = spu_madd(hi, x2, spu_splats(0.1065626393f)); - lo = spu_madd(spu_splats(-0.1420889944f), x2, spu_splats(0.1999355085f)); - lo = spu_madd(lo, x2, spu_splats(-0.3333314528f)); - lo = spu_madd(lo, x3, bias); - - result = spu_madd(hi, x9, lo); - - return (result); -} - -#endif /* _ATANF4_H_ */ -#endif /* __SPU__ */ - - diff --git a/newlib/libm/machine/spu/headers/atanh.h b/newlib/libm/machine/spu/headers/atanh.h deleted file mode 100644 index f81ad2ede..000000000 --- a/newlib/libm/machine/spu/headers/atanh.h +++ /dev/null @@ -1,18 +0,0 @@ -#include "headers/atanhd2.h" -#include "headers/dom_chkd_negone_one.h" - -static __inline double _atanh(double x) -{ - double res; - vector double vx; - - vx = spu_splats(x); - res = spu_extract(_atanhd2(vx), 0); -#ifndef _IEEE_LIBM - /* - * Domain error if not in the interval [-1, +1] - */ - dom_chkd_negone_one(vx); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/atanhd2.h b/newlib/libm/machine/spu/headers/atanhd2.h deleted file mode 100644 index 85e78580f..000000000 --- a/newlib/libm/machine/spu/headers/atanhd2.h +++ /dev/null @@ -1,154 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ATANHD2_H_ -#define _ATANHD2_H_ 1 - -#include <spu_intrinsics.h> -#include "logd2.h" - -/* - * FUNCTION - * vector double _atanhd2(vector double x) - * - * DESCRIPTION - * The atanhd2 function returns a vector containing the hyperbolic - * arctangents of the corresponding elements of the input vector. - * - * We are using the formula: - * atanh x = 1/2 * ln((1 + x)/(1 - x)) = 1/2 * [ln(1+x) - ln(1-x)] - * and the anti-symmetry of atanh. - * - * For x near 0, we use the Taylor series: - * atanh x = x + x^3/3 + x^5/5 + x^7/7 + x^9/9 + ... - * - * Special Cases: - * - atanh(1) = Infinity - * - atanh(-1) = -Infinity - * - atanh(x) for |x| > 1 = Undefined - * - */ - -/* - * Maclaurin Series Coefficients - * for x near 0. - */ -#define SMD_DP_ATANH_MAC01 1.000000000000000000000000000000E0 -#define SMD_DP_ATANH_MAC03 3.333333333333333333333333333333E-1 -#define SMD_DP_ATANH_MAC05 2.000000000000000000000000000000E-1 -#define SMD_DP_ATANH_MAC07 1.428571428571428571428571428571E-1 -#define SMD_DP_ATANH_MAC09 1.111111111111111111111111111111E-1 -#define SMD_DP_ATANH_MAC11 9.090909090909090909090909090909E-2 -#define SMD_DP_ATANH_MAC13 7.692307692307692307692307692308E-2 -#define SMD_DP_ATANH_MAC15 6.666666666666666666666666666667E-2 -#define SMD_DP_ATANH_MAC17 5.882352941176470588235294117647E-2 -#if 0 -#define SMD_DP_ATANH_MAC19 5.263157894736842105263157894737E-2 -#define SMD_DP_ATANH_MAC21 4.761904761904761904761904761905E-2 -#define SMD_DP_ATANH_MAC23 4.347826086956521739130434782609E-2 -#define SMD_DP_ATANH_MAC25 4.000000000000000000000000000000E-2 -#define SMD_DP_ATANH_MAC27 3.703703703703703703703703703704E-2 -#define SMD_DP_ATANH_MAC29 3.448275862068965517241379310345E-2 -#define SMD_DP_ATANH_MAC31 3.225806451612903225806451612903E-2 -#define SMD_DP_ATANH_MAC33 3.030303030303030303030303030303E-2 -#define SMD_DP_ATANH_MAC35 2.857142857142857142857142857143E-2 -#define SMD_DP_ATANH_MAC37 2.702702702702702702702702702703E-2 -#define SMD_DP_ATANH_MAC39 2.564102564102564102564102564103E-2 -#endif - - -static __inline vector double _atanhd2(vector double x) -{ - vec_uchar16 dup_even = ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11 }); - vec_double2 sign_mask = spu_splats(-0.0); - vec_double2 oned = spu_splats(1.0); - vec_double2 onehalfd = spu_splats(0.5); - vec_double2 xabs, xsqu; - /* Where we switch from maclaurin to formula */ - vec_float4 switch_approx = spu_splats(0.125f); - vec_uint4 use_form; - vec_float4 xf; - vec_double2 result, fresult, mresult;; - - xabs = spu_andc(x, sign_mask); - xsqu = spu_mul(x, x); - - xf = spu_roundtf(xabs); - xf = spu_shuffle(xf, xf, dup_even); - - /* - * Formula: - * atanh = 1/2 * ln((1 + x)/(1 - x)) = 1/2 * [ln(1+x) - ln(1-x)] - */ - fresult = spu_sub(_logd2(spu_add(oned, xabs)), _logd2(spu_sub(oned, xabs))); - fresult = spu_mul(fresult, onehalfd); - - - /* - * Taylor Series - */ - mresult = spu_madd(xsqu, spu_splats(SMD_DP_ATANH_MAC17), spu_splats(SMD_DP_ATANH_MAC15)); - mresult = spu_madd(xsqu, mresult, spu_splats(SMD_DP_ATANH_MAC13)); - mresult = spu_madd(xsqu, mresult, spu_splats(SMD_DP_ATANH_MAC11)); - mresult = spu_madd(xsqu, mresult, spu_splats(SMD_DP_ATANH_MAC09)); - mresult = spu_madd(xsqu, mresult, spu_splats(SMD_DP_ATANH_MAC07)); - mresult = spu_madd(xsqu, mresult, spu_splats(SMD_DP_ATANH_MAC05)); - mresult = spu_madd(xsqu, mresult, spu_splats(SMD_DP_ATANH_MAC03)); - mresult = spu_madd(xsqu, mresult, spu_splats(SMD_DP_ATANH_MAC01)); - mresult = spu_mul(xabs, mresult); - - - /* - * Choose between series and formula - */ - use_form = spu_cmpgt(xf, switch_approx); - result = spu_sel(mresult, fresult, (vec_ullong2)use_form); - - /* - * Spec says results are undefined for |x| > 1, so - * no boundary tests needed here. - */ - - /* Restore sign - atanh is an anti-symmetric */ - result = spu_sel(result, x, (vec_ullong2)sign_mask); - - return result; -} - -#endif /* _ATANHD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/atanhf.h b/newlib/libm/machine/spu/headers/atanhf.h deleted file mode 100644 index f838c9f47..000000000 --- a/newlib/libm/machine/spu/headers/atanhf.h +++ /dev/null @@ -1,18 +0,0 @@ -#include "headers/atanhf4.h" -#include "headers/dom_chkf_negone_one.h" - -static __inline float _atanhf(float x) -{ - float res; - vector float vx; - - vx = spu_splats(x); - res = spu_extract(_atanhf4(vx), 0); -#ifndef _IEEE_LIBM - /* - * Domain error if not in the interval [-1, +1] - */ - dom_chkf_negone_one(vx); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/atanhf4.h b/newlib/libm/machine/spu/headers/atanhf4.h deleted file mode 100644 index b9d14b42d..000000000 --- a/newlib/libm/machine/spu/headers/atanhf4.h +++ /dev/null @@ -1,146 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ATANHF4_H_ -#define _ATANHF4_H_ 1 - -#include <spu_intrinsics.h> -#include <math.h> -#include "logf4.h" - -/* - * FUNCTION - * vector float _atanhf4(vector float x) - * - * DESCRIPTION - * The atanhf4 function returns a vector containing the hyperbolic - * arctangents of the corresponding elements of the input vector. - * - * We are using the formula: - * atanh x = 1/2 * ln((1 + x)/(1 - x)) = 1/2 * [ln(1+x) - ln(1-x)] - * and the anti-symmetry of atanh. - * - * For x near 0, we use the Taylor series: - * atanh x = x + x^3/3 + x^5/5 + x^7/7 + x^9/9 + ... - * - * Special Cases: - * - atanh(1) = HUGE_VALF - * - atanh(-1) = -HUGE_VALF - * - The result is undefined for x outside of the domain [-1,1]. - * - */ - -/* - * Maclaurin Series Coefficients - * for x near 0. - */ -#define SDM_SP_ATANH_MAC01 1.000000000000000000000000000000E0 -#define SDM_SP_ATANH_MAC03 3.333333333333333333333333333333E-1 -#define SDM_SP_ATANH_MAC05 2.000000000000000000000000000000E-1 -#define SDM_SP_ATANH_MAC07 1.428571428571428571428571428571E-1 -#if 0 -#define SDM_SP_ATANH_MAC09 1.111111111111111111111111111111E-1 -#define SDM_SP_ATANH_MAC11 9.090909090909090909090909090909E-2 -#define SDM_SP_ATANH_MAC13 7.692307692307692307692307692308E-2 -#define SDM_SP_ATANH_MAC15 6.666666666666666666666666666667E-2 -#endif - - -static __inline vector float _atanhf4(vector float x) -{ - vec_uint4 one = spu_splats(1u); - vec_float4 sign_mask = spu_splats(-0.0f); - vec_float4 onef = spu_splats(1.0f); - vec_float4 onehalff = spu_splats(0.5f); - vec_float4 huge = spu_splats(HUGE_VALF); - vec_float4 result, fresult, mresult;; - vec_float4 xabs, xsqu; - /* Where we switch from maclaurin to formula */ - vec_float4 switch_approx = spu_splats(0.165f); - vec_uint4 use_form; - - xabs = spu_andc(x, sign_mask); - xsqu = spu_mul(x, x); - - /* - * Formula: - * atanh = 1/2 * ln((1 + x)/(1 - x)) = 1/2 * [ln(1+x) - ln(1-x)] - */ - fresult = spu_sub(_logf4(spu_add(onef, xabs)), _logf4(spu_sub(onef, xabs))); - fresult = spu_mul(fresult, onehalff); - - - /* - * Taylor Series - */ - mresult = spu_madd(xsqu, spu_splats((float)SDM_SP_ATANH_MAC07), spu_splats((float)SDM_SP_ATANH_MAC05)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)SDM_SP_ATANH_MAC03)); - mresult = spu_madd(xsqu, mresult, spu_splats((float)SDM_SP_ATANH_MAC01)); - mresult = spu_mul(xabs, mresult); - - /* - * Choose between series and formula - */ - use_form = spu_cmpgt(xabs, switch_approx); - result = spu_sel(mresult, fresult, use_form); - - /* - * Correct for accumulated truncation error. Currently reduces rms of - * absolute error by about 50% - */ - result = (vec_float4)spu_add((vec_uint4)result, spu_and(one, spu_cmpgt(xabs, spu_splats(0.0f)))); - result = (vec_float4)spu_add((vec_uint4)result, spu_and(one, spu_cmpgt(xabs, spu_splats(0.25f)))); - - /* - * Check Boundary Conditions - */ - result = spu_sel(result, huge, spu_cmpeq(xabs, onef)); - - /* - * Spec says |x| > 1, result is undefined, so no additional - * boundary checks needed. - */ - - /* Preserve sign - atanh is anti-symmetric */ - result = spu_sel(result, x, (vec_uint4)sign_mask); - - return result; -} - -#endif /* _ATANHF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/cbrt.h b/newlib/libm/machine/spu/headers/cbrt.h deleted file mode 100644 index 896b4e1bf..000000000 --- a/newlib/libm/machine/spu/headers/cbrt.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef _CBRT_H_ -#define _CBRT_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static double cbrt_factors[5] = { - 0.629960524947436484311, /* 2^(-2/3) */ - 0.793700525984099680699, /* 2^(-1/3) */ - 1.0, /* 2^(0) */ - 1.259921049894873164666, /* 2^(1/3) */ - 1.587401051968199583441 /* 2^(2/3) */ -}; - -/* Compute the cube root of x to double precision. - */ - -static __inline double _cbrt(double x) -{ - vec_int4 exp, bias; - vec_uint4 e_div_3, e_mod_3; - vec_float4 bf, inv_bf; - vec_float4 onef = VEC_SPLAT_F32(1.0f); - vec_ullong2 mask; - vec_ullong2 mant_mask = VEC_SPLAT_U64(0xFFFFFFFFFFFFFULL); - vec_double2 one = VEC_SPLAT_F64(1.0); - vec_double2 two = VEC_SPLAT_F64(2.0); - vec_double2 half = VEC_SPLAT_F64(0.5); - /* Polynomial coefficients */ - vec_double2 c0 = VEC_SPLAT_F64(0.354895765043919860); - vec_double2 c1 = VEC_SPLAT_F64(1.50819193781584896); - vec_double2 c2 = VEC_SPLAT_F64(-2.11499494167371287); - vec_double2 c3 = VEC_SPLAT_F64(2.44693122563534430); - vec_double2 c4 = VEC_SPLAT_F64(-1.83469277483613086); - vec_double2 c5 = VEC_SPLAT_F64(0.784932344976639262); - vec_double2 c6 = VEC_SPLAT_F64(0.145263899385486377); - vec_double2 in, out, mant, u, u3, ym, a, b, factor, inv_b; - - in = spu_promote(x, 0); - - /* Normalize the mantissa (fraction part) into the range [0.5, 1.0) and - * extract the exponent. - */ - mant = spu_sel(half, in, mant_mask); - exp = spu_and(spu_rlmask((vec_int4)in, -20), 0x7FF); - - /* Generate mask used to zero result if the exponent is zero (ie, <in> is - * either zero or a denorm - */ - mask = (vec_ullong2)spu_cmpeq(exp, 0); - mask = spu_shuffle(mask, mask, VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3,8,9,10,11,8,9,10,11)); - exp = spu_add(exp, -1022); - - u = spu_madd(mant, spu_madd(mant, spu_madd(mant, spu_madd(mant, spu_madd(mant, spu_nmsub(mant, c6, c5), c4), c3), c2), c1), c0); - u3 = spu_mul(spu_mul(u, u), u); - - /* Compute: e_div_3 = exp/3 - * - * Fetch: factor = factor[2+exp%3] - * - * The factors array contains 5 values: 2^(-2/3), 2^(-1/3), 2^0, 2^(1/3), - * 2^(2/3), 2^1. - * The fetch is done using shuffle bytes so that is can easily be extended - * to support SIMD compution. - */ - bias = spu_rlmask(spu_rlmaska(exp, -15), -16); - e_div_3 = (vec_uint4)spu_rlmaska(spu_madd((vec_short8)exp, VEC_SPLAT_S16(0x5556), bias), -16); - - e_mod_3 = (vec_uint4)spu_sub((vec_int4)(exp), spu_mulo((vec_short8)e_div_3, VEC_SPLAT_S16(3))); - - factor = spu_promote(cbrt_factors[2+spu_extract(e_mod_3, 0)], 0); - - /* Compute the estimated mantissa cube root (ym) equals: - * ym = (u * factor * (2.0 * mant + u3)) / (2.0 * u3 + mant); - */ - a = spu_mul(spu_mul(factor, u), spu_madd(two, mant, u3)); - b = spu_madd(two, u3, mant); - - bf = spu_roundtf(b); - inv_bf = spu_re(bf); - inv_bf = spu_madd(spu_nmsub(bf, inv_bf, onef), inv_bf, inv_bf); - - inv_b = spu_extend(inv_bf); - inv_b = spu_madd(spu_nmsub(b, inv_b, one), inv_b, inv_b); - - ym = spu_mul(a, inv_b); - ym = spu_madd(spu_nmsub(b, ym, a), inv_b, ym); - - /* Merge sign, computed exponent, and computed mantissa. - */ - exp = spu_rl(spu_add((vec_int4)e_div_3, 1023), 20); - exp = spu_andc(exp, (vec_int4)mant_mask); - out = spu_sel((vec_double2)exp, in, VEC_SPLAT_U64(0x8000000000000000ULL)); - out = spu_mul(out, ym); - - out = spu_andc(out, (vec_double2)mask); - - return (spu_extract(out, 0)); -} - -#endif /* _CBRT_H_ */ diff --git a/newlib/libm/machine/spu/headers/cbrtf.h b/newlib/libm/machine/spu/headers/cbrtf.h deleted file mode 100644 index 2fd95af01..000000000 --- a/newlib/libm/machine/spu/headers/cbrtf.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _CBRTF_H_ -#define _CBRTF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static double cbrt_factors[5] = { - 0.629960524947436484311, /* 2^(-2/3) */ - 0.793700525984099680699, /* 2^(-1/3) */ - 1.0, /* 2^(0) */ - 1.259921049894873164666, /* 2^(1/3) */ - 1.587401051968199583441 /* 2^(2/3) */ -}; - -/* Compute the cube root of the floating point input x. - */ - -static __inline float _cbrtf(float x) -{ - vec_int4 exp, bias; - vec_uint4 mask, e_div_3, e_mod_3; - vec_uint4 mant_mask = VEC_SPLAT_U32(0x7FFFFF); - vec_float4 in; - vec_float4 half = VEC_SPLAT_F32(0.5f); - vec_float4 onef = VEC_SPLAT_F32(1.0f); - vec_float4 out, mant, ym, bf, inv_bf; - vec_double2 two = VEC_SPLAT_F64(2.0); - /* Polynomial coefficients */ - vec_double2 c2 = VEC_SPLAT_F64(0.191502161678719066); - vec_double2 c1 = VEC_SPLAT_F64(0.697570460207922770); - vec_double2 c0 = VEC_SPLAT_F64(0.492659620528969547); - vec_double2 a0, b0, inv_b0, ym0; - vec_double2 mant0, u0, u0_3, factor0; - - in = spu_promote(x, 0); - - /* Normalize the mantissa (fraction part) into the range [0.5, 1.0) and - * extract the exponent. - */ - mant = spu_sel(half, in, mant_mask); - exp = spu_and(spu_rlmask((vec_int4)in, -23), 0xFF); - - /* Generate mask used to zero result if the exponent is zero (ie, in is either - * zero or a denorm - */ - mask = spu_cmpeq(exp, 0); - exp = spu_add(exp, -126); - - mant0 = spu_extend(mant); - - u0 = spu_madd(mant0, spu_nmsub(mant0, c2, c1), c0); - u0_3 = spu_mul(spu_mul(u0, u0), u0); - - /* Compute: e_div_3 = exp/3 - * - * Fetch: factor = factor[2+exp%3] - * - * The factors array contains 5 values: 2^(-2/3), 2^(-1/3), 2^0, 2^(1/3), 2^(2/3), 2^1. - */ - bias = spu_rlmask(spu_rlmaska(exp, -15), -16); - e_div_3 = (vec_uint4)spu_rlmaska(spu_madd((vec_short8)exp, VEC_SPLAT_S16(0x5556), bias), -16); - - e_mod_3 = (vec_uint4)spu_sub((vec_int4)(exp), spu_mulo((vec_short8)e_div_3, VEC_SPLAT_S16(3))); - - e_mod_3 = spu_add(e_mod_3, 2); - - factor0 = spu_promote(cbrt_factors[spu_extract(e_mod_3, 0)], 0); - - /* Compute the estimated mantissa cube root (ym) equals: - * ym = (u * factor * (2.0 * mant + u3)) / (2.0 * u3 + mant); - */ - a0 = spu_mul(spu_mul(factor0, u0), spu_madd(two, mant0, u0_3)); - b0 = spu_madd(two, u0_3, mant0); - - bf = spu_roundtf(b0); - - inv_bf = spu_re(bf); - inv_bf = spu_madd(spu_nmsub(bf, inv_bf, onef), inv_bf, inv_bf); - - inv_b0 = spu_extend(inv_bf); - - ym0 = spu_mul(a0, inv_b0); - ym0 = spu_madd(spu_nmsub(b0, ym0, a0), inv_b0, ym0); - - ym = spu_roundtf(ym0); - - /* Merge sign, computed exponent, and computed mantissa. - */ - exp = spu_rl(spu_add((vec_int4)e_div_3, 127), 23); - out = spu_sel((vec_float4)exp, in, VEC_SPLAT_U32(0x80000000)); - out = spu_mul(out, ym); - - out = spu_andc(out, (vec_float4)mask); - - return (spu_extract(out, 0)); -} - -#endif /* _CBRTF_H_ */ diff --git a/newlib/libm/machine/spu/headers/ceil.h b/newlib/libm/machine/spu/headers/ceil.h deleted file mode 100644 index b51f26bcd..000000000 --- a/newlib/libm/machine/spu/headers/ceil.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _CEIL_H_ -#define _CEIL_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input upwards to the nearest integer. - */ - - -static __inline double _ceil(double x) -{ - vec_uchar16 swap_words = VEC_LITERAL(vec_uchar16, 4,5,6,7, 0,1,2,3, 12,13,14,15, 8,9,10,11); - vec_uchar16 splat_hi = VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11); - vec_uint4 one = VEC_LITERAL(vec_uint4, 0, 1, 0, 1); - vec_int4 exp, shift; - vec_uint4 mask, mask_1, frac_mask, addend, insert, pos, equal0; - vec_ullong2 sign = VEC_SPLAT_U64(0x8000000000000000ULL); - vec_double2 in, in_hi, out; - vec_double2 one_d = VEC_SPLAT_F64(1.0); - - in = spu_promote(x, 0); - - /* This function generates the following component - * based upon the inputs. - * - * mask = bits of the input that need to be replaced. - * insert = value of the bits that need to be replaced - * addend = value to be added to perform function. - * - * These are applied as follows:. - * - * out = ((in & mask) | insert) + addend - */ - in_hi = spu_shuffle(in, in, splat_hi); - pos = spu_cmpgt((vec_int4)in_hi, -1); - exp = spu_and(spu_rlmask((vec_int4)in_hi, -20), 0x7FF); - shift = spu_sub(VEC_LITERAL(vec_int4, 1023, 1043, 1023, 1043), exp); - - /* clamp shift to the range 0 to -31. - */ - shift = spu_sel(VEC_SPLAT_S32(-32), spu_andc(shift, (vec_int4)spu_cmpgt(shift, 0)), spu_cmpgt(shift, -32)); - - frac_mask = spu_rlmask(VEC_LITERAL(vec_uint4, 0xFFFFF, -1, 0xFFFFF, -1), shift); - mask = spu_orc(frac_mask, spu_cmpgt(exp, 0x3FE)); - - /* addend = ((in & mask) && (in >= 0)) ? mask+1 : 0 - */ - mask_1 = spu_addx(mask, one, spu_rlqwbyte(spu_genc(mask, one), 4)); - - equal0 = spu_cmpeq(spu_and((vec_uint4)in, mask), 0); - addend = spu_andc(spu_and(mask_1, pos), spu_and(equal0, spu_shuffle(equal0, equal0, swap_words))); - - insert = spu_andc(spu_and(pos, (vec_uint4)one_d), - spu_cmpgt((vec_uint4)spu_add(exp, -1), 1022)); - - in = spu_sel(in, (vec_double2)insert, spu_andc((vec_ullong2)mask, sign)); - out = (vec_double2)spu_addx((vec_uint4)in, addend, spu_rlqwbyte(spu_genc((vec_uint4)in, addend), 4)); - - return (spu_extract(out, 0)); -} - -#endif /* _CEIL_H */ diff --git a/newlib/libm/machine/spu/headers/ceilf.h b/newlib/libm/machine/spu/headers/ceilf.h deleted file mode 100644 index deb900f4e..000000000 --- a/newlib/libm/machine/spu/headers/ceilf.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _CEILF_H_ -#define _CEILF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* - * FUNCTION - * float _ceilf(float value) - * - * DESCRIPTION - * The _ceilf routine round the input value "value" upwards to the - * nearest integer returning the result as a float. Two forms of the - * ceiling function are provided - full range and limited (integer) - * range. - * - * The full range form (default) provides ceiling computation on - * all IEEE floating point values. The ceiling of NANs remain NANs. - * The ceiling of denorms results in zero. - * - * The limited range form (selected by defining CEIL_INTEGER_RANGE) - * compute ths ceiling of all floating-point values in the 32-bit - * signed integer range. Values outside this range get clamped. - */ - -static __inline float _ceilf(float value) -{ -#ifdef CEIL_INTEGER_RANGE - /* 32-BIT INTEGER DYNAMIC RANGE - */ - union { - float f; - signed int i; - unsigned int ui; - } bias; - - bias.f = value; - - /* If positive, bias the input value to truncate towards - * positive infinity, instead of zero. - */ - bias.ui = ~(unsigned int)(bias.i >> 31) & 0x3F7FFFFF; - value += bias.f; - - /* Remove fraction bits by casting to an integer and back - * to a floating-point value. - */ - return ((float)((int)value)); - -#else /* !CEIL_INTEGER_RANGE */ - /* FULL FLOATING-POINT RANGE - */ - vec_int4 exp, shift; - vec_uint4 mask, frac_mask, addend, insert, pos; - vec_float4 in, out; - vec_float4 one = VEC_SPLAT_F32(1.0f); - - in = spu_promote(value, 0); - - /* This function generates the following component - * based upon the inputs. - * - * mask = bits of the input that need to be replaced. - * insert = value of the bits that need to be replaced - * addend = value to be added to perform function. - * - * These are applied as follows:. - * - * out = ((in & mask) | insert) + addend - */ - pos = spu_cmpgt((vec_int4)in, -1); - exp = spu_and(spu_rlmask((vec_int4)in, -23), 0xFF); - - shift = spu_sub(127, exp); - - frac_mask = spu_and(spu_rlmask(VEC_SPLAT_U32(0x7FFFFF), shift), - spu_cmpgt((vec_int4)shift, -31)); - - mask = spu_orc(frac_mask, spu_cmpgt(exp, 126)); - - addend = spu_andc(spu_and(spu_add(mask, 1), pos), spu_cmpeq(spu_and((vec_uint4)in, mask), 0)); - - insert = spu_andc(spu_and(pos, (vec_uint4)one), - spu_cmpgt((vec_uint4)spu_add(exp, -1), 126)); - - out = (vec_float4)spu_add(spu_sel((vec_uint4)in, insert, mask), addend); - - return (spu_extract(out, 0)); -#endif /* CEIL_INTEGER_RANGE */ -} -#endif /* _CEILF_H_ */ diff --git a/newlib/libm/machine/spu/headers/copysign.h b/newlib/libm/machine/spu/headers/copysign.h deleted file mode 100644 index ba1c64a5c..000000000 --- a/newlib/libm/machine/spu/headers/copysign.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _COPYSIGN_H_ -#define _COPYSIGN_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* copysign - produces a value with the magnitude of x and the - * sign of y. - */ -static __inline double _copysign(double x, double y) -{ - return (spu_extract(spu_sel(spu_promote(x, 0), spu_promote(y, 0), - VEC_SPLAT_U64(0x8000000000000000ULL)), 0)); -} - -#endif /* _COPYSIGN_H_ */ diff --git a/newlib/libm/machine/spu/headers/copysignf.h b/newlib/libm/machine/spu/headers/copysignf.h deleted file mode 100644 index 490cf0f02..000000000 --- a/newlib/libm/machine/spu/headers/copysignf.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _COPYSIGNF_H_ -#define _COPYSIGNF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* copysign - produces a value with the magnitude of x and the - * sign of y. - */ -static __inline float _copysignf(float x, float y) -{ - return (spu_extract(spu_sel(spu_promote(x, 0), spu_promote(y, 0), - VEC_SPLAT_U32(0x80000000)), 0)); -} - -#endif /* _COPYSIGNF_H_ */ diff --git a/newlib/libm/machine/spu/headers/cos.h b/newlib/libm/machine/spu/headers/cos.h deleted file mode 100644 index b72086233..000000000 --- a/newlib/libm/machine/spu/headers/cos.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/cosd2.h" - -static __inline double _cos(double angle) -{ - return spu_extract(_cosd2(spu_promote(angle, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/cos_sin.h b/newlib/libm/machine/spu/headers/cos_sin.h deleted file mode 100644 index f0f6910ce..000000000 --- a/newlib/libm/machine/spu/headers/cos_sin.h +++ /dev/null @@ -1,204 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _COS_SIN_H_ -#define _COS_SIN_H_ 1 - -#define M_PI_OVER_4_HI_32 0x3fe921fb - -#define M_PI_OVER_4 0.78539816339744827900 -#define M_FOUR_OVER_PI 1.27323954478442180616 - -#define M_PI_OVER_2 1.57079632679489655800 -#define M_PI_OVER_2_HI 1.57079632673412561417 -#define M_PI_OVER_2_LO 0.0000000000607710050650619224932 - -#define M_PI_OVER_2F_HI 1.570312500000000000 -#define M_PI_OVER_2F_LO 0.000483826794896558 - -/* The following coefficients correspond to the Taylor series - * coefficients for cos and sin. - */ -#define COS_14 -0.00000000001138218794258068723867 -#define COS_12 0.000000002087614008917893178252 -#define COS_10 -0.0000002755731724204127572108 -#define COS_08 0.00002480158729870839541888 -#define COS_06 -0.001388888888888735934799 -#define COS_04 0.04166666666666666534980 -#define COS_02 -0.5000000000000000000000 -#define COS_00 1.0 - -#define SIN_15 -0.00000000000076471637318198164759 -#define SIN_13 0.00000000016059043836821614599 -#define SIN_11 -0.000000025052108385441718775 -#define SIN_09 0.0000027557319223985890653 -#define SIN_07 -0.0001984126984126984127 -#define SIN_05 0.008333333333333333333 -#define SIN_03 -0.16666666666666666666 -#define SIN_01 1.0 - - -/* Compute the following for each floating point element of x. - * x = fmod(x, PI/4); - * ix = (int)x * PI/4; - * This allows one to compute cos / sin over the limited range - * and select the sign and correct result based upon the octant - * of the original angle (as defined by the ix result). - * - * Expected Inputs Types: - * x = vec_float4 - * ix = vec_int4 - */ -#define MOD_PI_OVER_FOUR_F(_x, _ix) { \ - vec_float4 fx; \ - \ - _ix = spu_convts(spu_mul(_x, spu_splats((float)M_FOUR_OVER_PI)), 0); \ - _ix = spu_add(_ix, spu_add(spu_rlmaska((vec_int4)_x, -31), 1)); \ - \ - fx = spu_convtf(spu_rlmaska(_ix, -1), 0); \ - _x = spu_nmsub(fx, spu_splats((float)M_PI_OVER_2F_HI), _x); \ - _x = spu_nmsub(fx, spu_splats((float)M_PI_OVER_2F_LO), _x); \ - } - -/* Double precision MOD_PI_OVER_FOUR - * - * Expected Inputs Types: - * x = vec_double2 - * ix = vec_int4 - */ -#define MOD_PI_OVER_FOUR(_x, _ix) { \ - vec_float4 fx; \ - vec_double2 dix; \ - \ - fx = spu_roundtf(spu_mul(_x, spu_splats(M_FOUR_OVER_PI))); \ - _ix = spu_convts(fx, 0); \ - _ix = spu_add(_ix, spu_add(spu_rlmaska((vec_int4)fx, -31), 1)); \ - \ - dix = spu_extend(spu_convtf(spu_rlmaska(_ix, -1), 0)); \ - _x = spu_nmsub(spu_splats(M_PI_OVER_2_HI), dix, _x); \ - _x = spu_nmsub(spu_splats(M_PI_OVER_2_LO), dix, _x); \ - } - - -/* Compute the cos(x) and sin(x) for the range reduced angle x. - * In order to compute these trig functions to full single precision - * accuracy, we solve the Taylor series. - * - * c = cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + x^8/8! - x^10/10! - * s = sin(x) = x - x^3/4! + x^5/5! - x^7/7! + x^9/9! - x^11/11! - * - * Expected Inputs Types: - * x = vec_float4 - * c = vec_float4 - * s = vec_float4 - */ - -#define COMPUTE_COS_SIN_F(_x, _c, _s) { \ - vec_float4 x2, x4, x6; \ - vec_float4 cos_hi, cos_lo; \ - vec_float4 sin_hi, sin_lo; \ - \ - x2 = spu_mul(_x, _x); \ - x4 = spu_mul(x2, x2); \ - x6 = spu_mul(x2, x4); \ - \ - cos_hi = spu_madd(spu_splats((float)COS_10), x2, spu_splats((float)COS_08)); \ - cos_lo = spu_madd(spu_splats((float)COS_04), x2, spu_splats((float)COS_02)); \ - cos_hi = spu_madd(cos_hi, x2, spu_splats((float)COS_06)); \ - cos_lo = spu_madd(cos_lo, x2, spu_splats((float)COS_00)); \ - _c = spu_madd(cos_hi, x6, cos_lo); \ - \ - sin_hi = spu_madd(spu_splats((float)SIN_11), x2, spu_splats((float)SIN_09)); \ - sin_lo = spu_madd(spu_splats((float)SIN_05), x2, spu_splats((float)SIN_03)); \ - sin_hi = spu_madd(sin_hi, x2, spu_splats((float)SIN_07)); \ - sin_lo = spu_madd(sin_lo, x2, spu_splats((float)SIN_01)); \ - _s = spu_madd(sin_hi, x6, sin_lo); \ - _s = spu_mul(_s, _x); \ - } - - -/* Compute the cos(x) and sin(x) for the range reduced angle x. - * This version computes the cosine and sine to double precision - * accuracy using the Taylor series: - * - * c = cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + x^8/8! - x^10/10! + x^12/12! - x^14/14! - * s = sin(x) = x - x^3/4! + x^5/5! - x^7/7! + x^9/9! - x^11/11! + x^13/13! - x^15/15! - * - * Expected Inputs Types: - * x = vec_double2 - * c = vec_double2 - * s = vec_double2 - */ - -#define COMPUTE_COS_SIN(_x, _c, _s) { \ - vec_double2 x2, x4, x8; \ - vec_double2 cos_hi, cos_lo; \ - vec_double2 sin_hi, sin_lo; \ - \ - x2 = spu_mul(_x, _x); \ - x4 = spu_mul(x2, x2); \ - x8 = spu_mul(x4, x4); \ - \ - cos_hi = spu_madd(spu_splats(COS_14), x2, spu_splats(COS_12)); \ - cos_lo = spu_madd(spu_splats(COS_06), x2, spu_splats(COS_04)); \ - cos_hi = spu_madd(cos_hi, x2, spu_splats(COS_10)); \ - cos_lo = spu_madd(cos_lo, x2, spu_splats(COS_02)); \ - cos_hi = spu_madd(cos_hi, x2, spu_splats(COS_08)); \ - cos_lo = spu_madd(cos_lo, x2, spu_splats(COS_00)); \ - _c = spu_madd(cos_hi, x8, cos_lo); \ - \ - sin_hi = spu_madd(spu_splats(SIN_15), x2, spu_splats(SIN_13)); \ - sin_lo = spu_madd(spu_splats(SIN_07), x2, spu_splats(SIN_05)); \ - sin_hi = spu_madd(sin_hi, x2, spu_splats(SIN_11)); \ - sin_lo = spu_madd(sin_lo, x2, spu_splats(SIN_03)); \ - sin_hi = spu_madd(sin_hi, x2, spu_splats(SIN_09)); \ - sin_lo = spu_madd(sin_lo, x2, spu_splats(SIN_01)); \ - _s = spu_madd(sin_hi, x8, sin_lo); \ - _s = spu_mul(_s, _x); \ - } - - - - -#endif /* _COS_SIN_H_ */ -#endif /* __SPU__ */ - - diff --git a/newlib/libm/machine/spu/headers/cosd2.h b/newlib/libm/machine/spu/headers/cosd2.h deleted file mode 100644 index db33a1ddb..000000000 --- a/newlib/libm/machine/spu/headers/cosd2.h +++ /dev/null @@ -1,97 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _COSD2_H_ -#define _COSD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "cos_sin.h" - -/* - * FUNCTION - * vector double _cosd2(vector double angle) - * - * DESCRIPTION - * _cosd2 computes the cosine of a vector of angles (expressed - * in radians) to an accuracy of a double precision floating point. - */ -static __inline vector double _cosd2(vector double angle) -{ - vec_int4 octant; - vec_ullong2 select; - vec_double2 cos, sin; - vec_double2 toggle_sign, answer; - - /* Range reduce the input angle x into the range -PI/4 to PI/4 - * by performing simple modulus. - */ - MOD_PI_OVER_FOUR(angle, octant); - - /* Compute the cosine and sine of the range reduced input. - */ - COMPUTE_COS_SIN(angle, cos, sin); - - /* For each SIMD element, select which result (cos or sin) to use - * with a sign correction depending upon the octant of the original - * angle (Maclaurin series). - * - * octants angles select sign toggle - * ------- ------------ ------ ----------- - * 0 0 to 45 cos no - * 1,2 45 to 135 sin yes - * 3,4 135 to 225 cos yes - * 5,6 225 to 315 sin no - * 7 315 to 360 cos no - */ - octant = spu_shuffle(octant, octant, ((vec_uchar16) { 0,1, 2, 3, 0,1, 2, 3, 8,9,10,11, 8,9,10,11 })); - - toggle_sign = (vec_double2)spu_sl(spu_and(spu_add(octant, 2), 4), ((vec_uint4) { 29,32,29,32 })); - select = (vec_ullong2)spu_cmpeq(spu_and(octant, 2), 0); - - answer = spu_xor(spu_sel(sin, cos, select), toggle_sign); - - return (answer); -} - -#endif /* _COSD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/cosf.h b/newlib/libm/machine/spu/headers/cosf.h deleted file mode 100644 index 49e6f716f..000000000 --- a/newlib/libm/machine/spu/headers/cosf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/cosf4.h" - -static __inline float _cosf(float angle) -{ - return spu_extract(_cosf4(spu_promote(angle, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/cosf4.h b/newlib/libm/machine/spu/headers/cosf4.h deleted file mode 100644 index 062ec12ee..000000000 --- a/newlib/libm/machine/spu/headers/cosf4.h +++ /dev/null @@ -1,99 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _COSF4_H_ -#define _COSF4_H_ 1 - - -#include <spu_intrinsics.h> - -#include "cos_sin.h" - -/* - * FUNCTION - * vector float _cosf4(vector float angle) - * - * DESCRIPTION - * The _cosf4 function computes the cosine of a vector of angles - * (expressed in radians) to an accuracy of single precision floating - * point. - * - */ -static __inline vector float _cosf4(vector float angle) -{ - vec_int4 octant; - vec_uint4 select; - vec_float4 cos, sin; - vec_float4 toggle_sign, answer; - - /* Range reduce the input angle x into the range -PI/4 to PI/4 - * by performing simple modulus. - */ - MOD_PI_OVER_FOUR_F(angle, octant); - - /* Compute the cosine and sine of the range reduced input. - */ - COMPUTE_COS_SIN_F(angle, cos, sin); - - /* For each SIMD element, select which result (cos or sin) to use - * with a sign correction depending upon the octant of the original - * angle (Maclaurin series). - * - * octants angles select sign toggle - * ------- ------------ ------ ----------- - * 0 0 to 45 cos no - * 1,2 45 to 135 sin yes - * 3,4 135 to 225 cos yes - * 5,6 225 to 315 sin no - * 7 315 to 360 cos no - */ - toggle_sign = (vec_float4)spu_sl(spu_and(spu_add(octant, 2), 4), 29); - select = spu_cmpeq(spu_and(octant, 2), 0); - - answer = spu_xor(spu_sel(sin, cos, select), toggle_sign); - - return (answer); - -} - -#endif /* _COSF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/cosh.h b/newlib/libm/machine/spu/headers/cosh.h deleted file mode 100644 index 7b8875a08..000000000 --- a/newlib/libm/machine/spu/headers/cosh.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/coshd2.h" - -static __inline double _cosh(double x) -{ - return spu_extract(_coshd2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/coshd2.h b/newlib/libm/machine/spu/headers/coshd2.h deleted file mode 100644 index f35f8079c..000000000 --- a/newlib/libm/machine/spu/headers/coshd2.h +++ /dev/null @@ -1,115 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _COSHD2_H_ -#define _COSHD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "expd2.h" -#include "recipd2.h" - -/* - * FUNCTION - * vector float _coshd2(vector double angle) - * - * DESCRIPTION - * _coshd2 computes the hyperbolic cosines of a vector of angles - * (expressed in radians) to an accuracy of a double precision - * floating point. - */ -static __inline vector double _coshd2(vector double x) -{ - - // Coefficents for the power series - vec_double2 f02 = spu_splats(5.00000000000000000000E-1); // 1/(2!) - vec_double2 f04 = spu_splats(4.16666666666666666667E-2); // 1/(4!) - vec_double2 f06 = spu_splats(1.38888888888888888889E-3); // 1/(6!) - vec_double2 f08 = spu_splats(2.48015873015873015873E-5); // 1/(8!) - vec_double2 f10 = spu_splats(2.75573192239858906526E-7); // 1/(10!) - vec_double2 f12 = spu_splats(2.08767569878680989792E-9); // 1/(12!) - vec_double2 f14 = spu_splats(1.14707455977297247139E-11); // 1/(14!) - vec_double2 f16 = spu_splats(4.77947733238738529744E-14); // 1/(16!) - vec_double2 f18 = spu_splats(1.56192069685862264622E-16); // 1/(18!) - vec_double2 f20 = spu_splats(4.11031762331216485848E-19); // 1/(20!) - vec_double2 f22 = spu_splats(8.89679139245057328675E-22); // 1/(22!) - - // Check if the input is within the range [ -1.0 ... 1.0 ] - // If it is, we want to use the power series, otherwise - // we want to use the 0.5 * (e^x + e^-x) - - // round to float, check if within range. Results will be in - // slots 0 and 2, so we rotate right 4 bytes, and "or" with ourself - // to produce 64 bits of all 1's or 0's. - vec_uint4 use_exp = spu_cmpabsgt(spu_roundtf(x),spu_splats(1.0f)); - use_exp = spu_or(use_exp,spu_rlmaskqwbyte(use_exp,-4)); - - - // Perform the calculation of the power series using Horner's method - vec_double2 result; - vec_double2 x2 = spu_mul(x,x); - result = spu_madd(x2,f22,f20); - result = spu_madd(x2,result,f18); - result = spu_madd(x2,result,f16); - result = spu_madd(x2,result,f14); - result = spu_madd(x2,result,f12); - result = spu_madd(x2,result,f10); - result = spu_madd(x2,result,f08); - result = spu_madd(x2,result,f06); - result = spu_madd(x2,result,f04); - result = spu_madd(x2,result,f02); - result = spu_madd(x2,result,spu_splats(1.0)); - - - // Perform calculation as a function of 0.5 * (e^x + e^-x) - vec_double2 ex = _expd2(x); - vec_double2 ex_inv = _recipd2(ex); - - vec_double2 r2= spu_add(ex,ex_inv); - r2 = spu_mul(r2,f02); // we can reuse f02 here - - - // Select either the power series or exp version - result = spu_sel(result,r2,(vec_ullong2)use_exp); - - return result; - -} - -#endif /* _COSHD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/coshf.h b/newlib/libm/machine/spu/headers/coshf.h deleted file mode 100644 index ae13482ba..000000000 --- a/newlib/libm/machine/spu/headers/coshf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/coshf4.h" - -static __inline float _coshf(float x) -{ - return spu_extract(_coshf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/coshf4.h b/newlib/libm/machine/spu/headers/coshf4.h deleted file mode 100644 index 453fad4a5..000000000 --- a/newlib/libm/machine/spu/headers/coshf4.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _COSHF4_H_ -#define _COSHF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "expf4.h" -#include "recipf4.h" - - -/* - * FUNCTION - * vector float _coshf4(vector float x) - * - * DESCRIPTION - * The _coshf4 function computes the hyperbolic cosines of a vector of - * angles (expressed in radians) to an accuracy of a single precision - * floating point. - * - */ -static __inline vector float _coshf4(vector float x) -{ - // 1.0000 (above this number, use sinh(x) = 0.5 * (e^x - e^-x) - vec_uint4 threshold = (vec_uint4)spu_splats(0x3F800000); - - vec_uint4 sign_mask = (vec_uint4)spu_splats(0x80000000); - - // Coefficents for the Taylor series - vec_float4 f02 = spu_splats(5.0000000000000000E-1f); // 1/2! - vec_float4 f04 = spu_splats(4.1666666666666667E-2f); // 1/4! - vec_float4 f06 = spu_splats(1.3888888888888889E-3f); // 1/6! - vec_float4 f08 = spu_splats(2.4801587301587302E-5f); // 1/8! - vec_float4 f10 = spu_splats(2.7557319223985891E-7f); // 1/10! - vec_float4 f12 = spu_splats(2.0876756987868099E-9f); // 1/12! - - // Perform the calculation as a Taylor series - vec_float4 result; - vector float x2 = spu_mul(x,x); - result = spu_madd(x2,f12,f10); - result = spu_madd(x2,result,f08); - result = spu_madd(x2,result,f06); - result = spu_madd(x2,result,f04); - result = spu_madd(x2,result,f02); - result = spu_madd(x2,result,spu_splats(1.0f)); - - - // Perform calculation as a function of 0.5 * (e^x - e^-x) - vec_float4 ex = _expf4(x); - vec_float4 ex_inv = _recipf4(ex); - - vec_float4 r2= spu_add(ex,ex_inv); - r2 = spu_mul(r2,f02); // we can reused f02 here - - vec_uint4 xabs = spu_andc((vec_uint4)x,sign_mask); - vec_uint4 use_exp = spu_cmpgt(xabs,threshold); - - // Select either the Taylor or exp version - result = spu_sel(result,r2,use_exp); - - return result; -} -#endif /* _COSHF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/divd2.h b/newlib/libm/machine/spu/headers/divd2.h deleted file mode 100644 index 7bcf366eb..000000000 --- a/newlib/libm/machine/spu/headers/divd2.h +++ /dev/null @@ -1,232 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _DIVD2_H_ -#define _DIVD2_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector double _divd2(vector double a, vector double b) - * - * DESCRIPTION - * _divd2 divides the vector dividend a by the vector divisor b and - * returns the resulting vector quotient. Maximum error 0.5 ULPS for - * normalized results, 1ulp for denorm results, over entire double - * range including denorms, compared to true result in round-to-nearest - * rounding mode. Handles Inf or NaN operands and results correctly. - */ -static __inline vector double _divd2(vector double a, vector double b) -{ - - - /* Variables - */ - vec_float4 inv_bf, mant_bf; - vec_double2 mant_a, mant_b, inv_b, q0, q1, q2, mult; - vec_int4 exp, tmp; - vec_uint4 exp_a, exp_b, exp_q1, overflow, nounderflow, normal, utmp, - sign_a, sign_b, a_frac, b_frac, a_frac_0, b_frac_0, a_exp_0, b_exp_0, - a_exp_ones, b_exp_ones, a_nan, b_nan, a_inf, b_inf, a_zero, b_zero, - res_nan, sign_res; - - /* Constants - */ - vec_float4 onef = spu_splats(1.0f); - vec_double2 one = spu_splats(1.0); - vec_uint4 exp_mask = (vec_uint4) { 0x7FF00000, 0, 0x7FF00000, 0 }; - vec_uint4 sign_mask = (vec_uint4) { 0x80000000, 0, 0x80000000, 0}; - vec_uint4 sign_exp_mask = (vec_uint4) { 0xFFF00000, 0, 0xFFF00000,0}; - vec_uint4 frac_mask =(vec_uint4) { 0x000FFFFF, 0xFFFFFFFF, 0x000FFFFF, 0xFFFFFFFF }; - vec_uchar16 swap32 = (vec_uchar16) ((vec_uint4) { 0x04050607, 0x00010203, 0x0C0D0E0F, 0x08090A0B} ); - vec_uint4 zero = (vec_uint4) { 0, 0, 0, 0 }; - vec_int4 e1022 = (vec_int4) { 0x000003FE, 0, 0x000003FE, 0 }; - vec_int4 emax = (vec_int4) { 0x000007FE, 0, 0x000007FE, 0 }; - vec_int4 e1 = (vec_int4) { 0x00000001, 0, 0x00000001, 0 }; - - vec_uint4 nan = (vec_uint4) { 0x7FF80000, 0, 0x7FF80000, 0}; - - /* Extract exponents and underflow denorm arguments to signed zero. - */ - exp_a = spu_and((vec_uint4)a, exp_mask); - exp_b = spu_and((vec_uint4)b, exp_mask); - - sign_a = spu_and((vec_uint4)a, sign_mask); - sign_b = spu_and((vec_uint4)b, sign_mask); - - a_exp_0 = spu_cmpeq (exp_a, 0); - utmp = spu_shuffle (a_exp_0, a_exp_0, swap32); - a_exp_0 = spu_and (a_exp_0, utmp); - b_exp_0 = spu_cmpeq (exp_b, 0); - utmp = spu_shuffle (b_exp_0, b_exp_0, swap32); - b_exp_0 = spu_and (b_exp_0, utmp); - - a = spu_sel(a, (vec_double2)sign_a, (vec_ullong2)a_exp_0); - b = spu_sel(b, (vec_double2)sign_b, (vec_ullong2)b_exp_0); - - /* Force the divisor and dividend into the range [1.0,2.0). - (Unless they're zero.) - */ - mant_a = spu_sel(a, one, (vec_ullong2)sign_exp_mask); - mant_b = spu_sel(b, one, (vec_ullong2)sign_exp_mask); - - /* Approximate the single reciprocal of b by using - * the single precision reciprocal estimate followed by one - * single precision iteration of Newton-Raphson. - */ - mant_bf = spu_roundtf(mant_b); - inv_bf = spu_re(mant_bf); - inv_bf = spu_madd(spu_nmsub(mant_bf, inv_bf, onef), inv_bf, inv_bf); - - /* Perform 2 more Newton-Raphson iterations in double precision. - */ - inv_b = spu_extend(inv_bf); - inv_b = spu_madd(spu_nmsub(mant_b, inv_b, one), inv_b, inv_b); - q0 = spu_mul(mant_a, inv_b); - q1 = spu_madd(spu_nmsub(mant_b, q0, mant_a), inv_b, q0); - - /* Compute the quotient's expected exponent. If the exponent - * is out of range, then force the resulting exponent to 0. - * (1023 with the bias). We correct for the out of range - * values by computing a multiplier (mult) that will force the - * result to the correct out of range value and set the - * correct exception flag (UNF, OVF, or neither). - */ - exp_q1 = spu_and((vec_uint4)q1, exp_mask); - exp = spu_sub((vec_int4)exp_a, (vec_int4)exp_b); - exp = spu_rlmaska(exp, -20); // shift right to allow enough bits for working - tmp = spu_rlmaska((vec_int4)exp_q1, -20); - exp = spu_add(exp, tmp); // biased exponent of result (right justified) - - /* The default multiplier is 1.0. If an underflow is detected (the computed - * exponent is less than or equal to a biased 0), force the multiplier to 0.0. - * If exp<=0 set mult = 2**(unbiased exp + 1022) and unbiased exp = -1022 - * = biased 1, the smallest normalized exponent. If exp<-51 set - * mult = 2**(-1074) to ensure underflowing result. Otherwise mult=1. - */ - normal = spu_cmpgt(exp, 0); - nounderflow = spu_cmpgt(exp, -52); - tmp = spu_add(exp, e1022); - mult = (vec_double2)spu_sl(tmp, 20); - mult = spu_sel(mult, one, (vec_ullong2)normal); - mult = spu_sel((vec_double2)e1, mult, (vec_ullong2)nounderflow); - exp = spu_sel(e1, exp, normal); // unbiased -1022 is biased 1 - - /* Force the multiplier to positive infinity (exp_mask) and the biased - * exponent to 1022, if the computed biased exponent is > emax. - */ - overflow = spu_cmpgt(exp, (vec_int4)emax); - exp = spu_sel(exp, (vec_int4)e1022, overflow); - mult = spu_sel(mult, (vec_double2)exp_mask, (vec_ullong2)overflow); - - /* Determine if a, b are Inf, NaN, or zero. - * Since these are rare, it would improve speed if these could be detected - * quickly and a branch used to avoid slowing down the main path. However - * most of the work seems to be in the detection. - */ - a_exp_ones = spu_cmpeq (exp_a, exp_mask); - utmp = spu_shuffle (a_exp_ones, a_exp_ones, swap32); - a_exp_ones = spu_and (a_exp_ones, utmp); - - a_frac = spu_and ((vec_uint4)a, frac_mask); - a_frac_0 = spu_cmpeq (a_frac, 0); - utmp = spu_shuffle (a_frac_0, a_frac_0, swap32); - a_frac_0 = spu_and (a_frac_0, utmp); - - a_zero = spu_and (a_exp_0, a_frac_0); - a_inf = spu_and (a_exp_ones, a_frac_0); - a_nan = spu_andc (a_exp_ones, a_frac_0); - - b_exp_ones = spu_cmpeq (exp_b, exp_mask); - utmp = spu_shuffle (b_exp_ones, b_exp_ones, swap32); - b_exp_ones = spu_and (b_exp_ones, utmp); - - b_frac = spu_and ((vec_uint4)b, frac_mask); - b_frac_0 = spu_cmpeq (b_frac, 0); - utmp = spu_shuffle (b_frac_0, b_frac_0, swap32); - b_frac_0 = spu_and (b_frac_0, utmp); - - b_zero = spu_and (b_exp_0, b_frac_0); - b_inf = spu_and (b_exp_ones, b_frac_0); - b_nan = spu_andc (b_exp_ones, b_frac_0); - - /* Handle exception cases */ - - /* Result is 0 for 0/x, x!=0, or x/Inf, x!=Inf. - * Set mult=0 for 0/0 or Inf/Inf now, since it will be replaced - * with NaN later. - */ - utmp = spu_or (a_zero, b_inf); - mult = spu_sel(mult, (vec_double2)zero, (vec_ullong2)utmp); - - /* Result is Inf for x/0, x!=0. Set mult=Inf for 0/0 now, since it - * will be replaced with NaN later. - */ - mult = spu_sel(mult, (vec_double2)exp_mask, (vec_ullong2)b_zero); - - /* Result is NaN if either operand is, or Inf/Inf, or 0/0. - */ - res_nan = spu_or (a_nan, b_nan); - utmp = spu_and (a_inf, b_inf); - res_nan = spu_or (res_nan, utmp); - utmp = spu_and (a_zero, b_zero); - res_nan = spu_or (res_nan, utmp); - mult = spu_sel(mult, (vec_double2)nan, (vec_ullong2)res_nan); - - /* Insert sign of result into mult. - */ - sign_res = spu_xor (sign_a, sign_b); - mult = spu_or (mult, (vec_double2)sign_res); - - /* Insert the sign and exponent into the result and perform the - * final multiplication. - */ - exp = spu_sl(exp, 20); - q2 = spu_sel(q1, (vec_double2)exp, (vec_ullong2)exp_mask); - q2 = spu_mul(q2, mult); - - return (q2); -} - -#endif /* _DIVD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/divf4.h b/newlib/libm/machine/spu/headers/divf4.h deleted file mode 100644 index cf4b7c3ac..000000000 --- a/newlib/libm/machine/spu/headers/divf4.h +++ /dev/null @@ -1,160 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _DIVF4_H_ -#define _DIVF4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector float _divf4(vector float dividend, vector float divisor) - * - * DESCRIPTION - * The _divf4 function divides the vector dividend by the vector divisor - * and returns the resulting vector quotient. - * - */ -static __inline vector float _divf4(vector float a, vector float b) -{ - - /* This function has been designed to provide a - * full function operation that presisely computes - * the quotient for the entire range of extended - * single precision inputs <a> and <b>. This includes: - * - * 1) Computing the quotient to full single precision - * floating point accuracy. - * 2) Round the result consistently with the rounding - * mode of the processor - truncated toward zero. - * 3) Underflow and overflow results are clamped to - * Smin and Smax and flagged with the appropriate - * UNF or OVF exception in the FPSCR. - * 4) Divide By Zero (DBZ) exception is produced when - * the divisor <b> has a zero exponent. A quotient - * of correctly signed Smax is produced. - * 5) Denorm/zero divided by a denorm/zero generates - * a DBZ with the results undefined. - * 6) Resulting denorm quotients will be coerced to +0. - * 7) If a non-compliant IEEE result is produced, the - * a DIFF exception is generated. - */ - - vector float inv_b, err, q0, q1, q2; - vector float mult; - vector float mant_a, mant_b; - vector float one = spu_splats(1.0f); - vector unsigned int exp, exp_a, exp_b, overflow; - vector unsigned int exp_mask = (vec_uint4)spu_splats(0x7F800000); - - /* If b has a zero exponent, then set the divide by zero - * (DBZ) exception flag. The estimate result is discarded. - * Note: This must be implemented as inline assembly. Otherwise - * the optimizer removes it. - */ - (void)si_frest((qword)(b)); - - /* For computing the quotient, force the divisor and - * dividend into the range (1.0 <= 0 < 2.0). - */ - mant_a = spu_sel(a, one, exp_mask); - mant_b = spu_sel(b, one, exp_mask); - - /* Compute the quotient using reciprocal estimate - * followed by one iteration of the Newton-Raphson. - */ - inv_b = spu_re(mant_b); - q0 = spu_mul(mant_a, inv_b); - q1 = spu_nmsub(mant_b, q0, mant_a); - q1 = spu_madd(inv_b, q1, q0); - - /* Due to truncation error, the quotient result - * may be low by 1 ulp (unit of least position), - * Conditionally add one if the estimate is too - * small. - */ - q2 = (vector float)spu_add((vector unsigned int)(q1), 1); - err = spu_nmsub(mant_b, q2, mant_a); - q2 = spu_sel(q1, q2, spu_cmpgt((vector signed int)err, -1)); - - - /* Compute the quotient's expected exponent. If the exponent - * is out of range, then force the resulting exponent to 0. - * (127 with the bias). We correct for the out of range - * values by computing a multiplier (mult) that will force the - * result to the correct out of range value and set the - * correct exception flag (UNF, OVF, or neither). The multiplier - * is also conditioned to generate correctly signed Smax if the - * divisor b is a denorm or zero. - */ - exp_a = spu_and((vector unsigned int)a, exp_mask); - exp_b = spu_and((vector unsigned int)b, exp_mask); - exp = spu_add(spu_sub(spu_add(exp_a, (vector unsigned int)one), exp_b), spu_cmpabsgt(mant_b, mant_a)); - - /* The default multiplier is 1.0. If an underflow is detected (ie, - * either the dividend <a> is a denorm/zero, or the computed exponent is - * less than or equal to a biased 0), force the multiplier to 0.0. - */ - mult = spu_and(one, (vector float)spu_cmpgt((vector signed int)exp, 0)); - - /* Force the multiplier to positive Smax (0x7FFFFFFF) and the biased exponent - * to 127, if the divisor is denorm/zero or the computed biased exponent is - * greater than 255. - */ - - overflow = spu_or(spu_cmpeq(exp_b, 0), spu_cmpeq(spu_rlmask(exp, -30), 2)); - exp = spu_sel(exp, (vector unsigned int)one, overflow); - - mult = spu_or(mult, (vector float)spu_rlmask(overflow, -1)); - mult = spu_andc(mult, (vector float)spu_cmpeq(exp_a, 0)); - - /* Insert the exponent into the result and perform the - * final multiplication. - */ - q2 = spu_sel(q2, (vector float)exp, exp_mask); - q2 = spu_mul(q2, mult); - - return (q2); - -} - -#endif /* _DIVF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/dom_chkd_less_than.h b/newlib/libm/machine/spu/headers/dom_chkd_less_than.h deleted file mode 100644 index f7018d62a..000000000 --- a/newlib/libm/machine/spu/headers/dom_chkd_less_than.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include <errno.h> - -/* - * dom_chkd_less_than: "domain check double less than" - * - * Set errno to EDOM if vx < vc. - * - * This is for scalar use only, the input is a vector double, but both - * values in both vectors must be the same. - */ - -static __inline void dom_chkd_less_than (vector double vx, vector double vc) -{ - vector unsigned long long domain; - vector signed int verrno; - vector signed int fail = { EDOM, EDOM, EDOM, EDOM }; - - domain = spu_cmpgt(vc, vx); - verrno = spu_splats(errno); - /* - * domain is 2 long longs, but they have the same value. Even so, no - * special code is needed to extract the scalar errno (we have all ones - * or all zeroes for the preferred scalar slot). - */ - errno = spu_extract(spu_sel(verrno, fail, (vector unsigned int) domain), 0); -} diff --git a/newlib/libm/machine/spu/headers/dom_chkd_negone_one.h b/newlib/libm/machine/spu/headers/dom_chkd_negone_one.h deleted file mode 100644 index e364f86f8..000000000 --- a/newlib/libm/machine/spu/headers/dom_chkd_negone_one.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include <errno.h> - -/* - * dom_chkd_negone_one: "domain check double negative-one and one": - * - * Set errno to EDOM if |x| > 1.0. - * - * This is for scalar use only, the input is a vector double, but both - * values in the vector must be the same. - * - * We *only* set errno, and do not bother setting the actual return value - * of any functions to a NAN. That way, we have the same method for double - * and single precision (there are no float nans for single precision so - * those can't return a nan). - * - * Note that for newlib, errno is/was a function call, so not so obviously - * we are not branchless here. Unknown if adding a branch (and avoiding a - * call to __errno) is faster than this current code. - */ - -static __inline void dom_chkd_negone_one (vector double vx) -{ - vector unsigned long long domain; - vector signed int verrno; - vector double ones = { 1.0, 1.0 }; - vector signed int fail = { EDOM, EDOM, EDOM, EDOM }; - - domain = spu_cmpabsgt(vx, ones); - verrno = spu_splats(errno); - /* - * domain is 2 long longs, but they have the same value. Even so, no - * special code is needed to extract the scalar errno (we have all ones - * or all zeroes for the preferred scalar slot). - */ - errno = spu_extract(spu_sel(verrno, fail, (vector unsigned int) domain), 0); -} diff --git a/newlib/libm/machine/spu/headers/dom_chkf_less_than.h b/newlib/libm/machine/spu/headers/dom_chkf_less_than.h deleted file mode 100644 index 7475b2d91..000000000 --- a/newlib/libm/machine/spu/headers/dom_chkf_less_than.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include <errno.h> - -/* - * dom_chkf_less_than: "domain check float less than" - * - * Set errno to EDOM if vx < vc. - * - * This is for scalar use only, the input is a vector float, but both - * values in both vectors must be the same. - */ - -static __inline void dom_chkf_less_than (vector float vx, vector float vc) -{ - vector unsigned int domain; - vector signed int verrno; - vector signed int fail = { EDOM, EDOM, EDOM, EDOM }; - - domain = spu_cmpgt(vc, vx); - verrno = spu_splats(errno); - /* - * domain is 2 long longs, but they have the same value. Even so, no - * special code is needed to extract the scalar errno (we have all ones - * or all zeroes for the preferred scalar slot). - */ - errno = spu_extract(spu_sel(verrno, fail, (vector unsigned int) domain), 0); -} diff --git a/newlib/libm/machine/spu/headers/dom_chkf_negone_one.h b/newlib/libm/machine/spu/headers/dom_chkf_negone_one.h deleted file mode 100644 index f2671a9df..000000000 --- a/newlib/libm/machine/spu/headers/dom_chkf_negone_one.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include <errno.h> - -/* - * dom_chkf_negone_one: "domain check float negative-one and one": - * - * Set errno to EDOM if |x| > 1.0. - * - * This is for scalar use only, the input is a vector float, but all - * values in the vector must be the same. - * - * We *only* set errno, and do not bother setting the actual return value - * of any functions to a NAN. That way, we have the same method for float - * and single precision (there are no float nans for single precision so - * those can't return a nan). - * - * Note that for newlib, errno is/was a function call, so not so obviously - * we are not branchless here. Unknown if adding a branch (and avoiding a - * call to __errno) is faster than this current code. - */ - -static __inline void dom_chkf_negone_one (vector float vx) -{ - vector unsigned int domain; - vector signed int verrno; - vector float ones = { 1.0, 1.0, 1.0, 1.0 }; - vector signed int fail = { EDOM, EDOM, EDOM, EDOM }; - - domain = spu_cmpabsgt(vx, ones); - verrno = spu_splats(errno); - /* - * domain is 4 ints, but they have the same value, even so no special - * code is needed to extract the scalar errno (we have all ones or all - * zeroes for the preferred scalar slot). - */ - errno = spu_extract(spu_sel(verrno, fail, (vector unsigned int) domain), 0); -} diff --git a/newlib/libm/machine/spu/headers/erf.h b/newlib/libm/machine/spu/headers/erf.h deleted file mode 100644 index c0fbec888..000000000 --- a/newlib/libm/machine/spu/headers/erf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/erfd2.h" - -static __inline double _erf(double x) -{ - return spu_extract(_erfd2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/erf_utils.h b/newlib/libm/machine/spu/headers/erf_utils.h deleted file mode 100644 index 9e825393f..000000000 --- a/newlib/libm/machine/spu/headers/erf_utils.h +++ /dev/null @@ -1,369 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ERF_UTILS_H_ -#define _ERF_UTILS_H_ 1 - -#include <spu_intrinsics.h> - - -/* - * This file contains approximation methods for the erf and erfc functions. - */ - - -#define SQRT_PI 1.7724538509055160272981674833411451827975494561223871282138077898529113E0 -#define INV_SQRT_PI 5.6418958354775628694807945156077258584405062932899885684408572171064247E-1 -#define TWO_OVER_SQRT_PI 1.1283791670955125738961589031215451716881012586579977136881714434212849E0 - -/* - * Coefficients of Taylor Series Expansion of Error Function - */ -#define TAYLOR_ERF_00 1.0000000000000000000000000000000000000000000000000000000000000000000000E0 -#define TAYLOR_ERF_01 -3.3333333333333333333333333333333333333333333333333333333333333333333333E-1 -#define TAYLOR_ERF_02 1.0000000000000000000000000000000000000000000000000000000000000000000000E-1 -#define TAYLOR_ERF_03 -2.3809523809523809523809523809523809523809523809523809523809523809523810E-2 -#define TAYLOR_ERF_04 4.6296296296296296296296296296296296296296296296296296296296296296296296E-3 -#define TAYLOR_ERF_05 -7.5757575757575757575757575757575757575757575757575757575757575757575758E-4 -#define TAYLOR_ERF_06 1.0683760683760683760683760683760683760683760683760683760683760683760684E-4 -#define TAYLOR_ERF_07 -1.3227513227513227513227513227513227513227513227513227513227513227513228E-5 -#define TAYLOR_ERF_08 1.4589169000933706816059757236227824463118580765639589169000933706816060E-6 -#define TAYLOR_ERF_09 -1.4503852223150468764503852223150468764503852223150468764503852223150469E-7 -#define TAYLOR_ERF_10 1.3122532963802805072646342487612328882170152011421852691693961535231377E-8 -#define TAYLOR_ERF_11 -1.0892221037148573380457438428452921206544394950192051641327003645844226E-9 -#define TAYLOR_ERF_12 8.3507027951472395916840361284805729250173694618139062583507027951472396E-11 -#define TAYLOR_ERF_13 -5.9477940136376350368119915445018325676761890753660300985403866062302276E-12 -#define TAYLOR_ERF_14 3.9554295164585257633971372340283122987009139171153402133150354277885750E-13 -#define TAYLOR_ERF_15 -2.4668270102644569277100425760606678852113226579859111007771188689434124E-14 -#define TAYLOR_ERF_16 1.4483264643598137264964265124598618265445265605599099265926266086599580E-15 -#define TAYLOR_ERF_17 -8.0327350124157736091398445228866286178099792434415172399254921152569101E-17 -#define TAYLOR_ERF_18 4.2214072888070882330314498243398198441944335363431396906515348954052831E-18 -#define TAYLOR_ERF_19 -2.1078551914421358248605080094544309613386510235451574703658136454790212E-19 -#define TAYLOR_ERF_20 1.0025164934907719167019489313258878962464315843690383090764235630936808E-20 -#define TAYLOR_ERF_21 -4.5518467589282002862436219473268442686715055325725991884976042178118399E-22 -#define TAYLOR_ERF_22 1.9770647538779051748330883205561040762916640191981996475292624380394860E-23 -#define TAYLOR_ERF_23 -8.2301492992142213568444934713251326025092396728879726307878639881384709E-25 -#define TAYLOR_ERF_24 3.2892603491757517327524761322472893904586246991984244357740612877764297E-26 -#define TAYLOR_ERF_25 -1.2641078988989163521950692586675857265291969432213552733563059066748632E-27 -#define TAYLOR_ERF_26 4.6784835155184857737263085770716162592880293254201102279514950101899871E-29 -#define TAYLOR_ERF_27 -1.6697617934173720269864939702679842541566703989714871520634965356233624E-30 -#define TAYLOR_ERF_28 5.7541916439821717721965644338808981189609568886862025916975131240153466E-32 -#define TAYLOR_ERF_29 -1.9169428621097825307726719621929350834644917747230482041306735714136456E-33 -#define TAYLOR_ERF_30 6.1803075882227961374638057797477142035193997108557291827163792739565622E-35 -#define TAYLOR_ERF_31 -1.9303572088151078565555153741147494440075954038003045578376811864380455E-36 -#define TAYLOR_ERF_32 5.8467550074688362962979552196744814890614668480489993819122074396921572E-38 -#define TAYLOR_ERF_33 -1.7188560628017836239681912676564509126594090688520350964463748691994130E-39 -#define TAYLOR_ERF_34 4.9089239645234229670020807729318930583197104694410209489303971115243253E-41 -#define TAYLOR_ERF_35 -1.3630412617791395763506783635102640685072837923196396196225247512884444E-42 -#define TAYLOR_ERF_36 3.6824935154611457351939940566677606112639706717920248475342183158858278E-44 -#define TAYLOR_ERF_37 -9.6872802388707617538436600409638387251268417672366779772972229571050606E-46 -#define TAYLOR_ERF_38 2.4830690974549115910398991902675594818336060579041382375163763560590552E-47 -#define TAYLOR_ERF_39 -6.2056579196373967059419746072899084745598074150801247740591035188752759E-49 -#define TAYLOR_ERF_40 1.5131079495412170980537530678268603996611876104670674603415715370097123E-50 -#define TAYLOR_ERF_41 -3.6015793098101259166133998969725445892611283117200253978156713046660799E-52 -#define TAYLOR_ERF_42 8.3734196838722815428266720293759440030440798283686864991232694198118944E-54 -#define TAYLOR_ERF_43 -1.9025412272898795272394202686366085010926137006451172211319911806576077E-55 -#define TAYLOR_ERF_44 4.2267897541935525758383443148974703675959497435169866761614717241371774E-57 -#define TAYLOR_ERF_45 -9.1864295023986856959612367283485924961181813717463202485560679718732304E-59 - - /* - * Taylor Series Expansion of Erf - * - * infinite - * --------- - * - n 2n - * 2 * x - -1 * x - * erf(x) = ---- * - ------------ - * sqrt(pi) - (2n + 1) * n! - * - - * --------- - * n = 0 - * - * 45 terms give us accurate results for 0 <= x < 2.5 - */ -#define TAYLOR_ERF(_xabs, _xsqu, _tresult) { \ - _tresult = spu_madd(_xsqu, spu_splats(TAYLOR_ERF_45), spu_splats(TAYLOR_ERF_44)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_43)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_42)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_41)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_40)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_39)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_38)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_37)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_36)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_35)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_34)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_33)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_32)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_31)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_30)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_29)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_28)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_27)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_26)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_25)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_24)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_23)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_22)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_21)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_20)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_19)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_18)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_17)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_16)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_15)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_14)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_13)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_12)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_11)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_10)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_09)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_08)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_07)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_06)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_05)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_04)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_03)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_02)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_01)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats(TAYLOR_ERF_00)); \ - _tresult = spu_mul(_tresult, _xabs); \ - _tresult = spu_mul(_tresult, spu_splats(TWO_OVER_SQRT_PI)); \ -} - -#define TAYLOR_ERFF4(_xabs, _xsqu, _tresult) { \ - _tresult = spu_madd(_xsqu, spu_splats((float)TAYLOR_ERF_45), spu_splats((float)TAYLOR_ERF_44)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_43)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_42)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_41)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_40)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_39)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_38)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_37)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_36)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_35)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_34)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_33)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_32)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_31)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_30)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_29)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_28)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_27)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_26)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_25)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_24)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_23)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_22)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_21)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_20)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_19)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_18)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_17)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_16)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_15)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_14)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_13)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_12)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_11)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_10)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_09)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_08)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_07)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_06)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_05)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_04)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_03)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_02)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_01)); \ - _tresult = spu_madd(_tresult, _xsqu, spu_splats((float)TAYLOR_ERF_00)); \ - _tresult = spu_mul(_tresult, _xabs); \ - _tresult = spu_mul(_tresult, spu_splats((float)TWO_OVER_SQRT_PI)); \ -} - - - - /* - * Continued Fractions Approximation of Erfc() - * ( ) - * 1 ( 1 v 2v 3v ) - * erfc(x) = ------------------------- * ( --- --- --- --- ... ) - * sqrt(pi) * x * exp(x^2) ( 1+ 1+ 1+ 1+ ) - * ( ) - * Continued Fractions - * 1 - * v = ----- - * 2*x^2 - * - * We are using a backward recurrence calculation to estimate the continued fraction. - * - * p = a p + b q - * m,n m m+1,n m m+1,n - * - * q = p - * m,n m+1,n - * - * With, - * - * p = a ; q = 1 - * n,n n n,n - * - * - * a = 0, b = 1, - * 0 0 - * - * a = 1, b = n/2x^2 - * n n - * - * - * F = p / q - * 0,n 0,n 0,n - * - * Ref: "Computing the Incomplete Gamma Function to Arbitrary Precision", - * by Serge Winitzki, Department of Physics, Ludwig-Maximilians University, Munich, Germany. - * - */ - -#define CONTFRAC_ERFCF4(_xabs, _xsqu, _presult) { \ - vec_float4 v; \ - vec_float4 p, q, plast, qlast; \ - vec_float4 factor; \ - vec_float4 inv_xsqu; \ - inv_xsqu = _recipf4(_xsqu); \ - v = spu_mul(inv_xsqu, onehalff); \ - p = spu_splats(3.025f); q = onef; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(40.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(39.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(38.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(37.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(36.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(35.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(34.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(33.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(32.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(31.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(30.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(29.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(28.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(27.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(26.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(25.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(24.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(23.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(22.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(21.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(20.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(19.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(18.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(17.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(16.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(15.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(14.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(13.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(12.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(11.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(10.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 9.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 8.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 7.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 6.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 5.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 4.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 3.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 2.0f)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 1.0f)), plast); q = plast; plast = p; qlast = q; \ - p = qlast; q = plast; \ - factor = spu_mul(spu_splats((float)SQRT_PI), spu_mul(_xabs, _expf4(_xsqu))); \ - _presult = _divf4(p, spu_mul(factor, q)); \ -} - -#define CONTFRAC_ERFC(_xabs, _xsqu, _presult) { \ - vec_double2 v; \ - vec_double2 p, q, plast, qlast; \ - vec_double2 factor; \ - vec_double2 inv_xsqu; \ - inv_xsqu = _recipd2(_xsqu); \ - v = spu_mul(inv_xsqu, onehalfd); \ - p = spu_splats(3.025); q = oned; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(40.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(39.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(38.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(37.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(36.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(35.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(34.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(33.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(32.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(31.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(30.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(29.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(28.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(27.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(26.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(25.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(24.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(23.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(22.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(21.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(20.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(19.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(18.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(17.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(16.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(15.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(14.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(13.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(12.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(11.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats(10.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 9.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 8.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 7.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 6.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 5.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 4.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 3.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 2.0)), plast); q = plast; plast = p; qlast = q; \ - p = spu_madd(qlast, spu_mul(v, spu_splats( 1.0)), plast); q = plast; plast = p; qlast = q; \ - p = qlast; q = plast; \ - factor = spu_mul(spu_splats(SQRT_PI), spu_mul(_xabs, _expd2(_xsqu))); \ - _presult = _divd2(p, spu_mul(factor, q)); \ -} - -#endif /* _ERF_UTILS_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/erfc.h b/newlib/libm/machine/spu/headers/erfc.h deleted file mode 100644 index 542c4bbc2..000000000 --- a/newlib/libm/machine/spu/headers/erfc.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/erfcd2.h" - -static __inline double _erfc(double x) -{ - return spu_extract(_erfcd2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/erfcd2.h b/newlib/libm/machine/spu/headers/erfcd2.h deleted file mode 100644 index 2615faccf..000000000 --- a/newlib/libm/machine/spu/headers/erfcd2.h +++ /dev/null @@ -1,138 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ERFCD2_H_ -#define _ERFCD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "expd2.h" -#include "recipd2.h" -#include "divd2.h" -#include "erf_utils.h" - -/* - * FUNCTION - * vector double _erfcd2(vector double x) - * - * DESCRIPTION - * The erfcd2 function computes the complement error function of each element of x. - * - * Accuracy Note: We would benefit from a rational approximation in the domain - * 1.2 < x < 2.0 and also around x = 2.5. - * - * C99 Special Cases: - * - erfc(+0) returns +1 - * - erfc(-0) returns +1 - * - erfc(+infinite) returns +0 - * - erfc(-infinite) returns +2 - * - * Other Cases: - * - erfc(Nan) returns Nan - * - */ - -static __inline vector double _erfcd2(vector double x) -{ - vec_uchar16 dup_even = ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11 }); - vec_double2 onehalfd = spu_splats(0.5); - vec_double2 zerod = spu_splats(0.0); - vec_double2 oned = spu_splats(1.0); - vec_double2 twod = spu_splats(2.0); - vec_double2 sign_mask = spu_splats(-0.0); - - /* This is where we switch from near zero approx. */ - vec_float4 approx_point = spu_splats(1.71f); - - vec_double2 xabs, xsqu, xsign; - vec_uint4 xhigh, xabshigh; - vec_uint4 isnan, isneg; - vec_double2 tresult, presult, result; - - xsign = spu_and(x, sign_mask); - - /* Force Denorms to 0 */ - x = spu_add(x, zerod); - - xabs = spu_andc(x, sign_mask); - xsqu = spu_mul(x, x); - - /* - * Use Taylor Series for x near 0 - * Preserve sign of x in result, since erf(-x) = -erf(x) - * This approximation is for erf, so adjust for erfc. - */ - TAYLOR_ERF(xabs, xsqu, tresult); - tresult = spu_or(tresult, xsign); - tresult = spu_sub(oned, tresult); - - /* - * Now, use the Continued Fractions approximation away - * from 0. If x < 0, use erfc(-x) = 2 - erfc(x) - */ - CONTFRAC_ERFC(xabs, xsqu, presult); - isneg = (vec_uint4)spu_shuffle(x, x, dup_even); - isneg = spu_rlmaska(isneg, -32); - presult = spu_sel(presult, spu_sub(twod, presult), (vec_ullong2)isneg); - - /* - * Select the appropriate approximation. - */ - vec_float4 xf = spu_roundtf(xabs); - xf = spu_shuffle(xf, xf, dup_even); - result = spu_sel(tresult, presult, (vec_ullong2)spu_cmpgt(xf, approx_point)); - - /* - * Special cases/errors. - */ - xhigh = (vec_uint4)spu_shuffle(x, x, dup_even); - xabshigh = (vec_uint4)spu_shuffle(xabs, xabs, dup_even); - - /* x = +/- infinite */ - result = spu_sel(result, zerod, (vec_ullong2)spu_cmpeq(xhigh, 0x7FF00000)); - result = spu_sel(result, twod, (vec_ullong2)spu_cmpeq(xhigh, 0xFFF00000)); - - /* x = nan, return x */ - isnan = spu_cmpgt(xabshigh, 0x7FF00000); - result = spu_sel(result, x, (vec_ullong2)isnan); - - return result; -} - -#endif /* _ERFCD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/erfcf.h b/newlib/libm/machine/spu/headers/erfcf.h deleted file mode 100644 index f2c589cc1..000000000 --- a/newlib/libm/machine/spu/headers/erfcf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/erfcf4.h" - -static __inline float _erfcf(float x) -{ - return spu_extract(_erfcf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/erfcf4.h b/newlib/libm/machine/spu/headers/erfcf4.h deleted file mode 100644 index cb621f3ae..000000000 --- a/newlib/libm/machine/spu/headers/erfcf4.h +++ /dev/null @@ -1,121 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ERFCF4_H_ -#define _ERFCF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "expf4.h" -#include "recipf4.h" -#include "divf4.h" -#include "erf_utils.h" - -/* - * FUNCTION - * vector float _erfcf4(vector float x) - * - * DESCRIPTION - * The erfcf4 function computes the complement error function of each element of x. - * - * C99 Special Cases: - * - erfc(+0) returns +1 - * - erfc(-0) returns +1 - * - erfc(+infinite) returns +0 - * - erfc(-infinite) returns +2 - * - */ - -static __inline vector float _erfcf4(vector float x) -{ - vec_float4 onehalff = spu_splats(0.5f); - vec_float4 zerof = spu_splats(0.0f); - vec_float4 onef = spu_splats(1.0f); - vec_float4 twof = spu_splats(2.0f); - vec_float4 sign_mask = spu_splats(-0.0f); - - /* This is where we switch from near zero approx. */ - vec_float4 approx_point = spu_splats(0.89f); - - vec_float4 xabs, xsqu, xsign; - vec_uint4 isneg; - vec_float4 tresult, presult, result; - - xsign = spu_and(x, sign_mask); - - /* Force Denorms to 0 */ - x = spu_add(x, zerof); - - xabs = spu_andc(x, sign_mask); - xsqu = spu_mul(x, x); - - /* - * Use Taylor Series for x near 0 - * Preserve sign of x in result, since erf(-x) = -erf(x) - * This approximation is for erf, so adjust for erfc. - */ - TAYLOR_ERFF4(xabs, xsqu, tresult); - tresult = spu_or(tresult, xsign); - tresult = spu_sub(onef, tresult); - - /* - * Now, use the Continued Fractions approximation away - * from 0. If x < 0, use erfc(-x) = 2 - erfc(x) - */ - CONTFRAC_ERFCF4(xabs, xsqu, presult); - isneg = spu_rlmaska((vec_uint4)x, -32); - presult = spu_sel(presult, spu_sub(twof, presult), isneg); - - /* - * Select the appropriate approximation. - */ - result = spu_sel(tresult, presult, spu_cmpgt(xabs, approx_point)); - - /* - * Special cases/errors. - */ - - /* x = +/- infinite */ - result = spu_sel(result, zerof, spu_cmpeq((vec_uint4)xabs, 0x7F800000)); - result = spu_sel(result, twof, spu_cmpeq((vec_uint4)xabs, 0xFF800000)); - - return result; -} - -#endif /* _ERFCF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/erfd2.h b/newlib/libm/machine/spu/headers/erfd2.h deleted file mode 100644 index ba7567e5b..000000000 --- a/newlib/libm/machine/spu/headers/erfd2.h +++ /dev/null @@ -1,134 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ERFD2_H_ -#define _ERFD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "expd2.h" -#include "recipd2.h" -#include "divd2.h" -#include "erf_utils.h" - -/* - * FUNCTION - * vector double _erfd2(vector double x) - * - * DESCRIPTION - * The erfd2 function computes the error function of each element of x. - * - * C99 Special Cases: - * - erf(+0) returns +0 - * - erf(-0) returns -0 - * - erf(+infinite) returns +1 - * - erf(-infinite) returns -1 - * - * Other Cases: - * - erf(Nan) returns Nan - * - */ - -static __inline vector double _erfd2(vector double x) -{ - vec_uchar16 dup_even = ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8, 9,10,11, 8, 9,10,11 }); - vec_double2 onehalfd = spu_splats(0.5); - vec_double2 zerod = spu_splats(0.0); - vec_double2 oned = spu_splats(1.0); - vec_double2 sign_mask = spu_splats(-0.0); - - /* This is where we switch from Taylor Series to Continued Fraction approximation */ - vec_float4 approx_point = spu_splats(1.77f); - - vec_double2 xabs, xsqu, xsign; - vec_uint4 xabshigh; - vec_uint4 isinf, isnan; - vec_double2 tresult, presult, result; - - xsign = spu_and(x, sign_mask); - - /* Force Denorms to 0 */ - x = spu_add(x, zerod); - - xabs = spu_andc(x, sign_mask); - xsqu = spu_mul(x, x); - - /* - * Taylor Series Expansion near Zero - */ - TAYLOR_ERF(xabs, xsqu, tresult); - - /* - * Continued Fraction Approximation of Erfc(). - * erf = 1 - erfc - */ - CONTFRAC_ERFC(xabs, xsqu, presult); - presult = spu_sub(oned, presult); - - - /* - * Select the appropriate approximation. - */ - vec_float4 xf = spu_roundtf(xabs); - xf = spu_shuffle(xf, xf, dup_even); - result = spu_sel(tresult, presult, (vec_ullong2)spu_cmpgt(xf, approx_point)); - - - /* - * Special cases/errors. - */ - xabshigh = (vec_uint4)spu_shuffle(xabs, xabs, dup_even); - - /* x = +/- infinite, return +/-1 */ - isinf = spu_cmpeq(xabshigh, 0x7FF00000); - result = spu_sel(result, oned, (vec_ullong2)isinf); - - /* x = nan, return x */ - isnan = spu_cmpgt(xabshigh, 0x7FF00000); - result = spu_sel(result, x, (vec_ullong2)isnan); - - /* - * Preserve sign in result, since erf(-x) = -erf(x) - */ - result = spu_or(result, xsign); - - return result; -} - -#endif /* _ERFD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/erff.h b/newlib/libm/machine/spu/headers/erff.h deleted file mode 100644 index c355f8177..000000000 --- a/newlib/libm/machine/spu/headers/erff.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/erff4.h" - -static __inline float _erff(float x) -{ - return spu_extract(_erff4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/erff4.h b/newlib/libm/machine/spu/headers/erff4.h deleted file mode 100644 index fa9c0655d..000000000 --- a/newlib/libm/machine/spu/headers/erff4.h +++ /dev/null @@ -1,407 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ERFF4_H_ -#define _ERFF4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector float _erff4(vector float x) - * - * DESCRIPTION - * The erff4 function computes the error function of each element of x. - * - * C99 Special Cases: - * - erf(+0) returns +0 - * - erf(-0) returns -0 - * - erf(+infinite) returns +1 - * - erf(-infinite) returns -1 - * - */ - -static __inline vector float _erff4(vector float x) -{ - vec_float4 sign_maskf = spu_splats(-0.0f); - vec_float4 zerof = spu_splats(0.0f); - vec_float4 onef = spu_splats(1.0f); - vec_float4 clamp = spu_splats(3.9199876f); - vec_float4 xabs = spu_andc(x, sign_maskf); - vec_float4 xsign = spu_and(x, sign_maskf); - vec_float4 result; - - - /* - * First thing we do is setup the description of each partition. - * This consists of: - * - Start x of partition - * - Offset (used for evaluating power series expanded around a point) - * - Truncation adjustment. - */ - - - /*************************************************************** - * REGION 0: Approximation Near 0 from Above - * - */ -#define SDM_ERFF4_0_START 0.0f -#define SDM_ERFF4_0_OFF 0.0f -#define SDM_ERFF4_0_TRUNC 2u - -#define SDM_ERFF4_0_00 0.0f -#define SDM_ERFF4_0_01 1.12837916709551257389615890312154f -#define SDM_ERFF4_0_02 0.0f -#define SDM_ERFF4_0_03 -0.37612638903183752463205296770955f -#define SDM_ERFF4_0_04 0.0f -#define SDM_ERFF4_0_05 0.11283791670955125738961589031073f -#define SDM_ERFF4_0_06 0.0f -#define SDM_ERFF4_0_07 -0.02686617064513125175943235483588f -#define SDM_ERFF4_0_08 0.0f -#define SDM_ERFF4_0_09 0.00522397762544218784211184677371f -#define SDM_ERFF4_0_10 0.0f -//#define SDM_ERFF4_0_11 -0.00085483270234508528325466583569f - - - - /*************************************************************** - * REGION 1: Above 0 and Below 1 - */ -#define SDM_ERFF4_1_START 0.07f -#define SDM_ERFF4_1_OFF 0.0625f -#define SDM_ERFF4_1_TRUNC 1u - -#define SDM_ERFF4_1_00 0.0704319777223870780505900559232967439190042883f -#define SDM_ERFF4_1_01 1.1239800336253906104888456836298420746260842545f -#define SDM_ERFF4_1_02 -0.0702487521015869131555528552268651296641302713f -#define SDM_ERFF4_1_03 -0.3717329798708974154481338589088279778060226856f -#define SDM_ERFF4_1_04 0.0350329063214945152846051348331892508611482993f -#define SDM_ERFF4_1_05 0.1106440713032318617523250293018186620702780982f -#define SDM_ERFF4_1_06 -0.0116471931712158678624014740659716890227703402f -#define SDM_ERFF4_1_07 -0.0261358409084263503958678377968739965222786482f -#define SDM_ERFF4_1_08 0.0029041996223118476954500365511415181291113910f -#define SDM_ERFF4_1_09 0.0050416329596619035812041623972929782386498567f -#define SDM_ERFF4_1_10 -0.0005793225670734356072895029723913210064918149f -//#define SDM_ERFF4_1_11 -0.0008184112733188406359323913130525859730689332f - - - - /*************************************************************** - * REGION 2: - */ -#define SDM_ERFF4_2_START 0.13f -#define SDM_ERFF4_2_OFF 0.1875f -#define SDM_ERFF4_2_TRUNC 1u - -#define SDM_ERFF4_2_00 0.2091176770593758483008706390019410965937912290f -#define SDM_ERFF4_2_01 1.0893988034775673230502318110338693557898033315f -#define SDM_ERFF4_2_02 -0.2042622756520438730719184645688505042105881396f -#define SDM_ERFF4_2_03 -0.3376001500360169568827541289401834722369442864f -#define SDM_ERFF4_2_04 0.0997374392832245473983976877777590352590762400f -#define SDM_ERFF4_2_05 0.0937997370645632460099464120987231140266525679f -#define SDM_ERFF4_2_06 -0.0324591340420617488485277008302392706957527828f -#define SDM_ERFF4_2_07 -0.0205943885488331791711970665266474471714543313f -#define SDM_ERFF4_2_08 0.0079208906865255014554772269570592999495375181f -#define SDM_ERFF4_2_09 0.0036744273281123333893101007014150883409965011f -#define SDM_ERFF4_2_10 -0.0015459493690754127608506357908913858038162608f -//#define SDM_ERFF4_2_11 -0.0005485671070180836650399266219057172124875094f - - - - /*************************************************************** - * REGION 3: - */ -#define SDM_ERFF4_3_START 0.25f -#define SDM_ERFF4_3_OFF 0.5f -#define SDM_ERFF4_3_TRUNC 2u - -#define SDM_ERFF4_3_00 0.5204998778130465376827466538919645287364515699f -#define SDM_ERFF4_3_01 0.8787825789354447940937239548244578983625218956f -#define SDM_ERFF4_3_02 -0.4393912894677223970468619774122289491812609947f -#define SDM_ERFF4_3_03 -0.1464637631559074656822873258040763163937536583f -#define SDM_ERFF4_3_04 0.1830797039448843321028591572550953954921920811f -#define SDM_ERFF4_3_05 0.0073231881577953732841143662902038158196876832f -#define SDM_ERFF4_3_06 -0.0500417857449350507747815029830594081011991688f -#define SDM_ERFF4_3_07 0.0054052103069442040906558417856266259621504328f -#define SDM_ERFF4_3_08 0.0100475885141180567975497704160236877764167320f -#define SDM_ERFF4_3_09 -0.0021674118390300459951330548378744759122422210f -#define SDM_ERFF4_3_10 -0.0015694967741624277200510981457278746801387524f -//#define SDM_ERFF4_3_11 0.0004973489167651373192082360776274483020158863f - - - - /*************************************************************** - * REGION 4: - */ -#define SDM_ERFF4_4_START 0.77f -#define SDM_ERFF4_4_OFF 1.0f -#define SDM_ERFF4_4_TRUNC 1u - -#define SDM_ERFF4_4_00 0.8427007929497148693412206350826092590442f -#define SDM_ERFF4_4_01 0.4151074974205947033402682494413373653605f -#define SDM_ERFF4_4_02 -0.4151074974205947033402682494413373653605f -#define SDM_ERFF4_4_03 0.1383691658068649011134227498137791217898f -#define SDM_ERFF4_4_04 0.0691845829034324505567113749068895608946f -#define SDM_ERFF4_4_05 -0.0691845829034324505567113749068895608946f -#define SDM_ERFF4_4_06 0.0046123055268954967037807583271259707263f -#define SDM_ERFF4_4_07 0.0151547181597994891695653487891281895293f -#define SDM_ERFF4_4_08 -0.0047770307242846215860586425530947553951f -#define SDM_ERFF4_4_09 -0.0018851883701199847638468972527538689873f -#define SDM_ERFF4_4_10 0.0012262875805634852347353603488787303121f -//#define SDM_ERFF4_4_11 0.0000855239913717274641321540324726821411f - - - - /*************************************************************** - * REGION 5: - */ -#define SDM_ERFF4_5_START 1.36f -#define SDM_ERFF4_5_OFF 1.875f -#define SDM_ERFF4_5_TRUNC 1u - -#define SDM_ERFF4_5_00 0.99199005767011997029646305969122440092668f -#define SDM_ERFF4_5_01 0.03354582842421607459425032786195496507386f -#define SDM_ERFF4_5_02 -0.06289842829540513986421936474116555951979f -#define SDM_ERFF4_5_03 0.06744109256118439996552409663913862770819f -#define SDM_ERFF4_5_04 -0.04225988151097532834627238568547061029869f -#define SDM_ERFF4_5_05 0.01146258336487617627004706027236136941544f -#define SDM_ERFF4_5_06 0.00410518713321247739022655684589964019683f -#define SDM_ERFF4_5_07 -0.00492839390823910723763257456562751425198f -#define SDM_ERFF4_5_08 0.00143050168737012207687743571780226012058f -#define SDM_ERFF4_5_09 0.00036225644575338665306295794978774160986f -#define SDM_ERFF4_5_10 -0.00039015757824554169745459780322413823624f -//#define SDM_ERFF4_5_11 0.00007372993782406230817649249567932577159f - - - - /*************************************************************** - * REGION 6: - */ -#define SDM_ERFF4_6_START 2.0f -#define SDM_ERFF4_6_OFF 2.5f -#define SDM_ERFF4_6_TRUNC 1u - -#define SDM_ERFF4_6_00 0.999593047982555041060435784260025087279f -#define SDM_ERFF4_6_01 0.002178284230352709720386678564097264007f -#define SDM_ERFF4_6_02 -0.005445710575881774300966696410243160031f -#define SDM_ERFF4_6_03 0.008350089549685387261482267829039512051f -#define SDM_ERFF4_6_04 -0.008622375078479475976530602649551670054f -#define SDM_ERFF4_6_05 0.006117348213573859798085922300839816434f -#define SDM_ERFF4_6_06 -0.002798490157050356237996774544152735014f -#define SDM_ERFF4_6_07 0.000542410061327906884739143174194854432f -#define SDM_ERFF4_6_08 0.000260670173895134533751630061303802055f -#define SDM_ERFF4_6_09 -0.000250285386311056635227961206817778392f -#define SDM_ERFF4_6_10 0.000078801328907504400502579703621546608f -//#define SDM_ERFF4_6_11 5.137004620216358263402877651297096663210e-6f - - - - /*************************************************************** - * REGION 7: - */ -#define SDM_ERFF4_7_START 2.75f -#define SDM_ERFF4_7_OFF 3.5f -#define SDM_ERFF4_7_TRUNC 1u - -#define SDM_ERFF4_7_00 0.999999256901627658587254476316243904363263f -#define SDM_ERFF4_7_01 5.399426777384782511586818937495781413007869e-6f -#define SDM_ERFF4_7_02 -0.000018897993720846738790553866281235234945f -#define SDM_ERFF4_7_03 0.000042295509756180796340763415010383621069f -#define SDM_ERFF4_7_04 -0.000067717810833034147332818020841092925222f -#define SDM_ERFF4_7_05 0.000082116282239393567363716204674415008991f -#define SDM_ERFF4_7_06 -0.000077744246390483389302250766562526063763f -#define SDM_ERFF4_7_07 0.000058192750619199206596604051163855823527f -#define SDM_ERFF4_7_08 -0.000034259175422410008064403380504975403351f -#define SDM_ERFF4_7_09 0.000015330768263696827211862952666453348031f -#define SDM_ERFF4_7_10 -4.641017709492666503521243665632827470977627e-6f -//#define SDM_ERFF4_7_11 4.447037356176705948450355327103423490366212e-7f - - - - - - /*************************************************************** - * Now we load the description of each partition. - */ - - /* Start point for each partition */ - vec_float4 r1start = spu_splats(SDM_ERFF4_1_START); - vec_float4 r2start = spu_splats(SDM_ERFF4_2_START); - vec_float4 r3start = spu_splats(SDM_ERFF4_3_START); - vec_float4 r4start = spu_splats(SDM_ERFF4_4_START); - vec_float4 r5start = spu_splats(SDM_ERFF4_5_START); - vec_float4 r6start = spu_splats(SDM_ERFF4_6_START); - vec_float4 r7start = spu_splats(SDM_ERFF4_7_START); - - /* X Offset for each partition */ - vec_float4 xoffseta = (vec_float4) {SDM_ERFF4_0_OFF, SDM_ERFF4_1_OFF, SDM_ERFF4_2_OFF, SDM_ERFF4_3_OFF}; - vec_float4 xoffsetb = (vec_float4) {SDM_ERFF4_4_OFF, SDM_ERFF4_5_OFF, SDM_ERFF4_6_OFF, SDM_ERFF4_7_OFF}; - - /* Truncation Correction for each partition */ - vec_uint4 tcorra = (vec_uint4) {SDM_ERFF4_0_TRUNC, SDM_ERFF4_1_TRUNC, SDM_ERFF4_2_TRUNC, SDM_ERFF4_3_TRUNC}; - vec_uint4 tcorrb = (vec_uint4) {SDM_ERFF4_4_TRUNC, SDM_ERFF4_5_TRUNC, SDM_ERFF4_6_TRUNC, SDM_ERFF4_7_TRUNC}; - - /* The coefficients for each partition */ - vec_float4 c00a = (vec_float4) {SDM_ERFF4_0_00, SDM_ERFF4_1_00, SDM_ERFF4_2_00, SDM_ERFF4_3_00}; - vec_float4 c01a = (vec_float4) {SDM_ERFF4_0_01, SDM_ERFF4_1_01, SDM_ERFF4_2_01, SDM_ERFF4_3_01}; - vec_float4 c02a = (vec_float4) {SDM_ERFF4_0_02, SDM_ERFF4_1_02, SDM_ERFF4_2_02, SDM_ERFF4_3_02}; - vec_float4 c03a = (vec_float4) {SDM_ERFF4_0_03, SDM_ERFF4_1_03, SDM_ERFF4_2_03, SDM_ERFF4_3_03}; - vec_float4 c04a = (vec_float4) {SDM_ERFF4_0_04, SDM_ERFF4_1_04, SDM_ERFF4_2_04, SDM_ERFF4_3_04}; - vec_float4 c05a = (vec_float4) {SDM_ERFF4_0_05, SDM_ERFF4_1_05, SDM_ERFF4_2_05, SDM_ERFF4_3_05}; - vec_float4 c06a = (vec_float4) {SDM_ERFF4_0_06, SDM_ERFF4_1_06, SDM_ERFF4_2_06, SDM_ERFF4_3_06}; - vec_float4 c07a = (vec_float4) {SDM_ERFF4_0_07, SDM_ERFF4_1_07, SDM_ERFF4_2_07, SDM_ERFF4_3_07}; - vec_float4 c08a = (vec_float4) {SDM_ERFF4_0_08, SDM_ERFF4_1_08, SDM_ERFF4_2_08, SDM_ERFF4_3_08}; - vec_float4 c09a = (vec_float4) {SDM_ERFF4_0_09, SDM_ERFF4_1_09, SDM_ERFF4_2_09, SDM_ERFF4_3_09}; - vec_float4 c10a = (vec_float4) {SDM_ERFF4_0_10, SDM_ERFF4_1_10, SDM_ERFF4_2_10, SDM_ERFF4_3_10}; - - vec_float4 c00b = (vec_float4) {SDM_ERFF4_4_00, SDM_ERFF4_5_00, SDM_ERFF4_6_00, SDM_ERFF4_7_00}; - vec_float4 c01b = (vec_float4) {SDM_ERFF4_4_01, SDM_ERFF4_5_01, SDM_ERFF4_6_01, SDM_ERFF4_7_01}; - vec_float4 c02b = (vec_float4) {SDM_ERFF4_4_02, SDM_ERFF4_5_02, SDM_ERFF4_6_02, SDM_ERFF4_7_02}; - vec_float4 c03b = (vec_float4) {SDM_ERFF4_4_03, SDM_ERFF4_5_03, SDM_ERFF4_6_03, SDM_ERFF4_7_03}; - vec_float4 c04b = (vec_float4) {SDM_ERFF4_4_04, SDM_ERFF4_5_04, SDM_ERFF4_6_04, SDM_ERFF4_7_04}; - vec_float4 c05b = (vec_float4) {SDM_ERFF4_4_05, SDM_ERFF4_5_05, SDM_ERFF4_6_05, SDM_ERFF4_7_05}; - vec_float4 c06b = (vec_float4) {SDM_ERFF4_4_06, SDM_ERFF4_5_06, SDM_ERFF4_6_06, SDM_ERFF4_7_06}; - vec_float4 c07b = (vec_float4) {SDM_ERFF4_4_07, SDM_ERFF4_5_07, SDM_ERFF4_6_07, SDM_ERFF4_7_07}; - vec_float4 c08b = (vec_float4) {SDM_ERFF4_4_08, SDM_ERFF4_5_08, SDM_ERFF4_6_08, SDM_ERFF4_7_08}; - vec_float4 c09b = (vec_float4) {SDM_ERFF4_4_09, SDM_ERFF4_5_09, SDM_ERFF4_6_09, SDM_ERFF4_7_09}; - vec_float4 c10b = (vec_float4) {SDM_ERFF4_4_10, SDM_ERFF4_5_10, SDM_ERFF4_6_10, SDM_ERFF4_7_10}; - - - vec_uchar16 shuffle0 = (vec_uchar16) spu_splats(0x00010203); - vec_uchar16 shuffle1 = (vec_uchar16) spu_splats(0x04050607); - vec_uchar16 shuffle2 = (vec_uchar16) spu_splats(0x08090A0B); - vec_uchar16 shuffle3 = (vec_uchar16) spu_splats(0x0C0D0E0F); - vec_uchar16 shuffle4 = (vec_uchar16) spu_splats(0x10111213); - vec_uchar16 shuffle5 = (vec_uchar16) spu_splats(0x14151617); - vec_uchar16 shuffle6 = (vec_uchar16) spu_splats(0x18191A1B); - vec_uchar16 shuffle7 = (vec_uchar16) spu_splats(0x1C1D1E1F); - - - /* - * Determine the shuffle pattern based on which partition - * each element of x is in. - */ - - vec_uchar16 gt_r1start = (vec_uchar16)spu_cmpabsgt(x, r1start); - vec_uchar16 gt_r2start = (vec_uchar16)spu_cmpabsgt(x, r2start); - vec_uchar16 gt_r3start = (vec_uchar16)spu_cmpabsgt(x, r3start); - vec_uchar16 gt_r4start = (vec_uchar16)spu_cmpabsgt(x, r4start); - vec_uchar16 gt_r5start = (vec_uchar16)spu_cmpabsgt(x, r5start); - vec_uchar16 gt_r6start = (vec_uchar16)spu_cmpabsgt(x, r6start); - vec_uchar16 gt_r7start = (vec_uchar16)spu_cmpabsgt(x, r7start); - - vec_uchar16 shufflepattern; - shufflepattern = spu_sel(shuffle0, shuffle1, gt_r1start); - shufflepattern = spu_sel(shufflepattern, shuffle2, gt_r2start); - shufflepattern = spu_sel(shufflepattern, shuffle3, gt_r3start); - shufflepattern = spu_sel(shufflepattern, shuffle4, gt_r4start); - shufflepattern = spu_sel(shufflepattern, shuffle5, gt_r5start); - shufflepattern = spu_sel(shufflepattern, shuffle6, gt_r6start); - shufflepattern = spu_sel(shufflepattern, shuffle7, gt_r7start); - - - - /* Use the shuffle pattern to select the coefficients */ - - vec_float4 coeff_10 = spu_shuffle(c10a, c10b, shufflepattern); - vec_float4 coeff_09 = spu_shuffle(c09a, c09b, shufflepattern); - vec_float4 coeff_08 = spu_shuffle(c08a, c08b, shufflepattern); - vec_float4 coeff_07 = spu_shuffle(c07a, c07b, shufflepattern); - vec_float4 coeff_06 = spu_shuffle(c06a, c06b, shufflepattern); - vec_float4 coeff_05 = spu_shuffle(c05a, c05b, shufflepattern); - vec_float4 coeff_04 = spu_shuffle(c04a, c04b, shufflepattern); - vec_float4 coeff_03 = spu_shuffle(c03a, c03b, shufflepattern); - vec_float4 coeff_02 = spu_shuffle(c02a, c02b, shufflepattern); - vec_float4 coeff_01 = spu_shuffle(c01a, c01b, shufflepattern); - vec_float4 coeff_00 = spu_shuffle(c00a, c00b, shufflepattern); - - vec_float4 xoffset = spu_shuffle(xoffseta, xoffsetb, shufflepattern); - vec_uint4 tcorrection = spu_shuffle(tcorra, tcorrb, shufflepattern); - - - /* - * We've completed the coeff. setup. Now we actually do the - * approximation below. - */ - - /* Adjust x value here (for approximations about a point) */ - vec_float4 xappr = spu_sub(xabs, xoffset); - - - /* Now we do the multiplies. - * Use Horner's method. - */ - result = coeff_10; - result = spu_madd(xappr, result, coeff_09); - result = spu_madd(xappr, result, coeff_08); - result = spu_madd(xappr, result, coeff_07); - result = spu_madd(xappr, result, coeff_06); - result = spu_madd(xappr, result, coeff_05); - result = spu_madd(xappr, result, coeff_04); - result = spu_madd(xappr, result, coeff_03); - result = spu_madd(xappr, result, coeff_02); - result = spu_madd(xappr, result, coeff_01); - result = spu_madd(xappr, result, coeff_00); - - - /* Adjust due to systematic truncation. Note that the correction - * value is always non-negative, so the result is cast as uint - * to do the adjustment. - */ - result = (vec_float4)spu_add((vec_uint4)result, tcorrection); - - - /* - * Special Cases - */ - - /* Erf(0) = 0 */ - result = spu_sel(result, zerof, spu_cmpeq(xabs, zerof)); - - /* Erf(infinity) = 1 */ - result = spu_sel(result, onef, spu_cmpgt(xabs, clamp)); - - - /* Preserve sign in result, since erf(-x) = -erf(x) */ - result = spu_or(result, xsign); - - return result; -} - -#endif /* _ERFF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/exp.h b/newlib/libm/machine/spu/headers/exp.h deleted file mode 100644 index 164034138..000000000 --- a/newlib/libm/machine/spu/headers/exp.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/expd2.h" - -static __inline double _exp(double x) -{ - return spu_extract(_expd2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/exp2.h b/newlib/libm/machine/spu/headers/exp2.h deleted file mode 100644 index 3fe22972f..000000000 --- a/newlib/libm/machine/spu/headers/exp2.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/exp2d2.h" - -static __inline double _exp2(double vx) -{ - return spu_extract(_exp2d2(spu_promote(vx, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/exp2d2.h b/newlib/libm/machine/spu/headers/exp2d2.h deleted file mode 100644 index c7de4e880..000000000 --- a/newlib/libm/machine/spu/headers/exp2d2.h +++ /dev/null @@ -1,152 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _EXP2D2_H_ -#define _EXP2D2_H_ 1 - -#include <spu_intrinsics.h> - - -/* - * FUNCTION - * vector double _exp2d2(vector double x) - * - * DESCRIPTION - * _exp2d2 computes 2 raised to the input x for each - * of the double word elements of x. Computation is - * performed by observing the 2^(a+b) = 2^a * 2^b. - * We decompose x into a and b (above) by letting. - * a = ceil(x), b = x - a; - * - * 2^a is easily computed by placing a into the exponent - * or a floating point number whose mantissa is all zeros. - * - * 2^b is computed using the polynomial approximation. - * - * __13_ - * \ - * \ - * 2^x = / Ci*x^i - * /____ - * i=0 - * - * for x in the range 0.0 to 1.0. - * - */ -#define EXP_C00 1.0 -#define EXP_C01 6.93147180559945286227e-01 -#define EXP_C02 2.40226506959100694072e-01 -#define EXP_C03 5.55041086648215761801e-02 -#define EXP_C04 9.61812910762847687873e-03 -#define EXP_C05 1.33335581464284411157e-03 -#define EXP_C06 1.54035303933816060656e-04 -#define EXP_C07 1.52527338040598376946e-05 -#define EXP_C08 1.32154867901443052734e-06 -#define EXP_C09 1.01780860092396959520e-07 -#define EXP_C10 7.05491162080112087744e-09 -#define EXP_C11 4.44553827187081007394e-10 -#define EXP_C12 2.56784359934881958182e-11 -#define EXP_C13 1.36914888539041240648e-12 - -static __inline vector double _exp2d2(vector double vx) -{ - vec_int4 ix, exp; - vec_uint4 overflow, underflow; - vec_float4 vxf; - vec_double2 p1, p2, x2, x4, x8; - vec_double2 vy, vxw, out_of_range; - - /* Compute: vxw = x - ceil(x) - */ - vxw = spu_add(vx, spu_splats(0.5)); - vxf = spu_roundtf(vxw); - ix = spu_convts(vxf, 0); - ix = spu_add(ix, (vec_int4)spu_andc(spu_cmpgt(spu_splats(0.0f), vxf), spu_cmpeq(ix, spu_splats((int)0x80000000)))); - vxf = spu_convtf(ix, 0); - vxw = spu_sub(vx, spu_extend(vxf)); - - /* Detect overflow and underflow. If overflow, force the result - * to infinity (at the end). - */ - exp = spu_shuffle(ix, ix, ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11 })); - - overflow = spu_cmpgt(exp, 1023); - underflow = spu_cmpgt(exp, -1023); - out_of_range = (vec_double2)spu_and(overflow, ((vec_uint4) { 0x7FF00000, 0, 0x7FF00000, 0 })); - - /* Calculate the result by evaluating the 13th order polynomial. - * For efficiency, the polynomial is broken into two parts and - * evaluate then using nested - * - * result = (((((c13*x + c12)*x + c11)*x + c10)*x + c9)*x + c8)*x^8 + - * ((((((c7*x + c6)*x + c5)*x + c4)*x + c3)*x + c2)*x + c1)*x + c0 - */ - p2 = spu_madd(spu_splats(EXP_C07), vxw, spu_splats(EXP_C06)); - p1 = spu_madd(spu_splats(EXP_C13), vxw, spu_splats(EXP_C12)); - x2 = spu_mul(vxw, vxw); - p2 = spu_madd(vxw, p2, spu_splats(EXP_C05)); - p1 = spu_madd(vxw, p1, spu_splats(EXP_C11)); - x4 = spu_mul(x2, x2); - p2 = spu_madd(vxw, p2, spu_splats(EXP_C04)); - p1 = spu_madd(vxw, p1, spu_splats(EXP_C10)); - p2 = spu_madd(vxw, p2, spu_splats(EXP_C03)); - p1 = spu_madd(vxw, p1, spu_splats(EXP_C09)); - x8 = spu_mul(x4, x4); - p2 = spu_madd(vxw, p2, spu_splats(EXP_C02)); - p1 = spu_madd(vxw, p1, spu_splats(EXP_C08)); - p2 = spu_madd(vxw, p2, spu_splats(EXP_C01)); - p2 = spu_madd(vxw, p2, spu_splats(EXP_C00)); - vy = spu_madd(x8, p1, p2); - - /* Align the integer integer portion of x with the exponent. - */ - ix = spu_sl(ix, ((vec_uint4) { 20, 32, 20, 32 })); - vy = (vec_double2)spu_add((vec_int4)vy, ix); - - /* Select the result if not overflow or underflow. Otherwise select the - * the out of range value. - */ - return (spu_sel(vy, out_of_range, (vec_ullong2)spu_orc(overflow, underflow))); -} - -#endif /* _EXP2D2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/exp2f.h b/newlib/libm/machine/spu/headers/exp2f.h deleted file mode 100644 index 84bccdc04..000000000 --- a/newlib/libm/machine/spu/headers/exp2f.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _EXP2F_H_ -#define _EXP2F_H_ 1 - -#ifndef M_LN2 -#define M_LN2 0.69314718055994530942 /* ln(2) */ -#endif /* M_LN2 */ - -/* - * FUNCTION - * float _exp2f(float x) - * - * DESCRIPTION - * _exp2f computes 2 raised to the input x. Computation is - * performed by observing the 2^(a+b) = 2^a * 2^b. - * We decompose x into a and b (above) by letting. - * a = ceil(x), b = x - a; - * - * 2^a is easilty computed by placing a into the exponent - * or a floating point number whose mantissa is all zeros. - * - * 2^b is computed using the following polynomial approximation. - * (C. Hastings, Jr, 1955). - * - * __7__ - * \ - * \ - * 2^x = / Ci*x^i - * /____ - * i=0 - * - * for x in the range 0.0 to 1.0 - * - * C0 = 1.0 - * C1 = -0.9999999995 - * C2 = 0.4999999206 - * C3 = -0.1666653019 - * C4 = 0.0416573475 - * C5 = -0.0083013598 - * C6 = 0.0013298820 - * C7 = -0.0001413161 - * - */ -static __inline float _exp2f(float x) -{ - union { - float f; - unsigned int ui; - } bias, exp_int, exp_frac; - unsigned int overflow, underflow; - int ix; - float frac, frac2, frac4; - float hi, lo; - - /* Break in the input x into two parts ceil(x), x - ceil(x). - */ - bias.f = x; - bias.ui = ~(unsigned int)((signed)(bias.ui) >> 31) & 0x3F7FFFFF; - ix = (int)(x + bias.f); - frac = (float)ix - x; - frac *= (float)(M_LN2); - - exp_int.ui = (ix + 127) << 23; - - overflow = (ix > 128) ? 0x7FFFFFFF : 0x0; - underflow = (ix < -127) ? 0xFFFFFFFF : 0x0; - - /* Instruction counts can be reduced if the polynomial was - * computed entirely from nested (dependent) fma's. However, - * to reduce the number of pipeline stalls, the polygon is evaluated - * in two halves (hi amd lo). - */ - frac2 = frac * frac; - frac4 = frac2 * frac2; - hi = -0.0001413161f * frac + 0.0013298820f; - hi = hi * frac - 0.0083013598f; - hi = hi * frac + 0.0416573475f; - lo = -0.1666653019f * frac + 0.4999999206f; - lo = lo * frac - 0.9999999995f; - lo = lo * frac + 1.0f; - exp_frac.f = hi * frac4 + lo; - - ix += exp_frac.ui >> 23; - exp_frac.f *= exp_int.f; - - exp_frac.ui = (exp_frac.ui | overflow) & ~underflow; - - return (exp_frac.f); -} - -#endif /* _EXP2F_H_ */ - - diff --git a/newlib/libm/machine/spu/headers/exp2f4.h b/newlib/libm/machine/spu/headers/exp2f4.h deleted file mode 100644 index e9de71be0..000000000 --- a/newlib/libm/machine/spu/headers/exp2f4.h +++ /dev/null @@ -1,134 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _EXP2F4_H_ -#define _EXP2F4_H_ 1 - - -#include <spu_intrinsics.h> -#include "simdmath.h" - -/* - * FUNCTION - * vector float _exp2f4(vector float x) - * - * DESCRIPTION - * The _exp2f4 function computes 2 raised to the input vector x. - * Computation is performed by observing the 2^(a+b) = 2^a * 2^b. - * We decompose x into a and b (above) by letting. - * a = ceil(x), b = x - a; - * - * 2^a is easilty computed by placing a into the exponent - * or a floating point number whose mantissa is all zeros. - * - * 2^b is computed using the following polynomial approximation. - * (C. Hastings, Jr, 1955). - * - * __7__ - * \ - * \ - * 2^(-x) = / Ci*x^i - * /____ - * i=1 - * - * for x in the range 0.0 to 1.0 - * - * C0 = 1.0 - * C1 = -0.9999999995 - * C2 = 0.4999999206 - * C3 = -0.1666653019 - * C4 = 0.0416573475 - * C5 = -0.0083013598 - * C6 = 0.0013298820 - * C7 = -0.0001413161 - * - */ -static __inline vector float _exp2f4(vector float x) -{ - vector signed int ix; - vector unsigned int overflow, underflow; - vector float frac, frac2, frac4; - vector float exp_int, exp_frac; - vector float result; - vector float hi, lo; - - vector float bias; - /* Break in the input x into two parts ceil(x), x - ceil(x). - */ - bias = (vector float)(spu_rlmaska((vector signed int)(x), -31)); - bias = (vector float)(spu_andc(spu_splats((unsigned int)0x3F7FFFFF), (vector unsigned int)bias)); - ix = spu_convts(spu_add(x, bias), 0); - frac = spu_sub(spu_convtf(ix, 0), x); - frac = spu_mul(frac, spu_splats((float)SM_LN2)); - - overflow = spu_rlmask(spu_cmpgt(ix, 128), -1); - underflow = spu_cmpgt(ix, -128); - - exp_int = (vector float)spu_and((vector unsigned int)spu_sl(spu_add(ix, 127), 23), underflow); - - /* Instruction counts can be reduced if the polynomial was - * computed entirely from nested (dependent) fma's. However, - * to reduce the number of pipeline stalls, the polygon is evaluated - * in two halves (hi amd lo). - */ - frac2 = spu_mul(frac, frac); - frac4 = spu_mul(frac2, frac2); - - hi = spu_madd(frac, spu_splats(-0.0001413161f), spu_splats(0.0013298820f)); - hi = spu_madd(frac, hi, spu_splats(-0.0083013598f)); - hi = spu_madd(frac, hi, spu_splats(0.0416573475f)); - lo = spu_madd(frac, spu_splats(-0.1666653019f), spu_splats(0.4999999206f)); - lo = spu_madd(frac, lo, spu_splats(-0.9999999995f)); - lo = spu_madd(frac, lo, spu_splats(1.0f)); - - exp_frac = spu_madd(frac4, hi, lo); - ix = spu_add(ix, spu_rlmask((vector signed int)(exp_frac), -23)); - result = spu_mul(exp_frac, exp_int); - - /* Handle overflow */ - result = spu_or(result, (vector float)overflow); - - return (result); - -} - -#endif /* _EXP2F4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/expd2.h b/newlib/libm/machine/spu/headers/expd2.h deleted file mode 100644 index c35bf22cd..000000000 --- a/newlib/libm/machine/spu/headers/expd2.h +++ /dev/null @@ -1,196 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _EXPD2_H_ -#define _EXPD2_H_ 1 - -#include <spu_intrinsics.h> -#include "floord2.h" - -#define LOG2E 1.4426950408889634073599 // 1/log(2) - -/* - * FUNCTION - * vector double _expd2(vector double x) - * - * DESCRIPTION - * _expd2 computes e raised to the input x for - * each of the element of the double word vector. - * - * Calculation is performed by reducing the input argument - * to within a managable range, and then computing the power - * series to the 11th degree. - * - * Range reduction is performed using the property: - * - * exp(x) = 2^n * exp(r) - * - * Values for "n" and "r" are determined such that: - * - * x = n * ln(2) + r, |r| <= ln(2)/2 - * - * n = floor( (x/ln(2)) + 1/2 ) - * r = x - (n * ln(2)) - * - * To enhance the precision for "r", computation is performed - * using a two part representation of ln(2). - * - * Once the input is reduced, the power series is computed: - * - * __12_ - * \ - * exp(x) = 1 + \ (x^i)/i! - * / - * /____ - * i=2 - * - * The resulting value is scaled by 2^n and returned. - * - */ - -static __inline vector double _expd2(vector double x) -{ - // log(2) in extended machine representable precision - vec_double2 ln2_hi = spu_splats(6.9314575195312500E-1); // 3FE62E4000000000 - vec_double2 ln2_lo = spu_splats(1.4286068203094172E-6); // 3EB7F7D1CF79ABCA - - // coefficients for the power series - // vec_double2 f01 = spu_splats(1.00000000000000000000E0); // 1/(1!) - vec_double2 f02 = spu_splats(5.00000000000000000000E-1); // 1/(2!) - vec_double2 f03 = spu_splats(1.66666666666666666667E-1); // 1/(3!) - vec_double2 f04 = spu_splats(4.16666666666666666667E-2); // 1/(4!) - vec_double2 f05 = spu_splats(8.33333333333333333333E-3); // 1/(5!) - vec_double2 f06 = spu_splats(1.38888888888888888889E-3); // 1/(6!) - vec_double2 f07 = spu_splats(1.98412698412698412698E-4); // 1/(7!) - vec_double2 f08 = spu_splats(2.48015873015873015873E-5); // 1/(8!) - vec_double2 f09 = spu_splats(2.75573192239858906526E-6); // 1/(9!) - vec_double2 f10 = spu_splats(2.75573192239858906526E-7); // 1/(10!) - vec_double2 f11 = spu_splats(2.50521083854417187751E-8); // 1/(11!) - vec_double2 f12 = spu_splats(2.08767569878680989792E-9); // 1/(12!) - - // rx = floor(1/2 + x/log(2)) - vec_double2 rx = _floord2(spu_madd(x,spu_splats(LOG2E),spu_splats(0.5))); - - // extract the exponent of reduction - vec_int4 exp = spu_convts(spu_roundtf(rx),0); - - // reduce the input to within [ -ln(2)/2 ... ln(2)/2 ] - vec_double2 r; - r = spu_nmsub(rx,ln2_hi,x); - r = spu_nmsub(rx,ln2_lo,r); - - vec_double2 result; - vec_double2 r2 = spu_mul(r,r); - - // Use Horner's method on the power series - /* result = ((((c12*x + c11)*x + c10)*x + c9)*x + c8)*x + c7)*x + c6)*x^6 + - ((((((c5*x + c4)*x + c3)*x + c2)*x + c1)*x + c0 - */ - -#ifdef __SPU_EDP__ - vec_double2 p1, p2, r4, r6; - - p1 = spu_madd(f12, r, f11); - p2 = spu_madd(f05, r, f04); - r4 = spu_mul(r2, r2); - p1 = spu_madd(p1, r, f10); - p2 = spu_madd(p2, r, f03); - p1 = spu_madd(p1, r, f09); - p2 = spu_madd(p2, r, f02); - p1 = spu_madd(p1, r, f08); - r6 = spu_mul(r2, r4); - p1 = spu_madd(p1, r, f07); - p2 = spu_madd(p2, r2, r); - p1 = spu_madd(p1, r, f06); - - result = spu_madd(r6, p1, p2); - result = spu_add(result, spu_splats(1.0)); - -#else - - result = spu_madd(r,f12,f11); - result = spu_madd(result,r,f10); - result = spu_madd(result,r,f09); - result = spu_madd(result,r,f08); - result = spu_madd(result,r,f07); - result = spu_madd(result,r,f06); - result = spu_madd(result,r,f05); - result = spu_madd(result,r,f04); - result = spu_madd(result,r,f03); - result = spu_madd(result,r,f02); - result = spu_madd(result,r2,r); - result = spu_add(result,spu_splats(1.0)); - -#endif /* __SPU_EDP__ */ - - - // Scale the result - basically a call to ldexpd2() - vec_int4 e1, e2; - vec_int4 min = spu_splats(-2044); - vec_int4 max = spu_splats(2046); - vec_uint4 cmp_min, cmp_max; - vec_uint4 shift = (vec_uint4) { 20, 32, 20, 32 }; - vec_double2 f1, f2; - - /* Clamp the specified exponent to the range -2044 to 2046. - */ - cmp_min = spu_cmpgt(exp, min); - cmp_max = spu_cmpgt(exp, max); - exp = spu_sel(min, exp, cmp_min); - exp = spu_sel(exp, max, cmp_max); - - /* Generate the factors f1 = 2^e1 and f2 = 2^e2 - */ - e1 = spu_rlmaska(exp, -1); - e2 = spu_sub(exp, e1); - - f1 = (vec_double2)spu_sl(spu_add(e1, 1023), shift); - f2 = (vec_double2)spu_sl(spu_add(e2, 1023), shift); - - /* Compute the product x * 2^e1 * 2^e2 - */ - result = spu_mul(spu_mul(result, f1), f2); - - return result; -} - -#endif /* _EXPD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/expf.h b/newlib/libm/machine/spu/headers/expf.h deleted file mode 100644 index dd3c8c6c1..000000000 --- a/newlib/libm/machine/spu/headers/expf.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _EXPF_H_ -#define _EXPF_H_ 1 - -#include "exp2f.h" - -#ifndef M_LOG2E -#define M_LOG2E 1.4426950408889634074 -#endif /* M_LOG2E */ - -/* - * FUNCTION - * float _expf(float x) - * - * DESCRIPTION - * _expf computes e raised to the input x. expf is - * computed using exp2f as e^x = 2^(log2(e)*x) - */ - -static __inline float _expf(float x) -{ - return (_exp2f((float)(M_LOG2E) * x)); -} - -#endif /* _EXPF_H_ */ - - diff --git a/newlib/libm/machine/spu/headers/expf4.h b/newlib/libm/machine/spu/headers/expf4.h deleted file mode 100644 index 7dac9217c..000000000 --- a/newlib/libm/machine/spu/headers/expf4.h +++ /dev/null @@ -1,112 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _EXPF4_H_ -#define _EXPF4_H_ 1 - - -#include "floorf4.h" -#include "ldexpf4.h" - -/* - * FUNCTION - * vector float _expf4(vector float x) - * - * DESCRIPTION - * The _expf4 function computes e raised to the input x for - * each of the element of the float vector. - * - */ -static __inline vector float _expf4(vector float x) -{ - - // log2(e) - vec_float4 log2e = spu_splats(1.4426950408889634074f); - - // Extra precision for the ln2 multiply - vec_float4 ln2_hi = spu_splats(0.693359375f); - vec_float4 ln2_lo = spu_splats(-2.12194440E-4f); - - // Coefficents for the Taylor series - vec_float4 f02 = spu_splats(5.0000000000000000E-1f); // 1/2! - vec_float4 f03 = spu_splats(1.6666666666666667E-1f); // 1/3! - vec_float4 f04 = spu_splats(4.1666666666666667E-2f); // 1/4! - vec_float4 f05 = spu_splats(8.3333333333333333E-3f); // 1/5! - vec_float4 f06 = spu_splats(1.3888888888888889E-3f); // 1/6! - vec_float4 f07 = spu_splats(1.9841269841269841E-4f); // 1/7! - - // Range reduce input, so that: - // e^x = e^z * 2^n - // e^x = e^z * e^(n * ln(2)) - // e^x = e^(z + (n * ln(2))) - - vec_int4 n; // exponent of reduction - vec_float4 q; // range reduced result - - vec_float4 z; - vec_float4 r; - - z = spu_madd(x,log2e,spu_splats(0.5f)); - z = _floorf4(z); - r = spu_nmsub(z,ln2_hi,x); - r = spu_nmsub(z,ln2_lo,r); - n = spu_convts(z,0); - z = spu_mul(r,r); - - // Use Horner's method on the Taylor series - q = spu_madd(r,f07,f06); - q = spu_madd(q,r,f05); - q = spu_madd(q,r,f04); - q = spu_madd(q,r,f03); - q = spu_madd(q,r,f02); - q = spu_madd(q,z,r); - q = spu_add(q,spu_splats(1.0f)); - - // Adjust the result by the range reduction - r = _ldexpf4( q, n ); - - return(r); - -} - -#endif /* _EXPF4_H_ */ -#endif /* __SPU__ */ - diff --git a/newlib/libm/machine/spu/headers/expm1.h b/newlib/libm/machine/spu/headers/expm1.h deleted file mode 100644 index 4983c1949..000000000 --- a/newlib/libm/machine/spu/headers/expm1.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/expm1d2.h" - -static __inline double _expm1(double x) -{ - return spu_extract(_expm1d2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/expm1d2.h b/newlib/libm/machine/spu/headers/expm1d2.h deleted file mode 100644 index ba2369a1d..000000000 --- a/newlib/libm/machine/spu/headers/expm1d2.h +++ /dev/null @@ -1,135 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _EXPM1D2_H_ -#define _EXPM1D2_H_ 1 - -#include <spu_intrinsics.h> - -#include "expd2.h" -#include "divd2.h" - -#define EXPM1_P0 0.0000000000000000000000000e+00 -#define EXPM1_P1 1.0000000000000000000000000e+00 -#define EXPM1_P2 9.7234232565378004697204117e-04 -#define EXPM1_P3 3.3328278237299953368211192e-02 -#define EXPM1_P4 3.1156225044634678993365345e-05 -#define EXPM1_P5 2.1352206553343212164751408e-04 -#define EXPM1_P6 1.6975135794626144795757452e-07 -#define EXPM1_P7 2.7686287801334994383131629e-07 -#define EXPM1_P8 1.1186114936216450015354379e-10 - -#define EXPM1_Q0 1.0000000000000000000000000e+00 -#define EXPM1_Q1 -4.9902765767434620336473472e-01 -#define EXPM1_Q2 1.1617544040780639069687652e-01 -#define EXPM1_Q3 -1.6551954366467523660499950e-02 -#define EXPM1_Q4 1.5864115838972218334307351e-03 -#define EXPM1_Q5 -1.0534540477401370666288988e-04 -#define EXPM1_Q6 4.7650003993592160620959043e-06 -#define EXPM1_Q7 -1.3529198871087017840776265e-07 -#define EXPM1_Q8 1.8635779407675460757658020e-09 - -/* - * FUNCTION - * vector double _expm1d2(vector double x) - * - * DESCRIPTION - * _expm1d2 computes the exponential - 1 for each element - * of the input vector x. - * - * This function is intended to return accurate values, even - * where exp(x) - 1 would normally produce bad results due to - * floating-point cancellation errors. - * - */ - -static __inline vector double _expm1d2(vector double x) -{ - vector double oned = spu_splats(1.0); - vector double range = spu_splats(1.0625); - vector unsigned long long use_exp; - vector double pr, qr; - vector double eresult; - vector double rresult; - vector double result; - - /* Compiler Bug. Replace xbug with x when spu_cmp*() doesn't - * modify it's arguments! */ - volatile vector double xbug = x; - use_exp = spu_cmpabsgt(xbug, range); - - /* - * Calculate directly using exp(x) - 1 - */ - eresult = spu_sub(_expd2(x), oned); - - /* - * For x in [-1.0625,1.0625], use a rational approximation. - * The madd's are interleaved to reduce dependency stalls. Looks - * like gcc is smart enough to do this on it's own... but why - * take the chance. - */ - pr = spu_madd(x, spu_splats(EXPM1_P8), spu_splats(EXPM1_P7)); - qr = spu_madd(x, spu_splats(EXPM1_Q8), spu_splats(EXPM1_Q7)); - pr = spu_madd(pr, x, spu_splats(EXPM1_P6)); - qr = spu_madd(qr, x, spu_splats(EXPM1_Q6)); - pr = spu_madd(pr, x, spu_splats(EXPM1_P5)); - qr = spu_madd(qr, x, spu_splats(EXPM1_Q5)); - pr = spu_madd(pr, x, spu_splats(EXPM1_P4)); - qr = spu_madd(qr, x, spu_splats(EXPM1_Q4)); - pr = spu_madd(pr, x, spu_splats(EXPM1_P3)); - qr = spu_madd(qr, x, spu_splats(EXPM1_Q3)); - pr = spu_madd(pr, x, spu_splats(EXPM1_P2)); - qr = spu_madd(qr, x, spu_splats(EXPM1_Q2)); - pr = spu_madd(pr, x, spu_splats(EXPM1_P1)); - qr = spu_madd(qr, x, spu_splats(EXPM1_Q1)); - pr = spu_madd(pr, x, spu_splats(EXPM1_P0)); - qr = spu_madd(qr, x, spu_splats(EXPM1_Q0)); - rresult = _divd2(pr, qr); - - /* - * Select either direct calculation or rational approximation. - */ - result = spu_sel(rresult, eresult, use_exp); - - return result; -} - -#endif /* _EXPM1D2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/expm1f.h b/newlib/libm/machine/spu/headers/expm1f.h deleted file mode 100644 index afc0d9679..000000000 --- a/newlib/libm/machine/spu/headers/expm1f.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/expm1f4.h" - -static __inline float _expm1f(float vx) -{ - return spu_extract(_expm1f4(spu_promote(vx, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/expm1f4.h b/newlib/libm/machine/spu/headers/expm1f4.h deleted file mode 100644 index 519da1d2c..000000000 --- a/newlib/libm/machine/spu/headers/expm1f4.h +++ /dev/null @@ -1,118 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _EXPM1F4_H_ -#define _EXPM1F4_H_ 1 - -#include <spu_intrinsics.h> - -#include "expf4.h" -#include "divf4.h" - - -#define EXPM1F4_P0 0.0000000000000000000000000e-00 -#define EXPM1F4_P1 9.9999999999999988897769754e-01 -#define EXPM1F4_P2 -6.5597409827762467697531701e-04 -#define EXPM1F4_P3 2.3800889637330315679042414e-02 -#define EXPM1F4_P4 -1.0914929910143700584950963e-05 - -#define EXPM1F4_Q0 1.0000000000000000000000000e-00 -#define EXPM1F4_Q1 -5.0065597410018825019761834e-01 -#define EXPM1F4_Q2 1.0746220997195164714721471e-01 -#define EXPM1F4_Q3 -1.1966024153043854083566799e-02 -#define EXPM1F4_Q4 5.9997727954467768105711878e-04 - - -/* - * FUNCTION - * vector float _expm1f4(vector float x) - * - * _expm1d2 computes the exponential - 1 for each element - * of the input vector x. - * - * This function is intended to return accurate values, even - * where exp(x) - 1 would normally produce bad results due to - * floating-point cancellation errors. - * - */ - -static __inline vector float _expm1f4(vector float x) -{ - vector float onef = spu_splats(1.0f); - vector float rangelo = spu_splats(-0.4f); - vector float rangehi = spu_splats(0.35f); - vector unsigned int use_exp; - vector float pr, qr; - vector float eresult; - vector float rresult; - vector float result; - - use_exp = spu_or(spu_cmpgt(x, rangehi), spu_cmpgt(rangelo, x)); - - /* - * Calculate directly using exp(x) - 1 - */ - eresult = spu_sub(_expf4(x), onef); - - /* - * For x in [-0.5,0.5], use a rational approximation. - * The madd's are interleaved to reduce dependency stalls. Looks - * like gcc is smart enough to do this on it's own... but why - * take the chance. - */ - pr = spu_madd(x, spu_splats((float)EXPM1F4_P4), spu_splats((float)EXPM1F4_P3)); - qr = spu_madd(x, spu_splats((float)EXPM1F4_Q4), spu_splats((float)EXPM1F4_Q3)); - pr = spu_madd(pr, x, spu_splats((float)EXPM1F4_P2)); - qr = spu_madd(qr, x, spu_splats((float)EXPM1F4_Q2)); - pr = spu_madd(pr, x, spu_splats((float)EXPM1F4_P1)); - qr = spu_madd(qr, x, spu_splats((float)EXPM1F4_Q1)); - pr = spu_madd(pr, x, spu_splats((float)EXPM1F4_P0)); - qr = spu_madd(qr, x, spu_splats((float)EXPM1F4_Q0)); - rresult = _divf4(pr, qr); - - /* - * Select either direct calculation or rational approximation. - */ - result = spu_sel(rresult, eresult, use_exp); - - return result; -} - -#endif /* _EXPM1F4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/fabs.h b/newlib/libm/machine/spu/headers/fabs.h deleted file mode 100644 index 1b9cfddc2..000000000 --- a/newlib/libm/machine/spu/headers/fabs.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FABS_H_ -#define _FABS_H_ 1 - -/* - * FUNCTION - * double _fabs(double value) - * - * DESCRIPTION - * The _fabsf routine returns the absolute value of the floating-point - * input value "value". This is accomplished by zeroing the most - * significant bit (ie, the sign bit) of the floating-point value. - */ - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline double _fabs(double x) -{ - vec_ullong2 vx; - - vx = (vec_ullong2)spu_promote(x, 0); - vx = spu_andc(vx, VEC_SPLAT_U64(0x8000000000000000ULL)); - - return (spu_extract((vec_double2)vx, 0)); -} -#endif /* _FABS_H_ */ diff --git a/newlib/libm/machine/spu/headers/fabsf.h b/newlib/libm/machine/spu/headers/fabsf.h deleted file mode 100644 index f6d0a2e03..000000000 --- a/newlib/libm/machine/spu/headers/fabsf.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FABSF_H_ -#define _FABSF_H_ 1 - -/* - * FUNCTION - * float _fabsf(float value) - * - * DESCRIPTION - * The _fabsf routine returns the absolute value of the floating-point - * input value "value". This is accomplished by zeroing the most - * significant bit (ie, the sign bit) of the floating-point value. - */ - -static __inline float _fabsf(float value) -{ - union { - unsigned int ui; - float f; - } in; - - in.f = value; - in.ui = (in.ui << 1) >> 1; - - return (in.f); -} -#endif /* _FABSF_H_ */ - - diff --git a/newlib/libm/machine/spu/headers/fdim.h b/newlib/libm/machine/spu/headers/fdim.h deleted file mode 100644 index 8359d880a..000000000 --- a/newlib/libm/machine/spu/headers/fdim.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FDIM_H_ -#define _FDIM_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* fdim - compute the positive difference of x and y. - */ -static __inline double _fdim(double x, double y) -{ - vec_double2 v; - vec_uint4 mask; - - v = spu_promote(x - y, 0); - mask = (vec_uint4)spu_shuffle(v, v, VEC_SPLAT_U8(0)); - v = spu_andc(v, (vec_double2)spu_rlmaska(mask, -31)); - - return (spu_extract(v, 0)); -} -#endif /* _FDIM_H_ */ diff --git a/newlib/libm/machine/spu/headers/fdimf.h b/newlib/libm/machine/spu/headers/fdimf.h deleted file mode 100644 index 89a98ef4b..000000000 --- a/newlib/libm/machine/spu/headers/fdimf.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FDIMF_H_ -#define _FDIMF_H_ 1 - -#include <spu_intrinsics.h> - -/* fdim - compute the positive difference of x and y. - */ -static __inline float _fdimf(float x, float y) -{ - vec_float4 vx, vy; - - vx = spu_promote(x, 0); - vy = spu_promote(y, 0); - return (spu_extract(spu_and(spu_sub(vx, vy), - (vec_float4)spu_cmpgt(vx, vy)), 0)); -} -#endif /* _FDIMF_H_ */ diff --git a/newlib/libm/machine/spu/headers/feclearexcept.h b/newlib/libm/machine/spu/headers/feclearexcept.h deleted file mode 100644 index 880367cce..000000000 --- a/newlib/libm/machine/spu/headers/feclearexcept.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FECLEAREXCEPT_H_ -#define _FECLEAREXCEPT_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline void _feclearexcept(int excepts) -{ - vec_uint4 fpscr, fpscr_mask; - - fpscr = spu_mffpscr(); - excepts = ~(excepts & FE_ALL_EXCEPT); - fpscr_mask = __unpack_fpscr((fenv_t) excepts); - fpscr = spu_and(fpscr, fpscr_mask); - spu_mtfpscr(fpscr); -} - -#endif /* _FECLEAREXCEPT_H_ */ diff --git a/newlib/libm/machine/spu/headers/fefpscr.h b/newlib/libm/machine/spu/headers/fefpscr.h deleted file mode 100644 index 316035c7b..000000000 --- a/newlib/libm/machine/spu/headers/fefpscr.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * Functions to pack/unpack the 128 bit fpscr to/from the 32 bit fenv_t. - * The fpscr currently has 32 of 128 bits defined. - */ - -#ifndef _FEFPSCR_H_ -#define _FEFPSCR_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> - -static __inline vec_uint4 __unpack_fpscr(fenv_t word) -{ - vec_uint4 fpscr; - vec_uchar16 splat = { 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3 }; - vec_short8 rotm = { -12, -9, -3, 0, -10, -7, -3, 0 }; - vec_uint4 mask = { 0x00000f07, 0x00003f07, 0x00003f07, 0x00000f07 }; - - fpscr = spu_promote (word, 0); - fpscr = spu_shuffle (fpscr, fpscr, splat); - /* - * The casts here are important, so we generate different code. - */ - fpscr = (vec_uint4) spu_rlmask ((vec_short8) fpscr, rotm); - fpscr = (vec_uint4) spu_and ((vec_short8) fpscr, 0xff); - fpscr = spu_or (spu_rlmask(fpscr, -8), fpscr); - fpscr = spu_and (fpscr, mask); - return fpscr; -} - -static __inline fenv_t __pack_fpscr(vec_uint4 fpscr) -{ - vec_uchar16 pat = { 0x80, 2, 0x80, 10, 0x80, 3, 0x80, 11, - 0x80, 6, 0x80, 14, 0x80, 7, 0x80, 15 }; - vec_ushort8 shl = { 12, 10, 9, 7, 3, 3, 0, 0 }; - vec_uint4 mask = { 0x00000f07, 0x00003f07, 0x00003f07, 0x00000f07 }; - vec_uint4 word; - - word = spu_and (fpscr, mask); - word = spu_shuffle (word, word, pat); - word = (vec_uint4) spu_sl ((vec_short8) word, shl); - word = spu_orx (word); - return spu_extract (word, 0); -} - -#endif diff --git a/newlib/libm/machine/spu/headers/fegetenv.h b/newlib/libm/machine/spu/headers/fegetenv.h deleted file mode 100644 index 5982eda69..000000000 --- a/newlib/libm/machine/spu/headers/fegetenv.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FEGETENV_H_ -#define _FEGETENV_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline void _fegetenv(fenv_t *envp) -{ - vec_uint4 fpscr; - - fpscr = spu_mffpscr(); - *envp = __pack_fpscr(fpscr); -} - -#endif /* _FEGETENV_H_ */ diff --git a/newlib/libm/machine/spu/headers/fegetexceptflag.h b/newlib/libm/machine/spu/headers/fegetexceptflag.h deleted file mode 100644 index 33e559418..000000000 --- a/newlib/libm/machine/spu/headers/fegetexceptflag.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FEGETEXCEPTFLAG_H_ -#define _FEGETEXCEPTFLAG_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline void _fegetexceptflag(fexcept_t *flagp, int excepts) -{ - vec_uint4 fpscr; - - excepts &= FE_ALL_EXCEPT; - fpscr = spu_mffpscr(); - *flagp = __pack_fpscr(fpscr) & excepts; -} - -#endif /* _FEGETEXCEPTFLAG_H_ */ diff --git a/newlib/libm/machine/spu/headers/fegetround.h b/newlib/libm/machine/spu/headers/fegetround.h deleted file mode 100644 index 7b5a5b5cc..000000000 --- a/newlib/libm/machine/spu/headers/fegetround.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FEGETROUND_H_ -#define _FEGETROUND_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> - -#define FE_MASK_ROUND (__FE_ROUND_ELE_0 | __FE_ROUND_ELE_1) - -static __inline int _fegetround() -{ - return (((spu_extract(spu_mffpscr(), 0) >> 8) & 0xf) | FE_MASK_ROUND); -} - -#endif /* _FEGETROUND_H_ */ diff --git a/newlib/libm/machine/spu/headers/feholdexcept.h b/newlib/libm/machine/spu/headers/feholdexcept.h deleted file mode 100644 index 9f6bd521b..000000000 --- a/newlib/libm/machine/spu/headers/feholdexcept.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FEHOLDEXCEPT_H_ -#define _FEHOLDEXCEPT_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline int _feholdexcept(fenv_t *envp) -{ - vec_uint4 fpscr; - fenv_t env; - - fpscr = spu_mffpscr(); - *envp = __pack_fpscr(fpscr); - env = *envp & ~FE_ALL_EXCEPT; - spu_mtfpscr(__unpack_fpscr(env)); - return (0); -} - -#endif /* _FEHOLDEXCEPT_H_ */ diff --git a/newlib/libm/machine/spu/headers/feraiseexcept.h b/newlib/libm/machine/spu/headers/feraiseexcept.h deleted file mode 100644 index 2e7b24722..000000000 --- a/newlib/libm/machine/spu/headers/feraiseexcept.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FERAISEEXCEPT_H_ -#define _FERAISEEXCEPT_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline void _feraiseexcept(int excepts) -{ - vec_uint4 fpscr, big_except; - - fpscr = spu_mffpscr(); - excepts = excepts & FE_ALL_EXCEPT; - big_except = __unpack_fpscr(excepts); - fpscr = spu_or(fpscr, big_except); - spu_mtfpscr(fpscr); -} - -#endif /* _FERAISEEXCEPT_H_ */ diff --git a/newlib/libm/machine/spu/headers/fesetenv.h b/newlib/libm/machine/spu/headers/fesetenv.h deleted file mode 100644 index 4f8eee305..000000000 --- a/newlib/libm/machine/spu/headers/fesetenv.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FESETENV_H_ -#define _FESETENV_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline void _fesetenv(const fenv_t *envp) -{ - vec_uint4 fpscr; - - fpscr = __unpack_fpscr(*envp); - spu_mtfpscr(fpscr); -} - -#endif /* _FESETENV_H_ */ diff --git a/newlib/libm/machine/spu/headers/fesetexceptflag.h b/newlib/libm/machine/spu/headers/fesetexceptflag.h deleted file mode 100644 index 9a3760840..000000000 --- a/newlib/libm/machine/spu/headers/fesetexceptflag.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FESETEXCEPTFLAG_H_ -#define _FESETEXCEPTFLAG_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline void _fesetexceptflag(const fexcept_t *flagp, int excepts) -{ - vec_uint4 fpscr; - fenv_t mask, pack_fpscr; - - fpscr = spu_mffpscr(); - pack_fpscr = __pack_fpscr(fpscr); - mask = excepts & FE_ALL_EXCEPT; - fpscr = __unpack_fpscr((pack_fpscr & ~mask) | (*flagp & mask)); - spu_mtfpscr(fpscr); -} - -#endif /* _FESETEXCEPTFLAG_H_ */ diff --git a/newlib/libm/machine/spu/headers/fesetround.h b/newlib/libm/machine/spu/headers/fesetround.h deleted file mode 100644 index 3cda4c80d..000000000 --- a/newlib/libm/machine/spu/headers/fesetround.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FESETROUND_H_ -#define _FESETROUND_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> - -#define FE_MASK_ROUND (__FE_ROUND_ELE_0 | __FE_ROUND_ELE_1) - -#define SMALL (FE_MASK_ROUND - 1) -#define LARGE (FE_MASK_ROUND + \ - ((__FE_SPU_DOWNWARD << 2) | __FE_SPU_DOWNWARD) + 1) - -static __inline int _fesetround(int mode) -{ - unsigned int umode; - vec_uint4 vec_mode; - vec_uint4 valid, fail; - vec_uint4 cur_fpscr, new_fpscr, mask_fpscr; - vec_uint4 const valid_ele0 = - { FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD, FE_DOWNWARD }; - vec_uint4 const valid_ele1 = - { FE_TONEAREST_1, FE_TOWARDZERO_1, FE_UPWARD_1, FE_DOWNWARD_1 }; - vec_uint4 const too_large = { LARGE, LARGE, LARGE, LARGE }; - vec_uchar16 const splat_ele0 = - { 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3 }; - vec_uint4 const clear_non_ele0 = { 0xffffffff, 0, 0, 0 }; - - /* - * There are 24 valid values, check for a range plus the other 8 - * rather than check for specific bit settings. - * - * These are all the valid values: - * 0xf00 through 0xf0f (SMALL + 1 through LARGE - 1, 16 values) - * 0xc00 0xc04 0xc08 0xc0c (in ele0) - * 0x300 0x301 0x302 0x303 (in ele1) - */ - umode = mode; - vec_mode = spu_splats(umode); - valid = spu_cmpeq(vec_mode, valid_ele0); - valid = spu_or(valid, spu_cmpeq(vec_mode, valid_ele1)); - valid = spu_or(valid, spu_cmpgt(vec_mode, SMALL)); - valid = spu_and(valid, spu_cmpgt(too_large, vec_mode)); - - fail = spu_gather(valid); - fail = spu_cmpeq(fail, 0); - /* - * set all elements of fail to the value of fail's element 0, so - * we can select the current fpscr values on failure. - */ - fail = spu_shuffle(fail, fail, splat_ele0); - - cur_fpscr = spu_mffpscr(); - /* - * We don't have to mask the round element selection out since it - * is shifted out. - */ - new_fpscr = spu_promote(umode << 8, 0); - new_fpscr = spu_and(new_fpscr, clear_non_ele0); - /* - * Use the element bits of the mode to set the mask. - */ - mask_fpscr = spu_promote((umode & FE_MASK_ROUND), 0); - new_fpscr = spu_sel(cur_fpscr, new_fpscr, mask_fpscr); - /* - * Use the current fpscr value if the round mode was invalid - */ - new_fpscr = spu_sel(new_fpscr, cur_fpscr, fail); - spu_mtfpscr(new_fpscr); - - return spu_extract(fail, 0); -} -#endif /* _FESETROUND_H_ */ diff --git a/newlib/libm/machine/spu/headers/fetestexcept.h b/newlib/libm/machine/spu/headers/fetestexcept.h deleted file mode 100644 index e89049d00..000000000 --- a/newlib/libm/machine/spu/headers/fetestexcept.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FETESTEXCEPT_H_ -#define _FETESTEXCEPT_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline int _fetestexcept(int excepts) -{ - vec_uint4 fpscr; - - excepts &= FE_ALL_EXCEPT; - fpscr = spu_mffpscr(); - return (__pack_fpscr(fpscr) & excepts); -} - -#endif /* _FETESTEXCEPT_H_ */ diff --git a/newlib/libm/machine/spu/headers/feupdateenv.h b/newlib/libm/machine/spu/headers/feupdateenv.h deleted file mode 100644 index a946608c4..000000000 --- a/newlib/libm/machine/spu/headers/feupdateenv.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FEUPDATEENV_H_ -#define _FEUPDATEENV_H_ 1 - -#include <spu_intrinsics.h> -#include <fenv.h> -#include "headers/fefpscr.h" - -static __inline void _feupdateenv(const fenv_t *envp) -{ - vec_uint4 fpscr; - - fpscr = __unpack_fpscr(*envp); - spu_mtfpscr(fpscr); -} - -#endif /* _FEUPDATEENV_H_ */ diff --git a/newlib/libm/machine/spu/headers/floor.h b/newlib/libm/machine/spu/headers/floor.h deleted file mode 100644 index 6675b948d..000000000 --- a/newlib/libm/machine/spu/headers/floor.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FLOOR_H_ -#define _FLOOR_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input downwards to the nearest integer. - */ -static __inline double _floor(double x) -{ - vec_uchar16 swap_words = VEC_LITERAL(vec_uchar16, 4,5,6,7, 0,1,2,3, 12,13,14,15, 8,9,10,11); - vec_uchar16 splat_hi = VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11); - vec_uint4 one = VEC_LITERAL(vec_uint4, 0, 1, 0, 1); - vec_int4 exp, shift; - vec_uint4 mask, mask_1, frac_mask, addend, insert, pos, equal0; - vec_ullong2 sign = VEC_SPLAT_U64(0x8000000000000000ULL); - vec_double2 in, in_hi, out; - vec_double2 minus_one = VEC_SPLAT_F64(-1.0); - - in = spu_promote(x, 0); - - /* This function generates the following component - * based upon the inputs. - * - * mask = bits of the input that need to be replaced. - * insert = value of the bits that need to be replaced - * addend = value to be added to perform function. - * - * These are applied as follows:. - * - * out = ((in & mask) | insert) + addend - */ - in_hi = spu_shuffle(in, in, splat_hi); - pos = spu_cmpgt((vec_int4)in_hi, -1); - exp = spu_and(spu_rlmask((vec_int4)in_hi, -20), 0x7FF); - shift = spu_sub(VEC_LITERAL(vec_int4, 1023, 1043, 1023, 1043), exp); - - /* clamp shift to the range 0 to -31. - */ - shift = spu_sel(VEC_SPLAT_S32(-32), spu_andc(shift, (vec_int4)spu_cmpgt(shift, 0)), spu_cmpgt(shift, -32)); - - frac_mask = spu_rlmask(VEC_LITERAL(vec_uint4, 0xFFFFF, -1, 0xFFFFF, -1), shift); - mask = spu_orc(frac_mask, spu_cmpgt(exp, 0x3FE)); - - /* addend = ((in & mask) && (in >= 0)) ? mask+1 : 0 - */ - mask_1 = spu_addx(mask, one, spu_rlqwbyte(spu_genc(mask, one), 4)); - - equal0 = spu_cmpeq(spu_and((vec_uint4)in, mask), 0); - addend = spu_andc(spu_andc(mask_1, pos), - spu_and(equal0, spu_shuffle(equal0, equal0, swap_words))); - - insert = spu_andc(spu_andc((vec_uint4)minus_one, pos), - spu_cmpgt((vec_uint4)spu_add(exp, -1), 1022)); - - in = spu_sel(in, (vec_double2)insert, spu_andc((vec_ullong2)mask, sign)); - out = (vec_double2)spu_addx((vec_uint4)in, addend, - spu_rlqwbyte(spu_genc((vec_uint4)in, addend), 4)); - - return (spu_extract(out, 0)); -} -#endif /* _FLOOR_H_ */ diff --git a/newlib/libm/machine/spu/headers/floord2.h b/newlib/libm/machine/spu/headers/floord2.h deleted file mode 100644 index 247884d51..000000000 --- a/newlib/libm/machine/spu/headers/floord2.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _FLOORD2_H_ -#define _FLOORD2_H_ 1 - -#include <spu_intrinsics.h> - - -/* - * FUNCTION - * vector double _floord2(vector double x) - * - * DESCRIPTION - * The _floord2 function rounds the elements of an vector double - * input vector downwards to their nearest integer representable - * as a double. - * - */ -static __inline vector double _floord2(vector double in) -{ - vec_uchar16 swap_words = (vec_uchar16) { 4,5,6,7, 0,1,2,3, 12,13,14,15, 8,9,10,11 }; - vec_uchar16 splat_hi = (vec_uchar16) { 0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11 }; - vec_uint4 one = (vec_uint4) { 0, 1, 0, 1 }; - vec_int4 exp, shift; - vec_uint4 mask, mask_1, frac_mask, addend, insert, pos, equal0; - vec_ullong2 sign = spu_splats(0x8000000000000000ULL); - vec_double2 in_hi, out; - vec_double2 minus_one = spu_splats(-1.0); - - /* This function generates the following component - * based upon the inputs. - * - * mask = bits of the input that need to be replaced. - * insert = value of the bits that need to be replaced - * addend = value to be added to perform function. - * - * These are applied as follows:. - * - * out = ((in & mask) | insert) + addend - */ - in_hi = spu_shuffle(in, in, splat_hi); - pos = spu_cmpgt((vec_int4)in_hi, -1); - exp = spu_and(spu_rlmask((vec_int4)in_hi, -20), 0x7FF); - shift = spu_sub(((vec_int4) { 1023, 1043, 1023, 1043 } ), exp); - - /* clamp shift to the range 0 to -31. - */ - shift = spu_sel(spu_splats(-32), spu_andc(shift, (vec_int4)spu_cmpgt(shift, 0)), spu_cmpgt(shift, -32)); - - frac_mask = spu_rlmask(((vec_uint4) { 0xFFFFF, -1, 0xFFFFF, -1 } ), shift); - mask = spu_orc(frac_mask, spu_cmpgt(exp, 0x3FE)); - - /* addend = ((in & mask) && (in >= 0)) ? mask+1 : 0 - */ - mask_1 = spu_addx(mask, one, spu_rlqwbyte(spu_genc(mask, one), 4)); - - equal0 = spu_cmpeq(spu_and((vec_uint4)in, mask), 0); - addend = spu_andc(spu_andc(mask_1, pos), spu_and(equal0, spu_shuffle(equal0, equal0, swap_words))); - - insert = spu_andc(spu_andc((vec_uint4)minus_one, pos), - spu_cmpgt((vec_uint4)spu_add(exp, -1), 1022)); - - in = spu_sel(in, (vec_double2)insert, spu_andc((vec_ullong2)mask, sign)); - out = (vec_double2)spu_addx((vec_uint4)in, addend, spu_rlqwbyte(spu_genc((vec_uint4)in, addend), 4)); - - return (out); -} - -#endif /* _FLOORD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/floorf.h b/newlib/libm/machine/spu/headers/floorf.h deleted file mode 100644 index e6cc0f89e..000000000 --- a/newlib/libm/machine/spu/headers/floorf.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FLOORF_H_ -#define _FLOORF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* - * FUNCTION - * float _floorf(float value) - * - * DESCRIPTION - * The _floorf routine round the input value "value" downwards to the - * nearest integer returning the result as a float. Two forms of the - * floor function are provided - full range and limited (integer) - * range. - * - * The full range form (default) provides floor computation on - * all IEEE floating point values. The floor of NANs remain NANs. - * The floor of denorms results in zero. - * - * The limited range form (selected by defining FLOOR_INTEGER_RANGE) - * compute ths floor of all floating-point values in the 32-bit - * signed integer range. Values outside this range get clamped. - */ - -static __inline float _floorf(float value) -{ -#ifdef FLOOR_INTEGER_RANGE - /* 32-BIT INTEGER DYNAMIC RANGE - */ - union { - float f; - signed int i; - unsigned int ui; - } bias; - - bias.f = value; - - /* If positive, bias the input value to truncate towards - * positive infinity, instead of zero. - */ - bias.ui = (unsigned int)(bias.i >> 31) & 0x3F7FFFFF; - value -= bias.f; - - /* Remove fraction bits by casting to an integer and back - * to a floating-point value. - */ - return ((float)((int)value)); - -#else /* !FLOOR_INTEGER_RANGE */ - /* FULL FLOATING-POINT RANGE - */ - vec_int4 exp, shift; - vec_uint4 mask, frac_mask, addend, insert, pos; - vec_float4 in, out; - - in = spu_promote(value, 0); - - /* This function generates the following component - * based upon the inputs. - * - * mask = bits of the input that need to be replaced. - * insert = value of the bits that need to be replaced - * addend = value to be added to perform function. - * - * These are applied as follows:. - * - * out = ((in & mask) | insert) + addend - */ - pos = spu_cmpgt((vec_int4)in, -1); - exp = spu_and(spu_rlmask((vec_int4)in, -23), 0xFF); - - shift = spu_sub(127, exp); - - frac_mask = spu_and(spu_rlmask(VEC_SPLAT_U32(0x7FFFFF), shift), - spu_cmpgt((vec_int4)shift, -31)); - - mask = spu_orc(frac_mask, spu_cmpgt(exp, 126)); - - addend = spu_andc(spu_andc(spu_add(mask, 1), pos), - spu_cmpeq(spu_and((vec_uint4)in, mask), 0)); - - insert = spu_andc(spu_andc(VEC_SPLAT_U32(0xBF800000), pos), - spu_cmpgt((vec_uint4)spu_add(exp, -1), 126)); - - out = (vec_float4)spu_add(spu_sel((vec_uint4)in, insert, mask), addend); - - return (spu_extract(out, 0)); -#endif /* FLOOR_INTEGER_RANGE */ -} -#endif /* _FLOORF_H_ */ diff --git a/newlib/libm/machine/spu/headers/floorf4.h b/newlib/libm/machine/spu/headers/floorf4.h deleted file mode 100644 index e816f0359..000000000 --- a/newlib/libm/machine/spu/headers/floorf4.h +++ /dev/null @@ -1,105 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _FLOORF4_H_ -#define _FLOORF4_H_ 1 - -#include <spu_intrinsics.h> - - -/* - * FUNCTION - * vector float _floorf4(vector float value) - * - * DESCRIPTION - * The _floorf4 routine rounds a vector of input values "value" downwards - * to their nearest integer returning the result as a vector of floats. - * - * The full range form (default) provides floor computation on - * all IEEE floating point values. The floor of NANs remain NANs. - * The floor of denorms results in zero. - * - */ -static __inline vector float _floorf4(vector float value) -{ - - /* FULL FLOATING-POINT RANGE - */ - vec_int4 exp, shift; - vec_uint4 mask, frac_mask, addend, insert, pos; - vec_float4 out; - - /* This function generates the following component - * based upon the inputs. - * - * mask = bits of the input that need to be replaced. - * insert = value of the bits that need to be replaced - * addend = value to be added to perform function. - * - * These are applied as follows:. - * - * out = ((in & mask) | insert) + addend - */ - pos = spu_cmpgt((vec_int4)value, -1); - exp = spu_and(spu_rlmask((vec_int4)value, -23), 0xFF); - - shift = spu_sub(127, exp); - - frac_mask = spu_and(spu_rlmask(spu_splats((unsigned int)0x7FFFFF), shift), - spu_cmpgt((vec_int4)shift, -31)); - - mask = spu_orc(frac_mask, spu_cmpgt(exp, 126)); - - addend = spu_andc(spu_andc(spu_add(mask, 1), pos), spu_cmpeq(spu_and((vec_uint4)value, mask), 0)); - - insert = spu_andc(spu_andc(spu_splats((unsigned int)0xBF800000), pos), - spu_cmpgt((vec_uint4)spu_add(exp, -1), 126)); - - out = (vec_float4)spu_add(spu_sel((vec_uint4)value, insert, mask), addend); - - /* Preserve orignal sign bit (for -0 case) - */ - out = spu_sel(out, value, spu_splats((unsigned int)0x80000000)); - - return (out); -} -#endif /* _FLOORF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/fma.h b/newlib/libm/machine/spu/headers/fma.h deleted file mode 100644 index c3e910696..000000000 --- a/newlib/libm/machine/spu/headers/fma.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef _FMA_H_ -#define _FMA_H_ 1 - -#include <spu_intrinsics.h> - -static __inline double _fma(double x, double y, double z) -{ - vec_double2 vx, vy, vz, vout;; - - vx = spu_promote(x, 0); - vy = spu_promote(y, 0); - vz = spu_promote(z, 0); - vout = spu_madd(vx, vy, vz); - return (spu_extract(vout, 0)); -} -#endif /* _FMA_H_ */ diff --git a/newlib/libm/machine/spu/headers/fmaf.h b/newlib/libm/machine/spu/headers/fmaf.h deleted file mode 100644 index 7ae09e337..000000000 --- a/newlib/libm/machine/spu/headers/fmaf.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FMAF_H_ -#define _FMAF_H_ 1 - -#include <spu_intrinsics.h> - -static __inline float _fmaf(float x, float y, float z) -{ - return (spu_extract(spu_madd(spu_promote(x, 0), spu_promote(y, 0), - spu_promote(z, 0)), 0)); -} -#endif /* _FMAF_H_ */ diff --git a/newlib/libm/machine/spu/headers/fmax.h b/newlib/libm/machine/spu/headers/fmax.h deleted file mode 100644 index f3e3358e6..000000000 --- a/newlib/libm/machine/spu/headers/fmax.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FMAX_H_ -#define _FMAX_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Return the maximum numeric value of their arguments. If one argument - * is a NaN, fmax returns the other value. If both are NaNs, then a NaN - * is returned. - * - * Notes: - * 1) Double precision denorms equate to zero so two denorms compare - * equal thereby making the following true for two denorm inputs - * fmax(a, b) != fmax(b, a); - */ -static __inline double _fmax(double x, double y) -{ - vec_uint4 nan_x, selector, abs_x, gt, eq; - vec_uint4 sign = VEC_LITERAL(vec_uint4, 0x80000000, 0, 0x80000000, 0); - vec_uint4 infinity = VEC_LITERAL(vec_uint4, 0x7FF00000, 0, 0x7FF00000, 0); - vec_double2 vx, vy, diff, max; - - vx = spu_promote(x, 0); - vy = spu_promote(y, 0); - - /* If x is a NaN, then select y as max - */ - abs_x = spu_andc((vec_uint4)vx, sign); - gt = spu_cmpgt(abs_x, infinity); - eq = spu_cmpeq(abs_x, infinity); - - nan_x = spu_or(gt, spu_and(eq, spu_rlqwbyte(gt, 4))); - - diff = spu_sub(vx, vy); - selector = spu_orc(nan_x, spu_cmpgt((vec_int4)diff, -1)); - selector = spu_maskw(spu_extract(selector, 0)); - - max = spu_sel(vx, vy, (vec_ullong2)selector); - - return (spu_extract(max, 0)); -} - -#endif /* _FMAX_H_ */ diff --git a/newlib/libm/machine/spu/headers/fmaxf.h b/newlib/libm/machine/spu/headers/fmaxf.h deleted file mode 100644 index e1c2352f2..000000000 --- a/newlib/libm/machine/spu/headers/fmaxf.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FMAXF_H_ -#define _FMAXF_H_ 1 - -#include <spu_intrinsics.h> - -/* Return the maximum numeric value of their arguments. - */ -static __inline float _fmaxf(float x, float y) -{ - vec_float4 vx, vy; - - vx = spu_promote(x, 0); - vy = spu_promote(y, 0); - return (spu_extract(spu_sel(vx, vy, spu_cmpgt(vy, vx)), 0)); -} -#endif /* _FMAXF_H_ */ diff --git a/newlib/libm/machine/spu/headers/fmin.h b/newlib/libm/machine/spu/headers/fmin.h deleted file mode 100644 index 45db5191e..000000000 --- a/newlib/libm/machine/spu/headers/fmin.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FMIN_H_ -#define _FMIN_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Return the minimum numeric value of their arguments. If one argument - * is a NaN, fmin returns the other value. If both are NaNs, then a NaN - * is returned. - * - * Notes: - * 1) Double precision denorms equate to zero so two denorms compare - * equal thereby making the following true for two denorm inputs - * fmin(a, b) != fmin(b, a); - */ - -static __inline double _fmin(double x, double y) -{ - vec_uint4 nan_x, selector, abs_x, gt, eq; - vec_uint4 sign = VEC_LITERAL(vec_uint4, 0x80000000, 0, 0x80000000, 0); - vec_uint4 infinity = VEC_LITERAL(vec_uint4, 0x7FF00000, 0, 0x7FF00000, 0); - vec_double2 vx, vy, diff, min; - - vx = spu_promote(x, 0); - vy = spu_promote(y, 0); - - /* If x is a NaN, then select y as min - */ - abs_x = spu_andc((vec_uint4)vx, sign); - gt = spu_cmpgt(abs_x, infinity); - eq = spu_cmpeq(abs_x, infinity); - - nan_x = spu_or(gt, spu_and(eq, spu_rlqwbyte(gt, 4))); - - diff = spu_sub(vy, vx); - selector = spu_orc(nan_x, spu_cmpgt((vec_int4)diff, -1)); - selector = spu_maskw(spu_extract(selector, 0)); - - min = spu_sel(vx, vy, (vec_ullong2)selector); - - return (spu_extract(min, 0)); -} -#endif /* _FMIN_H_ */ diff --git a/newlib/libm/machine/spu/headers/fminf.h b/newlib/libm/machine/spu/headers/fminf.h deleted file mode 100644 index 56fa556af..000000000 --- a/newlib/libm/machine/spu/headers/fminf.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FMINF_H_ -#define _FMINF_H_ 1 - -#include <spu_intrinsics.h> - -/* Return the minimum numeric value of their arguments. - */ -static __inline float _fminf(float x, float y) -{ - vec_float4 vx, vy; - - vx = spu_promote(x, 0); - vy = spu_promote(y, 0); - return (spu_extract(spu_sel(vx, vy, spu_cmpgt(vx, vy)), 0)); -} -#endif /* _FMINF_H_ */ diff --git a/newlib/libm/machine/spu/headers/fmod.h b/newlib/libm/machine/spu/headers/fmod.h deleted file mode 100644 index 0236da187..000000000 --- a/newlib/libm/machine/spu/headers/fmod.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FMOD_H_ -#define _FMOD_H_ 1 - -#include <spu_intrinsics.h> -#include <errno.h> -#include "headers/vec_literal.h" - -/* This implementation returns zero if y is a denorm or zero. - */ -static __inline double _fmod(double x, double y) -{ - int n, shift; - vec_uchar16 swap_words = VEC_LITERAL(vec_uchar16, 4,5,6,7, 0,1,2,3, 12,13,14,15, 8,9,10,11); - vec_uchar16 propagate = VEC_LITERAL(vec_uchar16, 4,5,6,7, 192,192,192,192, 12,13,14,15, 192,192,192,192); - vec_uchar16 splat_hi = VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11); - vec_uint4 vx, vy, z; - vec_uint4 x_hi, y_hi; - vec_uint4 abs_x, abs_y; - vec_uint4 exp_x, exp_y; - vec_uint4 zero_x, zero_y; - vec_uint4 logb_x, logb_y; - vec_uint4 mant_x, mant_y; - vec_uint4 normal, norm, denorm; - vec_uint4 result, result0, resultx, cnt, sign, borrow; - vec_uint4 lsb = (vec_uint4)(VEC_SPLAT_U64(0x0000000000000001ULL)); - vec_uint4 sign_mask = (vec_uint4)(VEC_SPLAT_U64(0x8000000000000000ULL)); - vec_uint4 implied_1 = (vec_uint4)(VEC_SPLAT_U64(0x0010000000000000ULL)); - vec_uint4 mant_mask = (vec_uint4)(VEC_SPLAT_U64(0x000FFFFFFFFFFFFFULL)); - vec_ullong2 domain; - vec_int4 verrno; - vec_double2 vc = { 0.0, 0.0 }; - vec_int4 fail = { EDOM, EDOM, EDOM, EDOM }; - - vx = (vec_uint4)spu_promote(x, 0); - vy = (vec_uint4)spu_promote(y, 0); - - abs_x = spu_andc(vx, sign_mask); - abs_y = spu_andc(vy, sign_mask); - - sign = spu_and(vx, sign_mask); - - x_hi = spu_shuffle(abs_x, abs_x, splat_hi); - y_hi = spu_shuffle(abs_y, abs_y, splat_hi); - - /* Determine ilogb of abs_x and abs_y and - * extract the mantissas (mant_x, mant_y) - */ - exp_x = spu_rlmask(x_hi, -20); - exp_y = spu_rlmask(y_hi, -20); - - resultx = spu_cmpgt(y_hi, x_hi); - - zero_x = spu_cmpeq(exp_x, 0); - zero_y = spu_cmpeq(exp_y, 0); - - logb_x = spu_add(exp_x, -1023); - logb_y = spu_add(exp_y, -1023); - - mant_x = spu_andc(spu_sel(implied_1, abs_x, mant_mask), zero_x); - mant_y = spu_andc(spu_sel(implied_1, abs_y, mant_mask), zero_y); - - /* Compute fixed point fmod of mant_x and mant_y. Set the flag, - * result0, to all ones if we detect that the final result is - * ever 0. - */ - result0 = spu_or(zero_x, zero_y); - - n = spu_extract(spu_sub(logb_x, logb_y), 0); - - while (n-- > 0) { - borrow = spu_genb(mant_x, mant_y); - borrow = spu_shuffle(borrow, borrow, propagate); - z = spu_subx(mant_x, mant_y, borrow); - - result0 = spu_or(spu_cmpeq(spu_or(z, spu_shuffle(z, z, swap_words)), 0), result0); - - mant_x = spu_sel(spu_slqw(mant_x, 1), spu_andc(spu_slqw(z, 1), lsb), - spu_cmpgt((vec_int4)spu_shuffle(z, z, splat_hi), -1)); - } - - borrow = spu_genb(mant_x, mant_y); - borrow = spu_shuffle(borrow, borrow, propagate); - z = spu_subx(mant_x, mant_y, borrow); - - mant_x = spu_sel(mant_x, z, - spu_cmpgt((vec_int4)spu_shuffle(z, z, splat_hi), -1)); - mant_x = spu_andc(mant_x, VEC_LITERAL(vec_uint4, 0,0,-1,-1)); - - result0 = spu_or(spu_cmpeq(spu_or(mant_x, spu_shuffle(mant_x, mant_x, swap_words)), 0), result0); - - /* Convert the result back to floating point and restore - * the sign. If we flagged the result to be zero (result0), - * zero it. If we flagged the result to equal its input x, - * (resultx) then return x. - * - * Double precision generates a denorm for an output. - */ - cnt = spu_cntlz(mant_x); - cnt = spu_add(cnt, spu_and(spu_rlqwbyte(cnt, 4), spu_cmpeq(cnt, 32))); - cnt = spu_add(spu_shuffle(cnt, cnt, splat_hi), -11); - - shift = spu_extract(exp_y, 0) - 1; - denorm = spu_slqwbytebc(spu_slqw(mant_x, shift), shift); - - exp_y = spu_sub(exp_y, cnt); - - normal = spu_cmpgt((vec_int4)exp_y, 0); - - /* Normalize normal results, denormalize denorm results. - */ - shift = spu_extract(cnt, 0); - norm = spu_slqwbytebc(spu_slqw(spu_andc(mant_x, VEC_LITERAL(vec_uint4, 0x00100000, 0, -1, -1)), shift), shift); - - mant_x = spu_sel(denorm, norm, normal); - - exp_y = spu_and(spu_rl(exp_y, 20), normal); - - result = spu_sel(exp_y, spu_or(sign, mant_x), VEC_LITERAL(vec_uint4, 0x800FFFFF, -1, 0x800FFFFF, -1)); - - result = spu_sel(spu_andc(result, spu_rlmask(result0, -1)), vx, - resultx); - -#ifndef _IEEE_LIBM - /* - * If y is zero, set errno to EDOM - */ - domain = spu_cmpeq(vc, (vec_double2) vy); - verrno = spu_splats(errno); - errno = spu_extract(spu_sel(verrno, fail, (vector unsigned int) domain), 0); -#endif - - return (spu_extract((vec_double2)result, 0)); -} -#endif /* _FMOD_H_ */ diff --git a/newlib/libm/machine/spu/headers/fmodf.h b/newlib/libm/machine/spu/headers/fmodf.h deleted file mode 100644 index a62141f97..000000000 --- a/newlib/libm/machine/spu/headers/fmodf.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FMODF_H_ -#define _FMODF_H_ 1 - -#include <errno.h> -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -#include "fabsf.h" - -/* - * FUNCTION - * float _fmodf(float x, float y) - * - * DESCRIPTION - * The _fmodf subroutine computes the remainder of - * dividing x by y. The return value is x - n*y, where n is - * the quotient of x/y, rounded towards zero. - * - * The full range form (default) provides fmod computation on - * all IEEE floating point values (excluding floating overflow - * or underflow). - * - * The limited range form (selected by defining FMODF_INTEGER_RANGE) - * compute fmod of all floating-point x/y values in the 32-bit - * signed integer range. Values outside this range get clamped. - */ - -static __inline float _fmodf(float x, float y) -{ -#ifdef FMODF_INTEGER_RANGE - /* 32-BIT INTEGER DYNAMIC RANGE - */ - float abs_y; - float quotient; - - abs_y = _fabsf(y); - quotient = x/abs_y; - - return (abs_y*(quotient - ((float)((int)quotient)))); - -#else /* !FMODF_INTEGER_RANGE */ - /* FULL FLOATING-POINT RANGE - */ - int n; - vec_uint4 vx, vy, z; - vec_uint4 abs_x, abs_y; - vec_uint4 exp_x, exp_y; - vec_uint4 zero_x, zero_y; - vec_uint4 logb_x, logb_y; - vec_uint4 mant_x, mant_y; - vec_uint4 result, result0, resultx, cnt, sign; - vec_uint4 sign_mask = VEC_SPLAT_U32(0x80000000); - vec_uint4 implied_1 = VEC_SPLAT_U32(0x00800000); - vec_uint4 mant_mask = VEC_SPLAT_U32(0x007FFFFF); - vec_uint4 domain; - vec_int4 verrno; - vec_float4 vc = { 0.0, 0.0, 0.0, 0.0 }; - vec_int4 fail = { EDOM, EDOM, EDOM, EDOM }; - - vx = (vec_uint4)spu_promote(x, 0); - vy = (vec_uint4)spu_promote(y, 0); - - abs_x = spu_andc(vx, sign_mask); - abs_y = spu_andc(vy, sign_mask); - - sign = spu_and(vx, sign_mask); - - /* Determine ilogb of abs_x and abs_y and - * extract the mantissas (mant_x, mant_y) - */ - exp_x = spu_rlmask(abs_x, -23); - exp_y = spu_rlmask(abs_y, -23); - - resultx = spu_cmpgt(abs_y, abs_x); - - zero_x = spu_cmpeq(exp_x, 0); - zero_y = spu_cmpeq(exp_y, 0); - - logb_x = spu_add(exp_x, -127); - logb_y = spu_add(exp_y, -127); - - mant_x = spu_andc(spu_sel(implied_1, abs_x, mant_mask), zero_x); - mant_y = spu_andc(spu_sel(implied_1, abs_y, mant_mask), zero_y); - - /* Compute fixed point fmod of mant_x and mant_y. Set the flag, - * result0, to all ones if we detect that the final result is - * ever 0. - */ - result0 = spu_or(zero_x, zero_y); - - n = spu_extract(spu_sub(logb_x, logb_y), 0); - - while (n-- > 0) { - z = spu_sub(mant_x, mant_y); - - result0 = spu_or(spu_cmpeq(z, 0), result0); - - mant_x = spu_sel(spu_add(mant_x, mant_x), spu_add(z, z), - spu_cmpgt((vec_int4)z, -1)); - } - - z = spu_sub(mant_x, mant_y); - mant_x = spu_sel(mant_x, z, spu_cmpgt((vec_int4)z, -1)); - - result0 = spu_or(spu_cmpeq(mant_x, 0), result0); - - /* Convert the result back to floating point and restore - * the sign. If we flagged the result to be zero (result0), - * zero it. If we flagged the result to equal its input x, - * (resultx) then return x. - */ - cnt = spu_add(spu_cntlz(mant_x), -8); - - mant_x = spu_rl(spu_andc(mant_x, implied_1), (vec_int4)cnt); - - exp_y = spu_sub(exp_y, cnt); - result0 = spu_orc(result0, spu_cmpgt((vec_int4)exp_y, 0)); /* zero denorm results */ - exp_y = spu_rl(exp_y, 23); - - - result = spu_sel(exp_y, spu_or(sign, mant_x), VEC_SPLAT_U32(0x807FFFFF)); - - result = spu_sel(spu_andc(result, spu_rlmask(result0, -1)), vx, - resultx); - -#ifndef _IEEE_LIBM - /* - * If y is zero, set errno to EDOM - */ - domain = spu_cmpeq(vc, (vec_float4) vy); - verrno = spu_splats(errno); - errno = spu_extract(spu_sel(verrno, fail, (vector unsigned int) domain), 0); -#endif - - return (spu_extract((vec_float4)result, 0)); -#endif /* FMODF_INTEGER_RANGE */ -} -#endif /* _FMODF_H_ */ diff --git a/newlib/libm/machine/spu/headers/frexp.h b/newlib/libm/machine/spu/headers/frexp.h deleted file mode 100644 index 8b525c76e..000000000 --- a/newlib/libm/machine/spu/headers/frexp.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FREXP_H_ -#define _FREXP_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Return the normalized fraction and exponent to the number x. - * Double precision denorms treated as zero and return a 0 - * fraction and 0 exponent. The results are undefined for infinities - * and NaNs (double precision only). - */ -static __inline double _frexp(double x, int *pexp) -{ - vec_int4 exp; - vec_uint4 denorm, mask; - vec_double2 in, mant; - vec_double2 half = VEC_SPLAT_F64(0.5); - vec_ullong2 exp_mask = VEC_SPLAT_U64(0x7FF0000000000000ULL); - - in = spu_promote(x, 0); - - /* Normalize the mantissa (fraction part). - */ - mant = spu_sel(in, half, exp_mask); - - /* Zero the mantissa if the input is a denorm or zero - */ - exp = spu_and(spu_rlmask((vec_int4)in, -20), 0x7FF); - denorm = spu_cmpeq(exp, 0); - mask = spu_shuffle(denorm, denorm, VEC_SPLAT_U8(0)); - mant = spu_andc(mant, (vec_double2)mask); - - /* Zero exponent if zero or denorm input. Otherwise, compute - * exponent by removing the bias. - */ - exp = spu_andc(spu_add(exp, -1022), (vec_int4)mask); - - *pexp = spu_extract(exp, 0); - - return (spu_extract(mant, 0)); -} -#endif /* _FREXPF_H_ */ diff --git a/newlib/libm/machine/spu/headers/frexpf.h b/newlib/libm/machine/spu/headers/frexpf.h deleted file mode 100644 index 5de31da98..000000000 --- a/newlib/libm/machine/spu/headers/frexpf.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _FREXPF_H_ -#define _FREXPF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Return the normalized fraction and exponent to the number x. - */ -static __inline float _frexpf(float x, int *pexp) -{ - vec_int4 exp; - vec_uint4 mask; - vec_uint4 exp_mask = VEC_SPLAT_U32(0x7F800000); - vec_float4 half = VEC_SPLAT_F32(0.5f); - vec_float4 in, mant; - - in = spu_promote(x, 0); - - /* Normalize the mantissa (fraction part). - */ - mant = spu_sel(in, half, exp_mask); - - /* Zero the mantissa if the input is a denorm or zero - */ - exp = spu_and(spu_rlmask((vec_int4)in, -23), 0xFF); - mask = spu_cmpeq(exp, 0); - mant = spu_andc(mant, (vec_float4)mask); - - /* Zero exponent if zero or denorm input. Otherwise, compute - * exponent by removing the bias. - */ - exp = spu_andc(spu_add(exp, -126), (vec_int4)mask); - *pexp = spu_extract(exp, 0); - - return (spu_extract(mant, 0)); -} -#endif /* _FREXPF_H_ */ diff --git a/newlib/libm/machine/spu/headers/hypot.h b/newlib/libm/machine/spu/headers/hypot.h deleted file mode 100644 index e0fafb38c..000000000 --- a/newlib/libm/machine/spu/headers/hypot.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/hypotd2.h" - -static __inline double _hypot(double x, double y) -{ - return spu_extract(_hypotd2(spu_promote(x, 0), spu_promote(y, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/hypotd2.h b/newlib/libm/machine/spu/headers/hypotd2.h deleted file mode 100644 index c0f3f747e..000000000 --- a/newlib/libm/machine/spu/headers/hypotd2.h +++ /dev/null @@ -1,122 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _HYPOTD2_H_ -#define _HYPOTD2_H_ 1 - -#include <spu_intrinsics.h> -#include "sqrtd2.h" - -/* - * FUNCTION - * vector double hypotd2(vector double x, vector double y) - * - * DESCRIPTION - * The function hypotd2 returns a double vector in which each element is - * the square root of the sum of the squares of the corresponding - * elements of x and y. - * - * The purpose of this function is to avoid overflow during - * intermediate calculations, and therefore it is slower than - * simply calcualting sqrt(x^2 + y^2). - * - * This function is performed by factoring out the larger of the 2 - * input exponents and moving this factor outside of the sqrt calculation. - * This will minimize the possibility of over/underflow when the square - * of the values are calculated. Think of it as normalizing the larger - * input to the range [1,2). - * - * Special Cases: - * - hypot(x, +/-0) returns |x| - * - hypot(+/- infinity, y) returns +infinity - * - hypot(+/- infinity, NaN) returns +infinity - * - */ -static __inline vector double _hypotd2(vector double x, vector double y) -{ - vector unsigned long long emask = spu_splats(0x7FF0000000000000ull); - vector unsigned long long mmask = spu_splats(0x000FFFFFFFFFFFFFull); - vector signed long long bias = spu_splats(0x3FF0000000000000ll); - vector double oned = spu_splats(1.0); - vector double sbit = spu_splats(-0.0); - vector double inf = (vector double)spu_splats(0x7FF0000000000000ull); - vector double max, max_e, max_m; - vector double min, min_e, min_m; - vector unsigned long long xgty; - vector double sum; - vector double result; - - /* Only need absolute values for this function */ - x = spu_andc(x, sbit); - y = spu_andc(y, sbit); - xgty = spu_cmpgt(x,y); - - max = spu_sel(y,x,xgty); - min = spu_sel(x,y,xgty); - - /* Extract the exponents and mantissas */ - max_e = (vec_double2)spu_and((vec_ullong2)max, emask); - max_m = (vec_double2)spu_and((vec_ullong2)max, mmask); - min_e = (vec_double2)spu_and((vec_ullong2)min, emask); - min_m = (vec_double2)spu_and((vec_ullong2)min, mmask); - - /* Factor-out max exponent here by subtracting from min exponent */ - vec_llong2 min_e_int = (vec_llong2)spu_sub((vec_int4)min_e, (vec_int4)max_e); - min_e = (vec_double2)spu_add((vec_int4)min_e_int, (vec_int4)bias); - - /* If the new min exponent is too small, just set it to 0. It - * wouldn't contribute to the final result in either case. - */ - min_e = spu_sel(min_e, sbit, spu_cmpgt(sbit, min_e)); - - /* Combine new exponents with original mantissas */ - max = spu_or(oned, max_m); - min = spu_or(min_e, min_m); - - sum = _sqrtd2(spu_madd(max, max, spu_mul(min, min))); - sum = spu_mul(max_e, sum); - - /* Special case: x = +/- infinity */ - result = spu_sel(sum, inf, spu_cmpeq(x, inf)); - - return result; -} - -#endif /* _HYPOTD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/hypotf.h b/newlib/libm/machine/spu/headers/hypotf.h deleted file mode 100644 index 373b9d005..000000000 --- a/newlib/libm/machine/spu/headers/hypotf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/hypotf4.h" - -static __inline float _hypotf(float x, float y) -{ - return spu_extract(_hypotf4(spu_promote(x, 0), spu_promote(y, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/hypotf4.h b/newlib/libm/machine/spu/headers/hypotf4.h deleted file mode 100644 index bc46b8ba0..000000000 --- a/newlib/libm/machine/spu/headers/hypotf4.h +++ /dev/null @@ -1,127 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _HYPOTF4_H_ -#define _HYPOTF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "sqrtf4.h" - -/* - * FUNCTION - * vector float _hypotf4(vector float x, vector float y) - * - * DESCRIPTION - * The function hypotf4 returns a float vector in which each element is - * the square root of the sum of the squares of the corresponding - * elements of x and y. In other words, each element is sqrt(x^2 + y^2). - * - * The purpose of this function is to avoid overflow during - * intermediate calculations, and therefore it is slower than - * simply calcualting sqrt(x^2 + y^2). - * - * This function is performed by factoring out the larger of the 2 - * input exponents and moving this factor outside of the sqrt calculation. - * This will minimize the possibility of over/underflow when the square - * of the values are calculated. Think of it as normalizing the larger - * input to the range [1,2). - * - * - * Special Cases: - * - hypot(x, +/-0) returns |x| - * - hypot(+/- infinity, y) returns +infinity - * - hypot(+/- infinity, NaN) returns +infinity - * - */ - - -static __inline vector float _hypotf4(vector float x, vector float y) -{ - vector unsigned int emask = spu_splats(0x7F800000u); - vector unsigned int mmask = spu_splats(0x007FFFFFu); - vector signed int bias = spu_splats(0x3F800000); - vector float inf = (vec_float4)spu_splats(0x7F800000); - vector float onef = spu_splats(1.0f); - vector float sbit = spu_splats(-0.0f); - vector float max, max_e, max_m; - vector float min, min_e, min_m; - vector unsigned int xgty; - vector float sum; - vector float result; - - /* Only need absolute values for this function */ - x = spu_andc(x, sbit); - y = spu_andc(y, sbit); - xgty = spu_cmpgt(x,y); - - max = spu_sel(y,x,xgty); - min = spu_sel(x,y,xgty); - - /* Extract exponents and mantissas */ - max_e = (vec_float4)spu_and((vec_uint4)max, emask); - max_m = (vec_float4)spu_and((vec_uint4)max, mmask); - min_e = (vec_float4)spu_and((vec_uint4)min, emask); - min_m = (vec_float4)spu_and((vec_uint4)min, mmask); - - /* Adjust the exponent of the smaller of the 2 input values by - * subtracting max_exp from min_exp. - */ - vec_int4 min_e_int = spu_sub((vec_int4)min_e, (vec_int4)max_e); - min_e = (vec_float4)spu_add(min_e_int, bias); - - /* If the new min exponent is too small, just set it to 0. It - * wouldn't contribute to the final result in either case. - */ - min_e = spu_sel(min_e, sbit, spu_cmpgt(sbit, min_e)); - - /* Combine new exponents with original mantissas */ - max = spu_or(onef, max_m); - min = spu_or(min_e, min_m); - - sum = _sqrtf4(spu_madd(max, max, spu_mul(min, min))); - sum = spu_mul(max_e, sum); - - /* Special case: x = +/- infinity */ - result = spu_sel(sum, inf, spu_cmpeq(x, inf)); - - return result; -} - -#endif /* _HYPOTF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/ilogb.h b/newlib/libm/machine/spu/headers/ilogb.h deleted file mode 100644 index c0699a19a..000000000 --- a/newlib/libm/machine/spu/headers/ilogb.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _ILOGB_H_ -#define _ILOGB_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" -#include <limits.h> -#include <math.h> - -/* ilogb returns the signed exponent in the floating-point - * input. Special numbers include: - * Input Output - * ===== ===================== - * INF FP_ILOGBNAN (INT_MAX) - * NAN FP_ILOGBNAN (INT_MAX) - * denorm exponent - leading zeros - * 0 FP_ILOGB0 (INT_MIN) - * else signed exponent - */ - -static __inline int _ilogb(double x) -{ - vec_uint4 v, exp, exp_0, mant, mask, count; - vec_uint4 flg_exp_0, flg_exp_max; - - mask = VEC_SPLAT_U32(0x7FF); - - /* Extract the exponent and mantissa. - */ - v = (vec_uint4)spu_promote(x, 0); - - exp = spu_and(spu_rlmask(v, -20), mask); - - mant = spu_and(v, VEC_LITERAL(vec_uint4, 0x000FFFFF, 0xFFFFFFFF, 0, 0)); - - /* Count the leading zeros in the mantissa for denorm handling - * and zero identification. - */ - count = spu_cntlz(mant); - count = spu_add(count, spu_and(spu_rlqwbyte(count, 4), spu_cmpeq(count, 32))); - - flg_exp_0 = spu_cmpeq(exp, 0); - flg_exp_max = spu_cmpeq(exp, mask); - - exp = spu_add(exp, -1023); - - /* Determine the exponent if the input is a denorm or zero. - */ - exp_0 = spu_sel(spu_sub(spu_add(exp, 12), count), VEC_SPLAT_U32(FP_ILOGB0), spu_cmpeq(count, 64)); - - exp = spu_sel(spu_sel(exp, VEC_SPLAT_U32(FP_ILOGBNAN), flg_exp_max), exp_0, flg_exp_0); - - return (spu_extract((vec_int4)(exp), 0)); -} -#endif /* _ILOGB_H_ */ diff --git a/newlib/libm/machine/spu/headers/ilogbf.h b/newlib/libm/machine/spu/headers/ilogbf.h deleted file mode 100644 index 5c591f04f..000000000 --- a/newlib/libm/machine/spu/headers/ilogbf.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _ILOGBF_H_ -#define _ILOGBF_H_ 1 - -#include <spu_intrinsics.h> -#include <limits.h> -#include <math.h> -#include "headers/vec_literal.h" - -/* Single precision floats do not support infinities and NANs, and - * denorms are treated as zero. - */ -static __inline int _ilogbf(float x) -{ - vec_uint4 v, exp; - - v = (vec_uint4)spu_promote(x, 0); - exp = spu_and(spu_rlmask(v, -23), 0xFF); - exp = spu_sel(spu_add(exp, -127), VEC_SPLAT_U32(FP_ILOGB0), spu_cmpeq(exp, 0)); - return (spu_extract((vec_int4)(exp), 0)); -} -#endif /* _ILOGBF_H_ */ diff --git a/newlib/libm/machine/spu/headers/isnan.h b/newlib/libm/machine/spu/headers/isnan.h deleted file mode 100644 index ada7e6e8d..000000000 --- a/newlib/libm/machine/spu/headers/isnan.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/isnand2.h" - -static __inline int _isnan(double x) -{ - return spu_extract(_isnand2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/isnand2.h b/newlib/libm/machine/spu/headers/isnand2.h deleted file mode 100644 index 2d05e80c6..000000000 --- a/newlib/libm/machine/spu/headers/isnand2.h +++ /dev/null @@ -1,102 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ISNAND2_H_ -#define _ISNAND2_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector unsigned long long _isnand2(vector double x) - * - * DESCRIPTION - * The _isnand2 function returns a vector in which each element indicates - * if the corresponding element of x is not a number. (NaN) - * - * RETURNS - * The function _isnand2 returns an unsigned long long vector in which - * each element is defined as: - * - * - ULLONG_MAX if the element of x is NaN - * - 0 otherwise - * - */ -static __inline vector unsigned long long _isnand2(vector double x) -{ - -#ifndef __SPU_EDP__ - - vec_uint4 sign_mask = (vec_uint4) { 0x7FFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF }; - vec_uint4 test_mask = (vec_uint4) { 0x7FF00000, 0x00000000, 0x7FF00000, 0x00000000 }; - vec_uchar16 hi_promote = (vec_uchar16) { 0, 1, 2, 3, 0, 1, 2, 3, 8, 9, 10, 11, 8, 9, 10, 11 }; - - // Remove the sign bits - vec_uint4 signless = spu_and((vec_uint4)x,sign_mask); - - // Check if the high word is equal to the max_exp - vec_uint4 x2 = spu_cmpeq(signless,test_mask); - - // This checks two things: - // 1) If the high word is greater than max_exp (indicates a NaN) - // 2) If the low word is non-zero (indicates a NaN in conjunction with an - // exp equal to max_exp) - vec_uint4 x1 = spu_cmpgt(signless,test_mask); - - // rotate the low word test of x1 into the high word slot, then and it - // with the high word of x2 (checking for #2 above) - vec_uint4 exp_and_lw = spu_and(spu_rlqwbyte(x1,4),x2); - - // All the goodies are in the high words, so if the high word of either x1 - // or exp_and_lw is set, then we have a NaN, so we "or" them together - vec_uint4 result = spu_or(x1,exp_and_lw); - - // And then promote the resulting high word to 64 bit length - result = spu_shuffle(result,result,hi_promote); - - return (vec_ullong2) result; - -#else - - return spu_testsv(x, SPU_SV_NAN); - -#endif /* __SPU_EDP__ */ -} - -#endif // _ISNAND2_H_ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/isnanf.h b/newlib/libm/machine/spu/headers/isnanf.h deleted file mode 100644 index 61b1703c9..000000000 --- a/newlib/libm/machine/spu/headers/isnanf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/isnanf4.h" - -static __inline unsigned int _isnanf(float x) -{ - return spu_extract(_isnanf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/isnanf4.h b/newlib/libm/machine/spu/headers/isnanf4.h deleted file mode 100644 index d877a6523..000000000 --- a/newlib/libm/machine/spu/headers/isnanf4.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _ISNANF4_H_ -#define _ISNANF4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector unsigned int _isnanf4(vector float x) - * - * DESCRIPTION - * The _isnanf4 function returns a vector in which each element indicates - * if the corresponding element of x is NaN. - * - * On the SPU, this function always returns 0, since NaNs are not - * supported. - * - * RETURNS - * UINT_MAX (0xFFFFFFFF) if the element of x is a NaN - * 0 (0x00000000) otherwise (always on the SPU) - * - */ -static __inline vector unsigned int _isnanf4(vector float __attribute__((__unused__))x) -{ - return spu_splats((unsigned int)0); -} - -#endif // _ISNANF4_H_ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/ldexp.h b/newlib/libm/machine/spu/headers/ldexp.h deleted file mode 100644 index 811059c1d..000000000 --- a/newlib/libm/machine/spu/headers/ldexp.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LDEXP_H_ -#define _LDEXP_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* ldexp computes x * 2^exp. This function variant computes the result - * and handles overflow, underflow, and denorms by breaking the problem - * into: - * exp = MAX(exp, -2044) - * exp = MIN(exp, 2046) - * e1 = exp / 2 - * e2 = exp - e1; - * x * 2^e1 * 2^e2 - */ -static __inline double _ldexp(double x, int exp) -{ - vec_int4 e, e1, e2; - vec_int4 min = VEC_SPLAT_S32(-2044); - vec_int4 max = VEC_SPLAT_S32(2046); - vec_uint4 cmp_min, cmp_max; - vec_uint4 shift = VEC_LITERAL(vec_uint4, 20, 32, 20, 32); - vec_double2 f1, f2; - vec_double2 in, out; - - in = spu_promote(x, 0); - e = spu_promote(exp, 0); - - /* Clamp the specified exponent to the range -2044 to 2046. - */ - cmp_min = spu_cmpgt(e, min); - cmp_max = spu_cmpgt(e, max); - e = spu_sel(min, e, cmp_min); - e = spu_sel(e, max, cmp_max); - - /* Generate the factors f1 = 2^e1 and f2 = 2^e2 - */ - e1 = spu_rlmaska(e, -1); - e2 = spu_sub(e, e1); - - f1 = (vec_double2)spu_sl(spu_add(e1, 1023), shift); - f2 = (vec_double2)spu_sl(spu_add(e2, 1023), shift); - - /* Compute the product x * 2^e1 * 2^e2 - */ - out = spu_mul(spu_mul(in, f1), f2); - - return (spu_extract(out, 0)); -} - -#endif /* _LDEXP_H_ */ diff --git a/newlib/libm/machine/spu/headers/ldexpd2.h b/newlib/libm/machine/spu/headers/ldexpd2.h deleted file mode 100644 index 145e4371e..000000000 --- a/newlib/libm/machine/spu/headers/ldexpd2.h +++ /dev/null @@ -1,97 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _LDEXPD2_H_ -#define _LDEXPD2_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector double _ldexpd2(vector double x, vector signed long long exp) - * - * DESCRIPTION - * The _ldexpd2 function Computes x * 2^exp for each of the two elements - * of x using the corresponding elements of exp. - * - */ -static __inline vector double _ldexpd2(vector double x, vector signed long long llexp) -{ - vec_uchar16 odd_to_even = ((vec_uchar16) { 4,5,6,7, 0x80,0x80,0x80,0x80, - 12,13,14,15, 0x80,0x80,0x80,0x80 }); - vec_int4 exp; - vec_int4 e1, e2; - vec_int4 min = spu_splats(-2044); - vec_int4 max = spu_splats(2046); - vec_uint4 cmp_min, cmp_max; - vec_uint4 shift = (vec_uint4) { 20, 32, 20, 32 }; - vec_double2 f1, f2; - vec_double2 out; - - exp = (vec_int4)spu_shuffle(llexp, llexp, odd_to_even); - - /* Clamp the specified exponent to the range -2044 to 2046. - */ - - cmp_min = spu_cmpgt(exp, min); - cmp_max = spu_cmpgt(exp, max); - exp = spu_sel(min, exp, cmp_min); - exp = spu_sel(exp, max, cmp_max); - - /* Generate the factors f1 = 2^e1 and f2 = 2^e2 - */ - e1 = spu_rlmaska(exp, -1); - e2 = spu_sub(exp, e1); - - f1 = (vec_double2)spu_sl(spu_add(e1, 1023), shift); - f2 = (vec_double2)spu_sl(spu_add(e2, 1023), shift); - - /* Compute the product x * 2^e1 * 2^e2 - */ - out = spu_mul(spu_mul(x, f1), f2); - - return (out); -} - -#endif /* _LDEXPD2_H_ */ -#endif /* __SPU__ */ - diff --git a/newlib/libm/machine/spu/headers/ldexpf.h b/newlib/libm/machine/spu/headers/ldexpf.h deleted file mode 100644 index f04f85345..000000000 --- a/newlib/libm/machine/spu/headers/ldexpf.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LDEXPF_H_ -#define _LDEXPF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* ldexpf computes x * 2^exp. This function is computed without - * the assistence of any floating point operations and as such does - * not set any floating point exceptions. - */ -static __inline float _ldexpf(float x, int exp) -{ - vec_int4 x_exp; - vec_uint4 zero, overflow; - vec_uint4 exp_mask = VEC_SPLAT_U32(0x7F800000); - vec_float4 in, out; - - in = spu_promote(x, 0); - - /* Extract exponent from x. If the exponent is 0, then - * x is either 0 or a denorm and x*2^exp is a zero. - */ - x_exp = spu_and(spu_rlmask((vec_int4)in, -23), 0xFF); - - zero = spu_cmpeq(x_exp, 0); - - /* Compute the expected exponent and determine if the - * result is within range. - */ - x_exp = spu_add(spu_promote(exp, 0), x_exp); - - zero = spu_orc(zero, spu_cmpgt(x_exp, 0)); - - overflow = spu_rlmask(spu_cmpgt(x_exp, 255), -1); - - /* Merge the expect exponent with x's mantissa. Zero the - * result if underflow and force to max if overflow. - */ - out = spu_sel(in, (vec_float4)spu_rl(x_exp, 23), exp_mask); - out = spu_andc(out, (vec_float4)zero); - out = spu_or(out, (vec_float4)overflow); - - return (spu_extract(out, 0)); -} -#endif /* _LDEXPF_H_ */ diff --git a/newlib/libm/machine/spu/headers/ldexpf4.h b/newlib/libm/machine/spu/headers/ldexpf4.h deleted file mode 100644 index 9933e5431..000000000 --- a/newlib/libm/machine/spu/headers/ldexpf4.h +++ /dev/null @@ -1,72 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _LDEXPF4_H_ -#define _LDEXPF4_H_ 1 - -#include <spu_intrinsics.h> -#include "scalbnf4.h" - -/* - * FUNCTION - * vector float _ldexpf4(vector float x, vector signed int exp) - * - * DESCRIPTION - * The _ldexpf4 function returns a vector containing each element of x - * multiplied by 2^exp computed efficiently. This function is computed - * without the assistance of any floating point operations and as such - * does not set any floating point exceptions. - * - * RETURNS - * - if the exponent of x is 0, then x is either 0 or a subnormal, - * and the result will be returned as 0. - * - if the result if underflows, it will be returned as 0. - * - if the result overflows, it will be returned as FLT_MAX. - * - */ -static __inline vector float _ldexpf4(vector float x, vector signed int exp) -{ - return _scalbnf4(x, exp); -} - -#endif /* _LDEXPF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/lgamma.h b/newlib/libm/machine/spu/headers/lgamma.h deleted file mode 100644 index 513e3ebed..000000000 --- a/newlib/libm/machine/spu/headers/lgamma.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/lgammad2.h" - -static __inline double _lgamma(double x) -{ - return spu_extract(_lgammad2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/lgammad2.h b/newlib/libm/machine/spu/headers/lgammad2.h deleted file mode 100644 index 2e8a31a98..000000000 --- a/newlib/libm/machine/spu/headers/lgammad2.h +++ /dev/null @@ -1,318 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _LGAMMAD2_H_ -#define _LGAMMAD2_H_ 1 - -#include <spu_intrinsics.h> -#include "divd2.h" -#include "recipd2.h" -#include "logd2.h" -#include "sind2.h" -#include "truncd2.h" - - -/* - * FUNCTION - * vector double _lgammad2(vector double x) - Natural Log of Gamma Function - * - * DESCRIPTION - * _lgammad2 calculates the natural logarithm of the absolute value of the gamma - * function for the corresponding elements of the input vector. - * - * C99 Special Cases: - * lgamma(0) returns +infinite - * lgamma(1) returns +0 - * lgamma(2) returns +0 - * lgamma(negative integer) returns +infinite - * lgamma(+infinite) returns +infinite - * lgamma(-infinite) returns +infinite - * - * Other Cases: - * lgamma(Nan) returns Nan - * lgamma(Denorm) treated as lgamma(0) and returns +infinite - * - */ - -#define PI 3.1415926535897932384626433832795028841971693993751058209749445923078164 -#define HALFLOG2PI 9.1893853320467274178032973640561763986139747363778341281715154048276570E-1 - -#define EULER_MASCHERONI 0.5772156649015328606065 - -/* - * Zeta constants for Maclaurin approx. near zero - */ -#define ZETA_02_DIV_02 8.2246703342411321823620758332301E-1 -#define ZETA_03_DIV_03 -4.0068563438653142846657938717048E-1 -#define ZETA_04_DIV_04 2.7058080842778454787900092413529E-1 -#define ZETA_05_DIV_05 -2.0738555102867398526627309729141E-1 -#define ZETA_06_DIV_06 1.6955717699740818995241965496515E-1 - -/* - * More Maclaurin coefficients - */ -/* -#define ZETA_07_DIV_07 -1.4404989676884611811997107854997E-1 -#define ZETA_08_DIV_08 1.2550966952474304242233565481358E-1 -#define ZETA_09_DIV_09 -1.1133426586956469049087252991471E-1 -#define ZETA_10_DIV_10 1.0009945751278180853371459589003E-1 -#define ZETA_11_DIV_11 -9.0954017145829042232609298411497E-2 -#define ZETA_12_DIV_12 8.3353840546109004024886499837312E-2 -#define ZETA_13_DIV_13 -7.6932516411352191472827064348181E-2 -#define ZETA_14_DIV_14 7.1432946295361336059232753221795E-2 -#define ZETA_15_DIV_15 -6.6668705882420468032903448567376E-2 -#define ZETA_16_DIV_16 6.2500955141213040741983285717977E-2 -#define ZETA_17_DIV_17 -5.8823978658684582338957270605504E-2 -#define ZETA_18_DIV_18 5.5555767627403611102214247869146E-2 -#define ZETA_19_DIV_19 -5.2631679379616660733627666155673E-2 -#define ZETA_20_DIV_20 5.0000047698101693639805657601934E-2 - */ - -/* - * Coefficients for Stirling's Series for Lgamma() - */ -#define STIRLING_01 8.3333333333333333333333333333333333333333333333333333333333333333333333E-2 -#define STIRLING_02 -2.7777777777777777777777777777777777777777777777777777777777777777777778E-3 -#define STIRLING_03 7.9365079365079365079365079365079365079365079365079365079365079365079365E-4 -#define STIRLING_04 -5.9523809523809523809523809523809523809523809523809523809523809523809524E-4 -#define STIRLING_05 8.4175084175084175084175084175084175084175084175084175084175084175084175E-4 -#define STIRLING_06 -1.9175269175269175269175269175269175269175269175269175269175269175269175E-3 -#define STIRLING_07 6.4102564102564102564102564102564102564102564102564102564102564102564103E-3 -#define STIRLING_08 -2.9550653594771241830065359477124183006535947712418300653594771241830065E-2 -#define STIRLING_09 1.7964437236883057316493849001588939669435025472177174963552672531000704E-1 -#define STIRLING_10 -1.3924322169059011164274322169059011164274322169059011164274322169059011E0 -#define STIRLING_11 1.3402864044168391994478951000690131124913733609385783298826777087646653E1 -#define STIRLING_12 -1.5684828462600201730636513245208897382810426288687158252375643679991506E2 -#define STIRLING_13 2.1931033333333333333333333333333333333333333333333333333333333333333333E3 -#define STIRLING_14 -3.6108771253724989357173265219242230736483610046828437633035334184759472E4 -#define STIRLING_15 6.9147226885131306710839525077567346755333407168779805042318946657100161E5 -/* - * More Stirling's coefficients - */ -/* -#define STIRLING_16 -1.5238221539407416192283364958886780518659076533839342188488298545224541E7 -#define STIRLING_17 3.8290075139141414141414141414141414141414141414141414141414141414141414E8 -#define STIRLING_18 -1.0882266035784391089015149165525105374729434879810819660443720594096534E10 -#define STIRLING_19 3.4732028376500225225225225225225225225225225225225225225225225225225225E11 -#define STIRLING_20 -1.2369602142269274454251710349271324881080978641954251710349271324881081E13 -#define STIRLING_21 4.8878806479307933507581516251802290210847053890567382180703629532735764E14 -*/ - - -static __inline vector double _lgammad2(vector double x) -{ - vec_uchar16 dup_even = ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8, 9,10,11, 8, 9,10,11 }); - vec_uchar16 dup_odd = ((vec_uchar16) { 4,5,6,7, 4,5,6,7, 12,13,14,15, 12,13,14,15 }); - vec_uchar16 swap_word = ((vec_uchar16) { 4,5,6,7, 0,1,2,3, 12,13,14,15, 8, 9,10,11 }); - vec_double2 infinited = (vec_double2)spu_splats(0x7FF0000000000000ull); - vec_double2 zerod = spu_splats(0.0); - vec_double2 oned = spu_splats(1.0); - vec_double2 twod = spu_splats(2.0); - vec_double2 pi = spu_splats(PI); - vec_double2 sign_maskd = spu_splats(-0.0); - - /* This is where we switch from near zero approx. */ - vec_float4 zero_switch = spu_splats(0.001f); - vec_float4 shift_switch = spu_splats(6.0f); - - vec_float4 xf; - vec_double2 inv_x, inv_xsqu; - vec_double2 xtrunc, xstirling; - vec_double2 sum, xabs; - vec_uint4 xhigh, xlow, xthigh, xtlow; - vec_uint4 x1, isnaninf, isnposint, iszero, isint, isneg, isshifted, is1, is2; - vec_double2 result, stresult, shresult, mresult, nresult; - - - /* Force Denorms to 0 */ - x = spu_add(x, zerod); - - xabs = spu_andc(x, sign_maskd); - xf = spu_roundtf(xabs); - xf = spu_shuffle(xf, xf, dup_even); - - - /* - * For 0 < x <= 0.001. - * Approximation Near Zero - * - * Use Maclaurin Expansion of lgamma() - * - * lgamma(z) = -ln(z) - z * EulerMascheroni + Sum[(-1)^n * z^n * Zeta(n)/n] - */ - mresult = spu_madd(xabs, spu_splats(ZETA_06_DIV_06), spu_splats(ZETA_05_DIV_05)); - mresult = spu_madd(xabs, mresult, spu_splats(ZETA_04_DIV_04)); - mresult = spu_madd(xabs, mresult, spu_splats(ZETA_03_DIV_03)); - mresult = spu_madd(xabs, mresult, spu_splats(ZETA_02_DIV_02)); - mresult = spu_mul(xabs, spu_mul(xabs, mresult)); - mresult = spu_sub(mresult, spu_add(_logd2(xabs), spu_mul(xabs, spu_splats(EULER_MASCHERONI)))); - - - /* - * For 0.001 < x <= 6.0, we are going to push value - * out to an area where Stirling's approximation is - * accurate. Let's use a constant of 6. - * - * Use the recurrence relation: - * lgamma(x + 1) = ln(x) + lgamma(x) - * - * Note that we shift x here, before Stirling's calculation, - * then after Stirling's, we adjust the result. - * - */ - - isshifted = spu_cmpgt(shift_switch, xf); - xstirling = spu_sel(xabs, spu_add(xabs, spu_splats(6.0)), (vec_ullong2)isshifted); - inv_x = _recipd2(xstirling); - inv_xsqu = spu_mul(inv_x, inv_x); - - /* - * For 6.0 < x < infinite - * - * Use Stirling's Series. - * - * 1 1 1 1 1 - * lgamma(x) = --- ln (2*pi) + (z - ---) ln(x) - x + --- - ----- + ------ ... - * 2 2 12x 360x^3 1260x^5 - * - * Taking 10 terms of the sum gives good results for x > 6.0 - * - */ - sum = spu_madd(inv_xsqu, spu_splats(STIRLING_15), spu_splats(STIRLING_14)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_13)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_12)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_11)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_10)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_09)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_08)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_07)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_06)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_05)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_04)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_03)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_02)); - sum = spu_madd(sum, inv_xsqu, spu_splats(STIRLING_01)); - sum = spu_mul(sum, inv_x); - - stresult = spu_madd(spu_sub(xstirling, spu_splats(0.5)), _logd2(xstirling), spu_splats(HALFLOG2PI)); - stresult = spu_sub(stresult, xstirling); - stresult = spu_add(stresult, sum); - - /* - * Adjust result if we shifted x into Stirling range. - * - * lgamma(x) = lgamma(x + n) - ln(x(x+1)(x+2)...(x+n-1) - * - */ - shresult = spu_mul(xabs, spu_add(xabs, spu_splats(1.0))); - shresult = spu_mul(shresult, spu_add(xabs, spu_splats(2.0))); - shresult = spu_mul(shresult, spu_add(xabs, spu_splats(3.0))); - shresult = spu_mul(shresult, spu_add(xabs, spu_splats(4.0))); - shresult = spu_mul(shresult, spu_add(xabs, spu_splats(5.0))); - shresult = _logd2(shresult); - shresult = spu_sub(stresult, shresult); - stresult = spu_sel(stresult, shresult, (vec_ullong2)isshifted); - - - /* - * Select either Maclaurin or Stirling result before Negative X calc. - */ - xf = spu_shuffle(xf, xf, dup_even); - vec_uint4 useStirlings = spu_cmpgt(xf, zero_switch); - result = spu_sel(mresult, stresult, (vec_ullong2)useStirlings); - - - /* - * Approximation for Negative X - * - * Use reflection relation - * - * gamma(x) * gamma(-x) = -pi/(x sin(pi x)) - * - * lgamma(x) = log(pi/(-x sin(pi x))) - lgamma(-x) - * - */ - nresult = spu_mul(x, _sind2(spu_mul(x, pi))); - nresult = spu_andc(nresult, sign_maskd); - nresult = _logd2(_divd2(pi, nresult)); - nresult = spu_sub(nresult, result); - - - /* - * Select between the negative or positive x approximations. - */ - isneg = (vec_uint4)spu_shuffle(x, x, dup_even); - isneg = spu_rlmaska(isneg, -32); - result = spu_sel(result, nresult, (vec_ullong2)isneg); - - - /* - * Finally, special cases/errors. - */ - xhigh = (vec_uint4)spu_shuffle(xabs, xabs, dup_even); - xlow = (vec_uint4)spu_shuffle(xabs, xabs, dup_odd); - - /* x = zero, return infinite */ - x1 = spu_or(xhigh, xlow); - iszero = spu_cmpeq(x1, 0); - - /* x = negative integer, return infinite */ - xtrunc = _truncd2(xabs); - xthigh = (vec_uint4)spu_shuffle(xtrunc, xtrunc, dup_even); - xtlow = (vec_uint4)spu_shuffle(xtrunc, xtrunc, dup_odd); - isint = spu_and(spu_cmpeq(xthigh, xhigh), spu_cmpeq(xtlow, xlow)); - isnposint = spu_or(spu_and(isint, isneg), iszero); - result = spu_sel(result, infinited, (vec_ullong2)isnposint); - - /* x = 1.0 or 2.0, return 0.0 */ - is1 = spu_cmpeq((vec_uint4)x, (vec_uint4)oned); - is1 = spu_and(is1, spu_shuffle(is1, is1, swap_word)); - is2 = spu_cmpeq((vec_uint4)x, (vec_uint4)twod); - is2 = spu_and(is2, spu_shuffle(is2, is2, swap_word)); - result = spu_sel(result, zerod, (vec_ullong2)spu_or(is1,is2)); - - /* x = +/- infinite or nan, return |x| */ - isnaninf = spu_cmpgt(xhigh, 0x7FEFFFFF); - result = spu_sel(result, xabs, (vec_ullong2)isnaninf); - - return result; -} - -#endif /* _LGAMMAD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/lgammaf.h b/newlib/libm/machine/spu/headers/lgammaf.h deleted file mode 100644 index cf19ab383..000000000 --- a/newlib/libm/machine/spu/headers/lgammaf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/lgammaf4.h" - -static __inline float _lgammaf(float x) -{ - return spu_extract(_lgammaf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/lgammaf4.h b/newlib/libm/machine/spu/headers/lgammaf4.h deleted file mode 100644 index 36aea5b16..000000000 --- a/newlib/libm/machine/spu/headers/lgammaf4.h +++ /dev/null @@ -1,517 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _LGAMMAF4_H_ -#define _LGAMMAF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "logf4.h" -#include "divf4.h" -#include "recipf4.h" -#include "truncf4.h" -#include "sinf4.h" - - -/* - * FUNCTION - * vector float _lgammaf4(vector float x) - Natural Log of Gamma Function - * - * DESCRIPTION - * _lgammaf4 calculates the natural logarithm of the absolute value of the gamma - * function for the corresponding elements of the input vector. - * - * C99 Special Cases: - * lgamma(0) returns +infinity - * lgamma(1) returns +0 - * lgamma(2) returns +0 - * lgamma(negative integer) returns +infinity - * lgamma(+infinity) returns +infinity - * lgamma(-infinity) returns +infinity - * - * Other Cases: - * lgamma(Nan) returns Nan - * lgamma(Denorm) treated as lgamma(0) and returns +infinity - * - */ - -static __inline vector float _lgammaf4(vector float x) -{ - vec_float4 result; - vec_float4 halflog2pi = spu_splats(9.189385332046727417803297364056E-1f); - vec_float4 logpi = spu_splats(1.1447298858494001741434273513530587116472948129153f); - vec_float4 inff = (vec_float4)spu_splats(0x7F800000); - vec_float4 zerof = spu_splats(0.0f); - vec_float4 onef = spu_splats(1.0f); - vec_float4 twof = spu_splats(2.0f); - vec_float4 sign_maskf = spu_splats(-0.0f); - vec_float4 pi = spu_splats(3.14159265358979323846264338328f); - - - /* - * Unfortunately, some of the approximation methods for lgamma require - * other basic math computations. Get those out of the way now. The - * compiler seems to good a good job of scheduling this code with - * the code that follows. - */ - vec_uint4 gt0 = spu_cmpgt(x, zerof); - vec_float4 xabs = spu_andc(x, sign_maskf); - vec_float4 ln_x = _logf4(xabs); - vec_float4 inv_x = _recipf4(xabs); - vec_float4 xtrunc = _truncf4(x); - vec_float4 inv_xsqu = spu_mul(inv_x, inv_x); - vec_uint4 isnaninf = spu_cmpgt((vec_uint4)xabs, 0x7F7FFFFF); - vec_uint4 ret_zero = spu_or(spu_cmpeq(x, onef), spu_cmpeq(x, twof)); - - - /* - * First thing we do is setup the description of each partition. - * This consists of: - * - Start x of partition - * - Offset (used for evaluating power series expanded around a point) - * - Truncation adjustment. - * - Is approx method in region a rational approximation or just a polynomial - * - The coefficients used in the poly or rational approximation - */ - - - /*************************************************************** - * REGION 0: Approximation Near 0 from Above - * - * Use Maclaurin Expansion of lgamma() - * - * lgamma(z) = -ln(z) - z * EulerMascheroni + Sum[(-1)^n * z^n * Zeta(n)/n] - */ - -#define SDM_LGF4_0_START 0.0f -#define SDM_LGF4_0_OFF 0.0f -#define SDM_LGF4_0_TRUNC 2u -#define SDM_LGF4_0_RATIONAL 0x0u - -#define SDM_LGF4_0_00 0.0f -#define SDM_LGF4_0_01 -0.5772156649015328606065121f -#define SDM_LGF4_0_02 0.8224670334241132182362076f -#define SDM_LGF4_0_03 -0.4006856343865314284665794f -#define SDM_LGF4_0_04 0.2705808084277845478790009f -#define SDM_LGF4_0_05 -0.2073855510286739852662731f -#define SDM_LGF4_0_06 1.6955717699740818995241965496515E-1f -#define SDM_LGF4_0_07 -1.4404989676884611811997107854997E-1f -#define SDM_LGF4_0_08 1.2550966952474304242233565481358E-1f -#define SDM_LGF4_0_09 -1.1133426586956469049087252991471E-1f -#define SDM_LGF4_0_10 1.0009945751278180853371459589003E-1f -#define SDM_LGF4_0_11 -9.0954017145829042232609298411497E-2f - - - - /*************************************************************** - * REGION 1: Above 0 and Below 1 - */ -#define SDM_LGF4_1_START 0.20f -#define SDM_LGF4_1_OFF 0.0f -#define SDM_LGF4_1_TRUNC 0u -#define SDM_LGF4_1_RATIONAL 0xFFFFFFFFu - -/* Numerator */ -#define SDM_LGF4_1_06 5.5247592697706124892083167601451981186889952720891079f -#define SDM_LGF4_1_07 188.42248906442882644741346270888237140890625699348872f -#define SDM_LGF4_1_08 730.89115027907050579364152184942040244662318995470771f -#define SDM_LGF4_1_09 -517.93391251349155395618464682404141737699116911423096f -#define SDM_LGF4_1_10 -866.81293419754982917624255525168901081630973644141406f -#define SDM_LGF4_1_11 459.90872804523394478152324135956113729930154636775805f - -/* Denominator */ -#define SDM_LGF4_1_00 1.0f -#define SDM_LGF4_1_01 62.356015559548850893358835861387218304619374633480009f -#define SDM_LGF4_1_02 553.64875642095755724931612658933597252336243693499682f -#define SDM_LGF4_1_03 997.28805670393557265195865662557219661414263910835386f -#define SDM_LGF4_1_04 257.10520661440946455560646958565998121417179154677712f -#define SDM_LGF4_1_05 -15.398409585547124178878369413880017200739911288666830f - - - - /*************************************************************** - * REGION 2: Above 0 and Below 1 - */ -#define SDM_LGF4_2_START 0.60f -#define SDM_LGF4_2_OFF 0.69f -#define SDM_LGF4_2_TRUNC 1u -#define SDM_LGF4_2_RATIONAL 0x0u - -/* This is a power series expanson of LogGamma around 0.69 */ -#define SDM_LGF4_2_00 0.27321026793030387025442491383648273204234f -#define SDM_LGF4_2_01 -1.24869016926209356266849815723905575347988f -#define SDM_LGF4_2_02 1.44985879780363867173410158693003578927407f -#define SDM_LGF4_2_03 -1.11686573274718166516744313082147691068190f -#define SDM_LGF4_2_04 1.14079150485439143731395820215710950729505f -#define SDM_LGF4_2_05 -1.29512166953091144888197173527810141620764f -#define SDM_LGF4_2_06 1.55206382120790061136858894716459302629069f -#define SDM_LGF4_2_07 -1.92227237154565289482911310272968704445560f -#define SDM_LGF4_2_08 2.43478939488445894670349784581009987461638f -#define SDM_LGF4_2_09 -3.13512449573283650741385084753752461908870f -#define SDM_LGF4_2_10 4.08851456399492725127969680590409811177590f -#define SDM_LGF4_2_11 5.38629680478093362448042704719642976375265f - - - - /*************************************************************** - * REGION 3: Around 1 - */ -#define SDM_LGF4_3_START 0.74f -#define SDM_LGF4_3_OFF 1.0f -#define SDM_LGF4_3_TRUNC 2u -#define SDM_LGF4_3_RATIONAL 0x0u - -#define SDM_LGF4_3_11 -0.90954017145829042232609298411497266951691494159836e-1f -#define SDM_LGF4_3_10 0.10009945751278180853371459589003190170060195315645f -#define SDM_LGF4_3_09 -0.11133426586956469049087252991471245116506731682165f -#define SDM_LGF4_3_08 0.12550966952474304242233565481358155815737009883123f -#define SDM_LGF4_3_07 -0.14404989676884611811997107854997096565712336579503f -#define SDM_LGF4_3_06 0.16955717699740818995241965496515342131696958167214f -#define SDM_LGF4_3_05 -0.20738555102867398526627309729140683361141618390038f -#define SDM_LGF4_3_04 0.27058080842778454787900092413529197569368773797968f -#define SDM_LGF4_3_03 -0.40068563438653142846657938717048333025499543078016f -#define SDM_LGF4_3_02 0.82246703342411321823620758332301259460947495060340f -#define SDM_LGF4_3_01 -0.57721566490153286060651209008240243104215933593992f -#define SDM_LGF4_3_00 0.0f - - - - /*************************************************************** - * REGION 4: Above 1 to Below 2 - */ - -#define SDM_LGF4_4_START 1.25f -#define SDM_LGF4_4_OFF 1.4616321449683623412626595423257213284681962040064f -#define SDM_LGF4_4_TRUNC 1u -#define SDM_LGF4_4_RATIONAL 0x0u - -#define SDM_LGF4_4_00 -0.12148629053584960809551455717769158215135617313000f -#define SDM_LGF4_4_01 0.0f -#define SDM_LGF4_4_02 0.48383612272381058521372238085482537020562860838860f -#define SDM_LGF4_4_03 -0.14758772299453070203095509395083641661852764909458f -#define SDM_LGF4_4_04 0.064624940238912752656100346425238557063086033931734f -#define SDM_LGF4_4_05 -0.032788541088481305500850258549331278505894787737970f -#define SDM_LGF4_4_06 0.017970675115210394292863824811126161810628596070981f -#define SDM_LGF4_4_07 -0.010314223036636387275160254800730296612070784399082f -#define SDM_LGF4_4_08 0.0061005360205178884031365656884883648099463048507839f -#define SDM_LGF4_4_09 -0.0036845696083163732546953776004972425913603137160767f -#define SDM_LGF4_4_10 0.00225976482322181046596248251178293952686321035f -#define SDM_LGF4_4_11 -0.00140225144590445083080002880374741201782467331f - - - - /*************************************************************** - * REGION 5: Around 2 - */ - -#define SDM_LGF4_5_START 1.50f -#define SDM_LGF4_5_OFF 2.0f -#define SDM_LGF4_5_TRUNC 1u -#define SDM_LGF4_5_RATIONAL 0x0u - -#define SDM_LGF4_5_00 0.0f -#define SDM_LGF4_5_01 0.42278433509846713939348790991759756895784066406008f -#define SDM_LGF4_5_02 0.32246703342411321823620758332301259460947495060340f -#define SDM_LGF4_5_03 -0.6735230105319809513324605383714999692166209744683e-1f -#define SDM_LGF4_5_04 0.2058080842778454787900092413529197569368773797968e-1f -#define SDM_LGF4_5_05 -0.738555102867398526627309729140683361141618390038e-2f -#define SDM_LGF4_5_06 0.289051033074152328575298829848675465030291500547e-2f -#define SDM_LGF4_5_07 -0.119275391170326097711393569282810851426622293789e-2f -#define SDM_LGF4_5_08 0.50966952474304242233565481358155815737009883123e-3f -#define SDM_LGF4_5_09 -0.22315475845357937976141880360134005395620571054e-3f -#define SDM_LGF4_5_10 0.9945751278180853371459589003190170060195315645e-4f -#define SDM_LGF4_5_11 -0.44926236738133141700207502406357860782403250745e-4f - - - - /*************************************************************** - * REGION 6: Above 2 to Below Stirlings - */ - -#define SDM_LGF4_6_START 2.48f -#define SDM_LGF4_6_OFF 0.0f -#define SDM_LGF4_6_TRUNC 2u -#define SDM_LGF4_6_RATIONAL 0xFFFFFFFFu - -/* Numerator */ -#define SDM_LGF4_6_06 2.8952045264375719070927153893062450394256201846894266f -#define SDM_LGF4_6_07 0.9017557380149600532583460408941390566399250566546766f -#define SDM_LGF4_6_08 -5.0120743649109868270726470406381462995568837028633266f -#define SDM_LGF4_6_09 0.5723176665030477945174549923532715487712277062412760f -#define SDM_LGF4_6_10 0.6107282478237180956153912232438073421489100296366786f -#define SDM_LGF4_6_11 0.0312308625200519550078820867041868696010490562277303f - -/* Denominator */ -#define SDM_LGF4_6_00 1.0f -#define SDM_LGF4_6_01 4.3592151369378598515798083402849838078885877442021500f -#define SDM_LGF4_6_02 2.6245676641191702420707093818412405820501009602499853f -#define SDM_LGF4_6_03 0.3438846837443412565179153619145215759074092780311669f -#define SDM_LGF4_6_04 0.0078092905528158343621764949220712317164193605131159f -#define SDM_LGF4_6_05 -0.000015217018272713076443927141674684568030697337620f - - - - /*************************************************************** - * REGION 7: Stirlings - Above 6.0 - * - */ - -#define SDM_LGF4_7_START 7.80f -#define SDM_LGF4_7_OFF 0.0f -#define SDM_LGF4_7_TRUNC 5u -#define SDM_LGF4_7_RATIONAL 0x0u - -#define SDM_LGF4_7_00 8.3333333333333333333333333333333333333333333333333333333333333333333333E-2f -#define SDM_LGF4_7_01 -2.7777777777777777777777777777777777777777777777777777777777777777777778E-3f -#define SDM_LGF4_7_02 7.9365079365079365079365079365079365079365079365079365079365079365079365E-4f -#define SDM_LGF4_7_03 -5.9523809523809523809523809523809523809523809523809523809523809523809524E-4f -#define SDM_LGF4_7_04 8.4175084175084175084175084175084175084175084175084175084175084175084175E-4f -#define SDM_LGF4_7_05 -1.9175269175269175269175269175269175269175269175269175269175269175269175E-3f -#define SDM_LGF4_7_06 6.4102564102564102564102564102564102564102564102564102564102564102564103E-3f -#define SDM_LGF4_7_07 0.0f -#define SDM_LGF4_7_08 0.0f -#define SDM_LGF4_7_09 0.0f -#define SDM_LGF4_7_10 0.0f -#define SDM_LGF4_7_11 0.0f - - - /* - * Now we load the description of each partition. - */ - - /* Start point for each partition */ - vec_float4 r1start = spu_splats(SDM_LGF4_1_START); - vec_float4 r2start = spu_splats(SDM_LGF4_2_START); - vec_float4 r3start = spu_splats(SDM_LGF4_3_START); - vec_float4 r4start = spu_splats(SDM_LGF4_4_START); - vec_float4 r5start = spu_splats(SDM_LGF4_5_START); - vec_float4 r6start = spu_splats(SDM_LGF4_6_START); - vec_float4 r7start = spu_splats(SDM_LGF4_7_START); - - /* X Offset for each partition */ - vec_float4 xoffseta = (vec_float4) {SDM_LGF4_0_OFF, SDM_LGF4_1_OFF, SDM_LGF4_2_OFF, SDM_LGF4_3_OFF}; - vec_float4 xoffsetb = (vec_float4) {SDM_LGF4_4_OFF, SDM_LGF4_5_OFF, SDM_LGF4_6_OFF, SDM_LGF4_7_OFF}; - - /* Truncation Correction for each partition */ - vec_uint4 tcorra = (vec_uint4) {SDM_LGF4_0_TRUNC, SDM_LGF4_1_TRUNC, SDM_LGF4_2_TRUNC, SDM_LGF4_3_TRUNC}; - vec_uint4 tcorrb = (vec_uint4) {SDM_LGF4_4_TRUNC, SDM_LGF4_5_TRUNC, SDM_LGF4_6_TRUNC, SDM_LGF4_7_TRUNC}; - - /* Is partition a Rational Approximation */ - vec_uint4 israta = (vec_uint4) {SDM_LGF4_0_RATIONAL, SDM_LGF4_1_RATIONAL, SDM_LGF4_2_RATIONAL, SDM_LGF4_3_RATIONAL}; - vec_uint4 isratb = (vec_uint4) {SDM_LGF4_4_RATIONAL, SDM_LGF4_5_RATIONAL, SDM_LGF4_6_RATIONAL, SDM_LGF4_7_RATIONAL}; - - /* The polynomial coefficients for all partitions */ - vec_float4 c00a = (vec_float4) {SDM_LGF4_0_00, SDM_LGF4_1_00, SDM_LGF4_2_00, SDM_LGF4_3_00}; - vec_float4 c01a = (vec_float4) {SDM_LGF4_0_01, SDM_LGF4_1_01, SDM_LGF4_2_01, SDM_LGF4_3_01}; - vec_float4 c02a = (vec_float4) {SDM_LGF4_0_02, SDM_LGF4_1_02, SDM_LGF4_2_02, SDM_LGF4_3_02}; - vec_float4 c03a = (vec_float4) {SDM_LGF4_0_03, SDM_LGF4_1_03, SDM_LGF4_2_03, SDM_LGF4_3_03}; - vec_float4 c04a = (vec_float4) {SDM_LGF4_0_04, SDM_LGF4_1_04, SDM_LGF4_2_04, SDM_LGF4_3_04}; - vec_float4 c05a = (vec_float4) {SDM_LGF4_0_05, SDM_LGF4_1_05, SDM_LGF4_2_05, SDM_LGF4_3_05}; - vec_float4 c06a = (vec_float4) {SDM_LGF4_0_06, SDM_LGF4_1_06, SDM_LGF4_2_06, SDM_LGF4_3_06}; - vec_float4 c07a = (vec_float4) {SDM_LGF4_0_07, SDM_LGF4_1_07, SDM_LGF4_2_07, SDM_LGF4_3_07}; - vec_float4 c08a = (vec_float4) {SDM_LGF4_0_08, SDM_LGF4_1_08, SDM_LGF4_2_08, SDM_LGF4_3_08}; - vec_float4 c09a = (vec_float4) {SDM_LGF4_0_09, SDM_LGF4_1_09, SDM_LGF4_2_09, SDM_LGF4_3_09}; - vec_float4 c10a = (vec_float4) {SDM_LGF4_0_10, SDM_LGF4_1_10, SDM_LGF4_2_10, SDM_LGF4_3_10}; - vec_float4 c11a = (vec_float4) {SDM_LGF4_0_11, SDM_LGF4_1_11, SDM_LGF4_2_11, SDM_LGF4_3_11}; - - vec_float4 c00b = (vec_float4) {SDM_LGF4_4_00, SDM_LGF4_5_00, SDM_LGF4_6_00, SDM_LGF4_7_00}; - vec_float4 c01b = (vec_float4) {SDM_LGF4_4_01, SDM_LGF4_5_01, SDM_LGF4_6_01, SDM_LGF4_7_01}; - vec_float4 c02b = (vec_float4) {SDM_LGF4_4_02, SDM_LGF4_5_02, SDM_LGF4_6_02, SDM_LGF4_7_02}; - vec_float4 c03b = (vec_float4) {SDM_LGF4_4_03, SDM_LGF4_5_03, SDM_LGF4_6_03, SDM_LGF4_7_03}; - vec_float4 c04b = (vec_float4) {SDM_LGF4_4_04, SDM_LGF4_5_04, SDM_LGF4_6_04, SDM_LGF4_7_04}; - vec_float4 c05b = (vec_float4) {SDM_LGF4_4_05, SDM_LGF4_5_05, SDM_LGF4_6_05, SDM_LGF4_7_05}; - vec_float4 c06b = (vec_float4) {SDM_LGF4_4_06, SDM_LGF4_5_06, SDM_LGF4_6_06, SDM_LGF4_7_06}; - vec_float4 c07b = (vec_float4) {SDM_LGF4_4_07, SDM_LGF4_5_07, SDM_LGF4_6_07, SDM_LGF4_7_07}; - vec_float4 c08b = (vec_float4) {SDM_LGF4_4_08, SDM_LGF4_5_08, SDM_LGF4_6_08, SDM_LGF4_7_08}; - vec_float4 c09b = (vec_float4) {SDM_LGF4_4_09, SDM_LGF4_5_09, SDM_LGF4_6_09, SDM_LGF4_7_09}; - vec_float4 c10b = (vec_float4) {SDM_LGF4_4_10, SDM_LGF4_5_10, SDM_LGF4_6_10, SDM_LGF4_7_10}; - vec_float4 c11b = (vec_float4) {SDM_LGF4_4_11, SDM_LGF4_5_11, SDM_LGF4_6_11, SDM_LGF4_7_11}; - - - vec_uchar16 shuffle0 = (vec_uchar16) spu_splats(0x00010203); - vec_uchar16 shuffle1 = (vec_uchar16) spu_splats(0x04050607); - vec_uchar16 shuffle2 = (vec_uchar16) spu_splats(0x08090A0B); - vec_uchar16 shuffle3 = (vec_uchar16) spu_splats(0x0C0D0E0F); - vec_uchar16 shuffle4 = (vec_uchar16) spu_splats(0x10111213); - vec_uchar16 shuffle5 = (vec_uchar16) spu_splats(0x14151617); - vec_uchar16 shuffle6 = (vec_uchar16) spu_splats(0x18191A1B); - vec_uchar16 shuffle7 = (vec_uchar16) spu_splats(0x1C1D1E1F); - - - /* - * Determine the shuffle pattern based on which partition - * each element of x is in. - */ - - vec_uchar16 gt_r1start = (vec_uchar16)spu_cmpgt(xabs, r1start); - vec_uchar16 gt_r2start = (vec_uchar16)spu_cmpgt(xabs, r2start); - vec_uchar16 gt_r3start = (vec_uchar16)spu_cmpgt(xabs, r3start); - vec_uchar16 gt_r4start = (vec_uchar16)spu_cmpgt(xabs, r4start); - vec_uchar16 gt_r5start = (vec_uchar16)spu_cmpgt(xabs, r5start); - vec_uchar16 gt_r6start = (vec_uchar16)spu_cmpgt(xabs, r6start); - vec_uchar16 gt_r7start = (vec_uchar16)spu_cmpgt(xabs, r7start); - - vec_uchar16 shufflepattern; - shufflepattern = spu_sel(shuffle0, shuffle1, gt_r1start); - shufflepattern = spu_sel(shufflepattern, shuffle2, gt_r2start); - shufflepattern = spu_sel(shufflepattern, shuffle3, gt_r3start); - shufflepattern = spu_sel(shufflepattern, shuffle4, gt_r4start); - shufflepattern = spu_sel(shufflepattern, shuffle5, gt_r5start); - shufflepattern = spu_sel(shufflepattern, shuffle6, gt_r6start); - shufflepattern = spu_sel(shufflepattern, shuffle7, gt_r7start); - - - - /* Use the shuffle pattern to select the coefficients */ - - vec_float4 coeff_00 = spu_shuffle(c00a, c00b, shufflepattern); - vec_float4 coeff_01 = spu_shuffle(c01a, c01b, shufflepattern); - vec_float4 coeff_02 = spu_shuffle(c02a, c02b, shufflepattern); - vec_float4 coeff_03 = spu_shuffle(c03a, c03b, shufflepattern); - vec_float4 coeff_04 = spu_shuffle(c04a, c04b, shufflepattern); - vec_float4 coeff_06 = spu_shuffle(c06a, c06b, shufflepattern); - vec_float4 coeff_07 = spu_shuffle(c07a, c07b, shufflepattern); - vec_float4 coeff_05 = spu_shuffle(c05a, c05b, shufflepattern); - vec_float4 coeff_08 = spu_shuffle(c08a, c08b, shufflepattern); - vec_float4 coeff_09 = spu_shuffle(c09a, c09b, shufflepattern); - vec_float4 coeff_10 = spu_shuffle(c10a, c10b, shufflepattern); - vec_float4 coeff_11 = spu_shuffle(c11a, c11b, shufflepattern); - - vec_float4 xoffset = spu_shuffle(xoffseta, xoffsetb, shufflepattern); - vec_uint4 tcorrection = spu_shuffle(tcorra, tcorrb, shufflepattern); - vec_uint4 isrational = spu_shuffle(israta, isratb, shufflepattern); - - /* - * We've completed the coeff. setup. Now we actually do the - * approximation below. - */ - - /* Adjust x value here (for approximations about a point) */ - vec_float4 xappr = spu_sub(xabs, xoffset); - - /* If in Stirling partition, do some setup before the madds */ - xappr = spu_sel(xappr, inv_xsqu, (vector unsigned int)gt_r7start); - - - - /* Now we do the multiplies - either a big polynomial or - * a rational approximation. Use Horner's method. - */ - result = coeff_11; - result = spu_madd(xappr, result, coeff_10); - result = spu_madd(xappr, result, coeff_09); - result = spu_madd(xappr, result, coeff_08); - result = spu_madd(xappr, result, coeff_07); - result = spu_madd(xappr, result, coeff_06); - - /* For rational approximations, we save numerator. */ - vec_float4 resultn = result; - - /* For rational appr,, reset result for calculation of denominator. */ - result = spu_sel(result, spu_splats(0.0f), isrational); - - result = spu_madd(xappr, result, coeff_05); - result = spu_madd(xappr, result, coeff_04); - result = spu_madd(xappr, result, coeff_03); - result = spu_madd(xappr, result, coeff_02); - result = spu_madd(xappr, result, coeff_01); - result = spu_madd(xappr, result, coeff_00); - - /* Select either the polynomial or rational result */ - result = spu_sel(result, _divf4(resultn, result), isrational); - - /* - * Now we have to do a bit of additional calculations for - * partitions that weren't simple polynomial or rational - * approximations. - */ - - /* Finish the Near 0 formula */ - result = spu_sel(spu_sub(result, ln_x), result, (vector unsigned int)gt_r1start); - - /* Finish Stirling's Approximation */ - vec_float4 resultstirling = spu_madd(spu_sub(xabs, spu_splats(0.5f)), ln_x, halflog2pi); - resultstirling = spu_sub(resultstirling, xabs); - resultstirling = spu_add(spu_mul(result,inv_x), resultstirling); - result = spu_sel(result, resultstirling, (vector unsigned int)gt_r7start); - - - /* Adjust due to systematic truncation */ - result = (vec_float4)spu_add((vec_uint4)result, tcorrection); - - - /* - * Approximation for Negative X - * - * Use reflection relation: - * - * gamma(x) * gamma(-x) = -pi/(x sin(pi x)) - * - * lgamma(x) = log(pi/(-x sin(pi x))) - lgamma(-x) - * - */ - vec_float4 nresult = spu_mul(x, _sinf4(spu_mul(x, pi))); - nresult = spu_andc(nresult, sign_maskf); - nresult = spu_sub(logpi, spu_add(result, _logf4(nresult))); - nresult = (vec_float4)spu_add((vec_uint4)nresult, spu_splats(1u)); - - result = spu_sel(nresult, result, gt0); - - - /* - * Special Cases - */ - - /* x = non-positive integer, return infinity */ - vec_uint4 isnonposint = spu_andc(spu_cmpeq(x, xtrunc), gt0); - result = spu_sel(result, inff, spu_or(isnonposint, spu_cmpgt(x, spu_splats(4.2e36f)))); - result = spu_sel(result, inff, spu_andc(spu_cmpeq(x, xtrunc), gt0)); - - /* Zeros of function */ - result = spu_sel(result, zerof, ret_zero); - - /* x = +/- infinity or nan, return |x| */ - result = spu_sel(result, xabs, isnaninf); - - - return result; -} - -#endif /* _LGAMMAF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/llrint.h b/newlib/libm/machine/spu/headers/llrint.h deleted file mode 100644 index 656322255..000000000 --- a/newlib/libm/machine/spu/headers/llrint.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LLRINT_H_ -#define _LLRINT_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline long long int _llrint(double x) -{ - int shift; - vec_int4 exp; - vec_uint4 mant, sign, mask, borrow; - vec_double2 in, bias; - - in = spu_promote(x, 0); - - /* Round the input according to the current rounding mode. - */ - bias = spu_sel((vec_double2)(VEC_SPLAT_U64(0x4330000000000000ULL)), in, - VEC_SPLAT_U64(0x8000000000000000ULL)); - mant = (vec_uint4)(spu_sub(spu_add(in, bias), bias)); - - /* Determine how many bits to shift the mantissa to correctly - * align it into long long element 0. - */ - exp = spu_and(spu_rlmask((vec_int4)mant, -20), 0x7FF); - exp = spu_add(exp, -1011); - shift = spu_extract(exp, 0); - - mask = spu_cmpgt(exp, 0); - mask = (vec_uint4)spu_maskw(spu_extract(mask, 0)); - - /* Algn mantissa bits - */ - mant = spu_sel(spu_rlmaskqwbyte(mant, -8), VEC_SPLAT_U32(0x00100000), - VEC_LITERAL(vec_uint4, 0,0,0xFFF00000,0)); - - mant = spu_and(spu_slqwbytebc(spu_slqw(mant, shift), shift), mask); - - /* Compute the two's complement of the mantissa if the - * input is negative. - */ - sign = spu_maskw(spu_extract(spu_rlmaska((vec_int4)in, -31), 0)); - - mant = spu_xor(mant, sign); - borrow = spu_genb(mant, sign); - borrow = spu_shuffle(borrow, borrow, - VEC_LITERAL(vec_uchar16, 4,5,6,7, 192,192,192,192, - 4,5,6,7, 192,192,192,192)); - mant = spu_subx(mant, sign, borrow); - - return (spu_extract((vec_llong2)(mant), 0)); -} -#endif /* _LLRINT_H_ */ diff --git a/newlib/libm/machine/spu/headers/llrintf.h b/newlib/libm/machine/spu/headers/llrintf.h deleted file mode 100644 index 76b6d70ef..000000000 --- a/newlib/libm/machine/spu/headers/llrintf.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LLRINTF_H_ -#define _LLRINTF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline long long int _llrintf(float x) -{ - int shift; - vec_int4 exp; - vec_uint4 mant, sign, borrow; - vec_float4 in; - - in = spu_promote(x, 0); - - /* Place mantissa bits (including implied most signficant - * bit) into the most significant bits of element 3. Elements - * 0, 1, and 2 are zeroed. - */ - mant = spu_sel(spu_rlmaskqwbyte((vec_uint4)in, -11), - VEC_SPLAT_U32(0x80000000), - VEC_LITERAL(vec_uint4, 0,0,0xFF,0x800000FF)); - - /* Determine how many bits to shift the mantissa to correctly - * align it into long long element 0. - */ - exp = spu_and(spu_rlmask((vec_int4)in, -23), 0xFF); - shift = spu_extract(spu_add(exp, -94), 0); - - /* Algn mantissa bits - */ - mant = spu_slqwbytebc(spu_slqw(mant, shift), shift); - - /* Compute the two's complement of the mantissa if the - * input is negative. - */ - sign = spu_maskw(spu_extract(spu_rlmaska((vec_int4)in, -31), 0)); - - mant = spu_xor(mant, sign); - borrow = spu_genb(mant, sign); - borrow = spu_shuffle(borrow, borrow, - VEC_LITERAL(vec_uchar16, 4,5,6,7, 192,192,192,192, - 4,5,6,7, 192,192,192,192)); - mant = spu_subx(mant, sign, borrow); - - return (spu_extract((vec_llong2)(mant), 0)); -} -#endif /* _LLRINTF_H_ */ diff --git a/newlib/libm/machine/spu/headers/llround.h b/newlib/libm/machine/spu/headers/llround.h deleted file mode 100644 index 04969503b..000000000 --- a/newlib/libm/machine/spu/headers/llround.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LLROUND_H_ -#define _LLROUND_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline long long int _llround(double x) -{ - int shift; - vec_int4 exp; - vec_uint4 mant, sign, mask, borrow, addend; - vec_double2 in; - - in = spu_promote(x, 0); - - /* Determine how many bits to shift the mantissa to correctly - * align it into long long element 0. - */ - exp = spu_and(spu_rlmask((vec_int4)in, -20), 0x7FF); - exp = spu_add(exp, -1011); - shift = spu_extract(exp, 0); - - mask = spu_cmpgt(exp, 0); - mask = (vec_uint4)spu_maskw(spu_extract(mask, 0)); - - /* Algn mantissa bits - */ - mant = spu_sel(spu_rlmaskqwbyte((vec_uint4)in, -8), VEC_SPLAT_U32(0x00100000), - VEC_LITERAL(vec_uint4, 0,0,0xFFF00000,0)); - - mant = spu_and(spu_slqwbytebc(spu_slqw(mant, shift), shift), mask); - - /* Perform round by adding 1 if the fraction bits are - * greater than or equal to .5 - */ - addend = spu_and(spu_rlqw(mant, 1), VEC_LITERAL(vec_uint4, 0,1,0,0)); - mant = spu_addx(mant, addend, spu_rlqwbyte(spu_genc(mant, addend), 4)); - - /* Compute the two's complement of the mantissa if the - * input is negative. - */ - sign = spu_maskw(spu_extract(spu_rlmaska((vec_int4)in, -31), 0)); - - mant = spu_xor(mant, sign); - borrow = spu_genb(mant, sign); - borrow = spu_shuffle(borrow, borrow, - VEC_LITERAL(vec_uchar16, 4,5,6,7, 192,192,192,192, - 4,5,6,7, 192,192,192,192)); - mant = spu_subx(mant, sign, borrow); - - return (spu_extract((vec_llong2)(mant), 0)); -} -#endif /* _LLROUND_H_ */ diff --git a/newlib/libm/machine/spu/headers/llroundf.h b/newlib/libm/machine/spu/headers/llroundf.h deleted file mode 100644 index cfdebba2a..000000000 --- a/newlib/libm/machine/spu/headers/llroundf.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LLROUNDF_H_ -#define _LLROUNDF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline long long int _llroundf(float x) -{ - int shift; - vec_int4 exp; - vec_uint4 mant, sign, borrow; - vec_float4 in; - - in = spu_promote(x, 0); - - /* Place mantissa bits (including implied most signficant - * bit) into the most significant bits of element 3. Elements - * 0, 1, and 2 are zeroed. - */ - mant = spu_sel(spu_rlmaskqwbyte((vec_uint4)in, -11), - VEC_SPLAT_U32(0x80000000), - VEC_LITERAL(vec_uint4, 0,0,0xFF,0x800000FF)); - - /* Determine how many bits to shift the mantissa to correctly - * align it into long long element 0. - */ - exp = spu_and(spu_rlmask((vec_int4)in, -23), 0xFF); - shift = spu_extract(spu_add(exp, -94), 0); - - /* Algn mantissa bits - */ - mant = spu_slqwbytebc(spu_slqw(mant, shift), shift); - - /* Perform round by adding 1 if the fraction bits are - * greater than or equal to .5 - */ - mant = spu_add(mant, spu_and(spu_rlqw(mant, 1), VEC_LITERAL(vec_uint4, 0,1,0,0))); - - /* Compute the two's complement of the mantissa if the - * input is negative. - */ - sign = spu_maskw(spu_extract(spu_rlmaska((vec_int4)in, -31), 0)); - - mant = spu_xor(mant, sign); - borrow = spu_genb(mant, sign); - - borrow = spu_shuffle(borrow, borrow, - VEC_LITERAL(vec_uchar16, 4,5,6,7, 192,192,192,192, - 4,5,6,7, 192,192,192,192)); - mant = spu_subx(mant, sign, borrow); - - return (spu_extract((vec_llong2)(mant), 0)); -} - -#endif /* _LLROUNDF_H_ */ diff --git a/newlib/libm/machine/spu/headers/log.h b/newlib/libm/machine/spu/headers/log.h deleted file mode 100644 index 9bb5e3bff..000000000 --- a/newlib/libm/machine/spu/headers/log.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "headers/logd2.h" -#include "headers/dom_chkd_less_than.h" - -static __inline double _log(double x) -{ - double res; - vector double vx; - vector double vc = { 0.0, 0.0 }; - - vx = spu_promote(x, 0); - res = spu_extract(_logd2(vx), 0); -#ifndef _IEEE_LIBM - dom_chkd_less_than(vx, vc); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/log10.h b/newlib/libm/machine/spu/headers/log10.h deleted file mode 100644 index c3c6f9f80..000000000 --- a/newlib/libm/machine/spu/headers/log10.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "headers/log10d2.h" -#include "headers/dom_chkd_less_than.h" - -static __inline double _log10(double x) -{ - double res; - vector double vx; - vector double vc = { 0.0, 0.0 }; - - vx = spu_promote(x, 0); - res = spu_extract(_log10d2(vx), 0); -#ifndef _IEEE_LIBM - dom_chkd_less_than(vx, vc); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/log10d2.h b/newlib/libm/machine/spu/headers/log10d2.h deleted file mode 100644 index 935a76cc6..000000000 --- a/newlib/libm/machine/spu/headers/log10d2.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _LOG10D2_H_ -#define _LOG10D2_H_ 1 - -#include <spu_intrinsics.h> - - -#include "log2d2.h" - -/* - * FUNCTION - * vector double _log10d2(vector double x) - * - * DESCRIPTION - * _log10d2 computes log (base 10) for each of the double word - * elements the input vector x. log10_v - * is computed using log2d2 as follows: - * - * log10d2(x) = log2d2(x) / log2d2(10); - */ -static __inline vector double _log10d2(vector double x) -{ - return (spu_mul(_log2d2(x), spu_splats(0.301029995663981195213))); -} - -#endif /* _LOG10D2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/log10f.h b/newlib/libm/machine/spu/headers/log10f.h deleted file mode 100644 index 202cb7c0d..000000000 --- a/newlib/libm/machine/spu/headers/log10f.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LOG10F_H_ -#define _LOG10F_H_ 1 - -#include "log2f.h" - -/* - * FUNCTION - * float _log10f(float x) - * - * DESCRIPTION - * _log10f computes log (base 10) of the input value x. log10 - * is computed using log2 as follows: - * - * log10f(x) = log2(x) / log2(10); - */ - -static __inline float _log10f(float x) -{ - return (_log2f(x) * 0.30102999566398f); -} - -#endif /* _LOG10F_H_ */ diff --git a/newlib/libm/machine/spu/headers/log1p.h b/newlib/libm/machine/spu/headers/log1p.h deleted file mode 100644 index 758be8d37..000000000 --- a/newlib/libm/machine/spu/headers/log1p.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "headers/log1pd2.h" -#include "headers/dom_chkd_less_than.h" - -static __inline double _log1p(double x) -{ - double res; - vector double vx; - vector double vc = { -1.0, -1.0 }; - - vx = spu_promote(x, 0); - res = spu_extract(_log1pd2(vx), 0); -#ifndef _IEEE_LIBM - dom_chkd_less_than(vx, vc); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/log1pd2.h b/newlib/libm/machine/spu/headers/log1pd2.h deleted file mode 100644 index 099f7b44e..000000000 --- a/newlib/libm/machine/spu/headers/log1pd2.h +++ /dev/null @@ -1,125 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ - -#ifdef __SPU__ -#ifndef _LOG1PD2_H_ -#define _LOG1PD2_H_ 1 - -#include <spu_intrinsics.h> -#include "simdmath.h" - -#include "logd2.h" -#include "divd2.h" - - - -#define LOG1PD2_P0 0.0000000000000000000000000e+00 -#define LOG1PD2_P1 1.0000000000000000000000000e+00 -#define LOG1PD2_P2 2.3771612265431403265836252e+00 -#define LOG1PD2_P3 2.0034423569559494104908026e+00 -#define LOG1PD2_P4 7.1309327316770110272159400e-01 -#define LOG1PD2_P5 9.8219761968547217301228613e-02 -#define LOG1PD2_P6 3.4385125174546914139650511e-03 - -#define LOG1PD2_Q0 1.0000000000000000000000000e+00 -#define LOG1PD2_Q1 2.8771612265431403265836252e+00 -#define LOG1PD2_Q2 3.1086896368941925317130881e+00 -#define LOG1PD2_Q3 1.5583843494335058998956356e+00 -#define LOG1PD2_Q4 3.6047236436186669283898709e-01 -#define LOG1PD2_Q5 3.2620075387969869884496887e-02 -#define LOG1PD2_Q6 6.8047193336239690346356479e-04 - - -/* - * FUNCTION - * vector double _log1pd2(vector double x) - * - * DESCRIPTION - * The function _log1pd2 computes the natural logarithm of x + 1 - * for each of the double word elements of x. - * - */ - -static __inline vector double _log1pd2(vector double x) -{ - vector double oned = spu_splats(1.0); - vector double rangehi = spu_splats(0.35); - vector double rangelo = spu_splats(0.0); - vector unsigned long long use_log; - vector double pr, qr; - vector double eresult; - vector double rresult; - vector double result; - - /* Compiler Bug. Replace xbug with x when spu_cmp*() doesn't - * modify it's arguments! */ - volatile vector double xbug = x; - use_log = spu_or(spu_cmpgt(xbug, rangehi), spu_cmpgt(rangelo, xbug)); - - /* - * Calculate directly using log(x+1) - */ - eresult = _logd2(spu_add(x, oned)); - - /* - * For x in [0.0,0.35], use a rational approximation. - */ - pr = spu_madd(x, spu_splats(LOG1PD2_P6), spu_splats(LOG1PD2_P5)); - qr = spu_madd(x, spu_splats(LOG1PD2_Q6), spu_splats(LOG1PD2_Q5)); - pr = spu_madd(pr, x, spu_splats(LOG1PD2_P4)); - qr = spu_madd(qr, x, spu_splats(LOG1PD2_Q4)); - pr = spu_madd(pr, x, spu_splats(LOG1PD2_P3)); - qr = spu_madd(qr, x, spu_splats(LOG1PD2_Q3)); - pr = spu_madd(pr, x, spu_splats(LOG1PD2_P2)); - qr = spu_madd(qr, x, spu_splats(LOG1PD2_Q2)); - pr = spu_madd(pr, x, spu_splats(LOG1PD2_P1)); - qr = spu_madd(qr, x, spu_splats(LOG1PD2_Q1)); - pr = spu_madd(pr, x, spu_splats(LOG1PD2_P0)); - qr = spu_madd(qr, x, spu_splats(LOG1PD2_Q0)); - rresult = _divd2(pr, qr); - - /* - * Select either direct calculation or rational approximation. - */ - result = spu_sel(rresult, eresult, use_log); - - return result; -} - -#endif /* _LOG1PD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/log1pf.h b/newlib/libm/machine/spu/headers/log1pf.h deleted file mode 100644 index b2af48669..000000000 --- a/newlib/libm/machine/spu/headers/log1pf.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "headers/log1pf4.h" -#include "headers/dom_chkf_less_than.h" - -static __inline float _log1pf(float x) -{ - float res; - vector float vx; - vector float vc = { -1.0, -1.0, -1.0, -1.0 }; - - vx = spu_promote(x, 0); - res = spu_extract(_log1pf4(vx), 0); -#ifndef _IEEE_LIBM - dom_chkf_less_than(vx, vc); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/log1pf4.h b/newlib/libm/machine/spu/headers/log1pf4.h deleted file mode 100644 index 0aa4f5c6c..000000000 --- a/newlib/libm/machine/spu/headers/log1pf4.h +++ /dev/null @@ -1,112 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ - -#ifdef __SPU__ -#ifndef _LOG1PF4_H_ -#define _LOG1PF4_H_ 1 - -#include <spu_intrinsics.h> -#include "simdmath.h" - -#include "logf4.h" -#include "divf4.h" - -/* - * FUNCTION - * vector float _log1pf4(vector float x) - * - * DESCRIPTION - * The function _log1pf4 computes the natural logarithm of x + 1 - * for each of the float word elements of x. - * - * - */ - -#define LOG1PF4_P0 0.0000000000000000000000000e+00f -#define LOG1PF4_P1 1.0000000000000000000000000e+00f -#define LOG1PF4_P2 1.4220868022897381610647471e+00f -#define LOG1PF4_P3 5.4254553902256308361984338e-01f -#define LOG1PF4_P4 4.5971908823142115796400731e-02f - -#define LOG1PF4_Q0 1.0000000000000000000000000e+00f -#define LOG1PF4_Q1 1.9220868007537357247116461e+00f -#define LOG1PF4_Q2 1.1702556461286610645089468e+00f -#define LOG1PF4_Q3 2.4040413392943396631018516e-01f -#define LOG1PF4_Q4 1.0637426466449625625521058e-02f - - -static __inline vector float _log1pf4(vector float x) -{ - vector float onef = spu_splats(1.0f); - vector float range = spu_splats(0.35f); - vector unsigned int use_log; - vector float pr, qr; - vector float eresult; - vector float rresult; - vector float result; - - use_log = spu_cmpabsgt(x, range); - - /* - * Calculate directly using log(x+1) - */ - eresult = _logf4(spu_add(x, onef)); - - /* - * For x in [-0.35,0.35], use a rational approximation. - */ - pr = spu_madd(x, spu_splats((float)LOG1PF4_P4), spu_splats((float)LOG1PF4_P3)); - qr = spu_madd(x, spu_splats((float)LOG1PF4_Q4), spu_splats((float)LOG1PF4_Q3)); - pr = spu_madd(pr, x, spu_splats((float)LOG1PF4_P2)); - qr = spu_madd(qr, x, spu_splats((float)LOG1PF4_Q2)); - pr = spu_madd(pr, x, spu_splats((float)LOG1PF4_P1)); - qr = spu_madd(qr, x, spu_splats((float)LOG1PF4_Q1)); - pr = spu_madd(pr, x, spu_splats((float)LOG1PF4_P0)); - qr = spu_madd(qr, x, spu_splats((float)LOG1PF4_Q0)); - rresult = _divf4(pr, qr); - - /* - * Select either direct calculation or rational approximation. - */ - result = spu_sel(rresult, eresult, use_log); - - return result; -} - -#endif /* _LOG1PF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/log2.h b/newlib/libm/machine/spu/headers/log2.h deleted file mode 100644 index 696bf9fae..000000000 --- a/newlib/libm/machine/spu/headers/log2.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "headers/log2d2.h" -#include "headers/dom_chkd_less_than.h" - -static __inline double _log2(double x) -{ - double res; - vector double vx; - vector double vc = { 0.0, 0.0 }; - - vx = spu_promote(x, 0); - res = spu_extract(_log2d2(vx), 0); -#ifndef _IEEE_LIBM - dom_chkd_less_than(vx, vc); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/log2d2.h b/newlib/libm/machine/spu/headers/log2d2.h deleted file mode 100644 index 25841af32..000000000 --- a/newlib/libm/machine/spu/headers/log2d2.h +++ /dev/null @@ -1,133 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ - -#ifdef __SPU__ -#ifndef _LOG2D2_H_ -#define _LOG2D2_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector double _log2d2(vector double x) - * - * DESCRIPTION - * The function _log2d2 computes log base 2 of the input x for each - * of the double word elements of x. The log2 is decomposed - * into two parts, log2 of the exponent and log2 of the - * fraction. The log2 of the fraction is approximated - * using a 21st order polynomial of the form: - * - * __20_ - * \ - * log(x) = x * (1 + \ (Ci * x^i)) - * / - * /____ - * i=0 - * - * for x in the range 0-1. - */ -#define LOG_C00 -#define LOG_C01 -#define LOG_C02 - -static __inline vector double _log2d2(vector double vx) -{ - vec_int4 addval; - vec_ullong2 exp_mask = spu_splats(0x7FF0000000000000ULL); - vec_double2 vy, vxw; - vec_double2 v1 = spu_splats(1.0); - vec_double2 x2, x4, x8, x10, p1, p2; - - /* Extract the fraction component of input by forcing - * its exponent so that input is in the range [1.0, 2.0) - * and then subtract 1.0 to force it in the range - * [0.0, 1.0). - */ - vxw = spu_sub(spu_sel(vx, v1, exp_mask), v1); - - /* Compute the log2 of the exponent as exp - 1023. - */ - addval = spu_add(spu_rlmask((vec_int4)vx, -20), -1023); - - /* Compute the log2 of the fractional component using a 21st - * order polynomial. The polynomial is evaluated in two halves - * to improve efficiency. - */ - p1 = spu_madd(spu_splats(3.61276447184348752E-05), vxw, spu_splats(-4.16662127033480827E-04)); - p2 = spu_madd(spu_splats(-1.43988260692073185E-01), vxw, spu_splats(1.60245637034704267E-01)); - p1 = spu_madd(vxw, p1, spu_splats(2.28193656337578229E-03)); - p2 = spu_madd(vxw, p2, spu_splats(-1.80329036970820794E-01)); - p1 = spu_madd(vxw, p1, spu_splats(-7.93793829370930689E-03)); - p2 = spu_madd(vxw, p2, spu_splats(2.06098446037376922E-01)); - p1 = spu_madd(vxw, p1, spu_splats(1.98461565426430164E-02)); - p2 = spu_madd(vxw, p2, spu_splats(-2.40449108727688962E-01)); - p1 = spu_madd(vxw, p1, spu_splats(-3.84093543662501949E-02)); - p2 = spu_madd(vxw, p2, spu_splats(2.88539004851839364E-01)); - p1 = spu_madd(vxw, p1, spu_splats(6.08335872067172597E-02)); - p2 = spu_madd(vxw, p2, spu_splats(-3.60673760117245982E-01)); - p1 = spu_madd(vxw, p1, spu_splats(-8.27937055456904317E-02)); - p2 = spu_madd(vxw, p2, spu_splats(4.80898346961226595E-01)); - p1 = spu_madd(vxw, p1, spu_splats(1.01392360727236079E-01)); - p2 = spu_madd(vxw, p2, spu_splats(-7.21347520444469934E-01)); - p1 = spu_madd(vxw, p1, spu_splats(-1.16530490533844182E-01)); - p2 = spu_madd(vxw, p2, spu_splats(0.44269504088896339E+00)); - p1 = spu_madd(vxw, p1, spu_splats(1.30009193360025350E-01)); - - x2 = spu_mul(vxw, vxw); - x4 = spu_mul(x2, x2); - x8 = spu_mul(x4, x4); - x10 = spu_mul(x8, x2); - - vy = spu_madd(spu_madd(x10, p1, p2), vxw, vxw); - - /* Add the log2(exponent) and the log2(fraction) to - * compute the final result. - */ - vy = spu_add(vy, spu_extend(spu_convtf(addval, 0))); - - vxw = spu_extend(spu_convtf(addval, 20)); - - return(vy); -} - -#endif /* _LOG2D2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/log2f.h b/newlib/libm/machine/spu/headers/log2f.h deleted file mode 100644 index 26717c7c0..000000000 --- a/newlib/libm/machine/spu/headers/log2f.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LOG2F_H_ -#define _LOG2F_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/dom_chkf_less_than.h" - -/* - * FUNCTION - * float _log2f(float x) - * - * DESCRIPTION - * _log2f computes log (base 2) of the input value x. The log2f - * function is approximated as a polynomial of order 8 - * (C. Hastings, Jr, 1955). - * - * __8__ - * \ - * \ - * log2f(1+x) = / Ci*x^i - * /____ - * i=1 - * - * for x in the range 0.0 to 1.0 - * - * C1 = 1.4426898816672 - * C2 = -0.72116591947498 - * C3 = 0.47868480909345 - * C4 = -0.34730547155299 - * C5 = 0.24187369696082 - * C6 = -0.13753123777116 - * C7 = 0.052064690894143 - * C8 = -0.0093104962134977 - * - * This function assumes that x is a non-zero positive value. - */ - -static __inline float _log2f(float x) -{ - union { - unsigned int ui; - float f; - } in; - int exponent; - float result; - float x2, x4; - float hi, lo; - vector float vx; - vector float vc = { 0.0, 0.0, 0.0, 0.0 }; - - in.f = x; - - /* Extract the exponent from the input X. - */ - exponent = (signed)((in.ui >> 23) & 0xFF) - 127; - - /* Compute the remainder after removing the exponent. - */ - in.ui -= exponent << 23; - - /* Calculate the log2 of the remainder using the polynomial - * approximation. - */ - x = in.f - 1.0f; - - /* Instruction counts can be reduced if the polynomial was - * computed entirely from nested (dependent) fma's. However, - * to reduce the number of pipeline stalls, the polygon is evaluated - * in two halves (hi amd lo). - */ - x2 = x * x; - x4 = x2 * x2; - hi = -0.0093104962134977f*x + 0.052064690894143f; - hi = hi*x - 0.13753123777116f; - hi = hi*x + 0.24187369696082f; - hi = hi*x - 0.34730547155299f; - lo = 0.47868480909345f *x - 0.72116591947498f; - lo = lo*x + 1.4426898816672f; - lo = lo*x; - result = hi*x4 + lo; - - /* Add the exponent back into the result. - */ - result += (float)(exponent); - -#ifndef _IEEE_LIBM - vx = spu_promote(x, 0); - dom_chkf_less_than(vx, vc); -#endif - return (result); -} - -#endif /* _LOG2F_H_ */ diff --git a/newlib/libm/machine/spu/headers/log2f4.h b/newlib/libm/machine/spu/headers/log2f4.h deleted file mode 100644 index 3853e91bb..000000000 --- a/newlib/libm/machine/spu/headers/log2f4.h +++ /dev/null @@ -1,124 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _LOG2F4_H_ -#define _LOG2F4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector float _log2f4(vector float x) - * - * DESCRIPTION - * The _log2f4 function computes log (base 2) on a vector if inputs - * values x. The _log2f4 function is approximated as a polynomial of - * order 8 (C. Hastings, Jr, 1955). - * - * __8__ - * \ - * \ - * log2f(1+x) = / Ci*x^i - * /____ - * i=1 - * - * for x in the range 0.0 to 1.0 - * - * C1 = 1.4426898816672 - * C2 = -0.72116591947498 - * C3 = 0.47868480909345 - * C4 = -0.34730547155299 - * C5 = 0.24187369696082 - * C6 = -0.13753123777116 - * C7 = 0.052064690894143 - * C8 = -0.0093104962134977 - * - * This function assumes that x is a non-zero positive value. - * - */ -static __inline vector float _log2f4(vector float x) -{ - vector signed int exponent; - vector float result; - vector float x2, x4; - vector float hi, lo; - - /* Extract the exponent from the input X. - */ - exponent = (vector signed int)spu_and(spu_rlmask((vector unsigned int)(x), -23), 0xFF); - exponent = spu_add(exponent, -127); - - /* Compute the remainder after removing the exponent. - */ - x = (vector float)spu_sub((vector signed int)(x), spu_sl(exponent, 23)); - - /* Calculate the log2 of the remainder using the polynomial - * approximation. - */ - x = spu_sub(x, spu_splats(1.0f)); - - /* Instruction counts can be reduced if the polynomial was - * computed entirely from nested (dependent) fma's. However, - * to reduce the number of pipeline stalls, the polygon is evaluated - * in two halves (hi amd lo). - */ - x2 = spu_mul(x, x); - x4 = spu_mul(x2, x2); - - hi = spu_madd(x, spu_splats(-0.0093104962134977f), spu_splats(0.052064690894143f)); - hi = spu_madd(x, hi, spu_splats(-0.13753123777116f)); - hi = spu_madd(x, hi, spu_splats( 0.24187369696082f)); - hi = spu_madd(x, hi, spu_splats(-0.34730547155299f)); - lo = spu_madd(x, spu_splats(0.47868480909345f), spu_splats(-0.72116591947498f)); - lo = spu_madd(x, lo, spu_splats(1.4426898816672f)); - lo = spu_mul(x, lo); - result = spu_madd(x4, hi, lo); - - /* Add the exponent back into the result. - */ - result = spu_add(result, spu_convtf(exponent, 0)); - - return (result); -} - -#endif /* _LOG2F4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/logbf.h b/newlib/libm/machine/spu/headers/logbf.h deleted file mode 100644 index b98256f19..000000000 --- a/newlib/libm/machine/spu/headers/logbf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/logbf4.h" - -static __inline float _logbf(float x) -{ - return spu_extract(_logbf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/logbf4.h b/newlib/libm/machine/spu/headers/logbf4.h deleted file mode 100644 index 6b5321cac..000000000 --- a/newlib/libm/machine/spu/headers/logbf4.h +++ /dev/null @@ -1,98 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _LOGBF4_H_ -#define _LOGBF4_H_ 1 - -#include <spu_intrinsics.h> -#include <vec_types.h> - -/* - * FUNCTION - * vector float _logbf4(vector float x) - * - * DESCRIPTION - * The _logbf4 function returns a vector float that contains the exponent - * of the corresponding elements of the input vector x. The exponent is - * defined by: - * x = frac * FLT_RADIX^exp, with frac in [1, FLT_RADIX). - * - * Special Cases: - * x = 0, result is undefined. - * x = NaN, result is NaN. - * x = infinity, +infinity is returned. - * - */ -static __inline vector float _logbf4(vector float x) -{ - vec_uint4 lzero = (vector unsigned int) {0, 0, 0, 0}; - vec_uint4 exp_mask = (vector unsigned int) {0xFF, 0xFF, 0xFF, 0xFF}; - vec_int4 exp_shift = (vector signed int) { -23, -23, -23, -23}; - vec_int4 exp_bias = (vector signed int) {-127, -127, -127, -127}; - vec_uint4 sign_mask = (vector unsigned int) {0x80000000, 0x80000000, - 0x80000000, 0x80000000}; - vec_uint4 linf = (vector unsigned int) {0x7F800000, 0x7F800000, - 0x7F800000, 0x7F800000}; - vec_uint4 lminf = (vector unsigned int) {0xFF800000, 0xFF800000, - 0xFF800000, 0xFF800000}; - vec_uint4 exp; - vec_uint4 xabs; - vec_float4 exp_unbias; - - - xabs = spu_andc((vec_uint4)x, sign_mask); - - exp = spu_and(spu_rlmask((vec_uint4)x, exp_shift), exp_mask); - exp_unbias = spu_convtf(spu_add((vec_int4)exp, exp_bias), 0); - - /* Zero */ - exp_unbias = spu_sel(exp_unbias, (vec_float4)lminf, (vec_uint4)spu_cmpeq(xabs, lzero)); - - /* NaN */ - exp_unbias = spu_sel(exp_unbias, x, (vec_uint4)spu_cmpgt(xabs, linf)); - - /* Infinite */ - exp_unbias = spu_sel(exp_unbias, (vec_float4)linf, (vec_uint4)spu_cmpeq(xabs, linf)); - - return (exp_unbias); -} - -#endif /* _LOGBF4_H_ */ - -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/logd2.h b/newlib/libm/machine/spu/headers/logd2.h deleted file mode 100644 index a770c3c46..000000000 --- a/newlib/libm/machine/spu/headers/logd2.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _LOGD2_H_ -#define _LOGD2_H_ 1 - -#include <spu_intrinsics.h> -#include "simdmath.h" -#include "log2d2.h" - - -/* - * FUNCTION - * vector double _logd2(vector double x) - * - * DESCRIPTION - * The _logd2 function computes the natural log for each double word - * element of the input x. _logd2 is computed using log2d2 as follows: - * - * logd2(x) = log2d2(x) / log2d2(e) = log2d2(x) * logd2(2) - * - */ -static __inline vector double _logd2(vector double x) -{ - return (spu_mul(_log2d2(x), spu_splats(SM_LN2))); -} - -#endif /* _LOGD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/logf.h b/newlib/libm/machine/spu/headers/logf.h deleted file mode 100644 index e841d2135..000000000 --- a/newlib/libm/machine/spu/headers/logf.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LOGF_H_ -#define _LOGF_H_ 1 - -#include "log2f.h" - -/* - * FUNCTION - * float _logf(float x) - * - * DESCRIPTION - * _logf computes the natural log (base e) of the input value x. log - * is computed using log2 as follows: - * - * logf(x) = log2f(x) / log2f(e); - */ - -static __inline float _logf(float x) -{ - return (_log2f(x) * 0.69314718055995f); -} - -#endif /* _LOGF_H_ */ diff --git a/newlib/libm/machine/spu/headers/logf4.h b/newlib/libm/machine/spu/headers/logf4.h deleted file mode 100644 index 3bd5d7935..000000000 --- a/newlib/libm/machine/spu/headers/logf4.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _LOGF4_H_ -#define _LOGF4_H_ 1 - -#include "log2f4.h" - -/* - * FUNCTION - * vector float _logf4(vector float x) - * - * DESCRIPTION - * The _logf4 function computes the natural log (base e) of the input - * vector of values x. logf4 is computed using log2f4 as follows: - * - * logf4(x) = log2f4(x) / log2f4(e); - * - */ -static __inline vector float _logf4(vector float x) -{ - return (spu_mul(_log2f4(x), spu_splats(0.69314718055995f))); -} - -#endif /* _LOGF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/lrint.h b/newlib/libm/machine/spu/headers/lrint.h deleted file mode 100644 index 818720a12..000000000 --- a/newlib/libm/machine/spu/headers/lrint.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LRINT_H_ -#define _LRINT_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input to the nearest integer according to the current - * rounding mode. - */ -static __inline long int _lrint(double x) -{ - vec_int4 out, sign; - vec_double2 in, addend; - - in = spu_promote(x, 0); - - /* Add 2^53 affect a round to be performed by the hardware. - */ - addend = spu_sel((vec_double2)(VEC_SPLAT_U64(0x4330000000000000ULL)), - in, VEC_SPLAT_U64(0x8000000000000000ULL)); - out = (vec_int4)spu_rlqwbyte(spu_add(in, addend), 4); - - /* Correct the output sign. - */ - sign = spu_rlmaska((vec_int4)in, -31); - - out = spu_sub(spu_xor(out, sign), sign); - - return ((long int)spu_extract(out, 0)); -} -#endif /* _LRINT_H_ */ diff --git a/newlib/libm/machine/spu/headers/lrintf.h b/newlib/libm/machine/spu/headers/lrintf.h deleted file mode 100644 index dc04227bb..000000000 --- a/newlib/libm/machine/spu/headers/lrintf.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LRINTF_H_ -#define _LRINTF_H_ 1 - -#include <spu_intrinsics.h> - -/* Round the input to the nearest integer according to the current - * rounding mode. No special handling is performed when values are - * outside the 32-bit range. - */ -static __inline long int _lrintf(float x) -{ - return ((long int)spu_extract(spu_convts(spu_promote(x, 0), 0), 0)); -} -#endif /* _LRINTF_H_ */ diff --git a/newlib/libm/machine/spu/headers/lround.h b/newlib/libm/machine/spu/headers/lround.h deleted file mode 100644 index 2a1e3269a..000000000 --- a/newlib/libm/machine/spu/headers/lround.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LROUND_H_ -#define _LROUND_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input to the nearest integer value, rounding halfway cases - * away from zero. No special handling is performed when values are - * outside the 32-bit range. - */ - -static __inline long int _lround(double x) -{ - int shift; - vec_int4 exp; - vec_uint4 mant, sign, mask, addend; - vec_double2 in; - - in = spu_promote(x, 0); - - /* Determine how many bits to shift the mantissa to correctly - * align it into long long element 0. - */ - exp = spu_and(spu_rlmask((vec_int4)in, -20), 0x7FF); - exp = spu_add(exp, -979); - shift = spu_extract(exp, 0); - - mask = spu_cmpgt(exp, 0); - - /* Algn mantissa bits - */ - mant = spu_sel(spu_rlmaskqwbyte((vec_uint4)in, -8), VEC_SPLAT_U32(0x00100000), - VEC_LITERAL(vec_uint4, 0,0,0xFFF00000,0)); - - mant = spu_slqwbytebc(spu_slqw(mant, shift), shift); - - /* Perform round by adding 1 if the fraction bits are - * greater than or equal to .5 - */ - addend = spu_and(spu_rlqw(mant, 1), 1); - mant = spu_and(spu_add(mant, addend), mask); - - /* Compute the two's complement of the mantissa if the - * input is negative. - */ - sign = (vec_uint4)spu_rlmaska((vec_int4)in, -31); - - mant = spu_sub(spu_xor(mant, sign), sign); - - return ((long int)spu_extract(mant, 0)); -} -#endif /* _LROUND_H_ */ diff --git a/newlib/libm/machine/spu/headers/lroundf.h b/newlib/libm/machine/spu/headers/lroundf.h deleted file mode 100644 index b9651a56a..000000000 --- a/newlib/libm/machine/spu/headers/lroundf.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _LROUNDF_H_ -#define _LROUNDF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input to the nearest integer value, rounding halfway cases - * away from zero. No special handling is performed when values are - * outside the 32-bit range. - */ -static __inline long int _lroundf(float x) -{ - vec_int4 out; - vec_float4 in, addend; - - in = spu_promote(x, 0); - - /* Add signed 0.5 */ - addend = spu_sel(VEC_SPLAT_F32(0.5f), in, VEC_SPLAT_U32(0x80000000)); - out = spu_convts(spu_add(in, addend), 0); - - return ((long int)spu_extract(out, 0)); -} -#endif /* _LROUNDF_H_ */ diff --git a/newlib/libm/machine/spu/headers/nearbyint.h b/newlib/libm/machine/spu/headers/nearbyint.h deleted file mode 100644 index beef45932..000000000 --- a/newlib/libm/machine/spu/headers/nearbyint.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _NEARBYINT_H_ -#define _NEARBYINT_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input to the nearest integer according to the current - * rounding mode without raising an inexact exception. - */ -static __inline double _nearbyint(double x) -{ - vec_uint4 fpscr; - vec_ullong2 sign = VEC_SPLAT_U64(0x8000000000000000ULL); - vec_double2 in, out, addend; - - fpscr = spu_mffpscr(); - - in = spu_promote(x, 0); - - /* Add 2^53 and then subtract 2^53 to affect a round to be performed by the - * hardware. Also preserve the input sign so that negative inputs that - * round to zero generate a -0.0. - */ - addend = spu_sel((vec_double2)(VEC_SPLAT_U64(0x4330000000000000ULL)), - in, sign); - out = spu_sel(spu_sub(spu_add(in, addend), addend), in, sign); - - spu_mtfpscr(fpscr); - - return (spu_extract(out, 0)); -} -#endif /* _NEARBYINT_H_ */ diff --git a/newlib/libm/machine/spu/headers/nearbyintf.h b/newlib/libm/machine/spu/headers/nearbyintf.h deleted file mode 100644 index b82572022..000000000 --- a/newlib/libm/machine/spu/headers/nearbyintf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/nearbyintf4.h" - -static __inline float _nearbyintf(float x) -{ - return spu_extract(_nearbyintf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/nearbyintf4.h b/newlib/libm/machine/spu/headers/nearbyintf4.h deleted file mode 100644 index eb97ab4f5..000000000 --- a/newlib/libm/machine/spu/headers/nearbyintf4.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _NEARBYINTF4_H_ -#define _NEARBYINTF4_H_ 1 - -#include "truncf4.h" - -/* - * FUNCTION - * vector float _nearbyintf4(vector float x) - * - * DESCRIPTION - * The SPU doesn't support directed rounding. Within the simdmath - * library, nearbyintf4 is aliased to truncf4. This header merely - * provides inlinable compatibility - * - */ -static __inline vector float _nearbyintf4(vector float x) -{ - return _truncf4(x); -} -#endif /* _NEARBYINTF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/nextafter.h b/newlib/libm/machine/spu/headers/nextafter.h deleted file mode 100644 index 0dfbb8285..000000000 --- a/newlib/libm/machine/spu/headers/nextafter.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/nextafterd2.h" - -static __inline double _nextafter(double x, double y) -{ - return spu_extract(_nextafterd2(spu_promote(x, 0), spu_promote(y, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/nextafterd2.h b/newlib/libm/machine/spu/headers/nextafterd2.h deleted file mode 100644 index aac9408a1..000000000 --- a/newlib/libm/machine/spu/headers/nextafterd2.h +++ /dev/null @@ -1,123 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _NEXTAFTERD2_H_ -#define _NEXTAFTERD2_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector double _nextafterd2(vector double x, vector double y) - * - * DESCRIPTION - * The nextafterf4 function returns a vector containing the next representable - * floating-point number after the element of x, in the direction of the - * corresponding element y. - * - * Special Cases: - * - nextafter(NaN, y) = NaN - * - nextafter(x, NaN) = NaN - * - x = largest finite value, y = infinity, result is undefined - * - x = largest finite negative value, y = -infinity, result is undefined - * - x != y, and result = 0, considered an underflow - * - */ - -static __inline vector double _nextafterd2(vector double x, vector double y) -{ - vec_double2 n1ulp = (vec_double2)spu_splats(0x8000000000000001ull); - vector unsigned char mov_carry = {0x80,0x80,0x80, 7, 0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,15, 0x80,0x80,0x80,0x80}; - vec_double2 zerod = spu_splats(0.0); - vec_llong2 one = spu_splats(1ll); - vec_ullong2 xlt0, xgty, xeqy, xeq0; - vec_llong2 xllong; - vec_int4 carry; - vec_llong2 delta, deltap1; - vec_double2 result; - - /* Compiler Bug. Replace xtmp/ytmp with x/y when spu_cmpgt(x,y) doesn't change x/y!*/ - volatile vec_double2 xtmp = x; - volatile vec_double2 ytmp = y; - - /* - * The idea here is to treat x as a signed long long value, which allows us to - * add or subtact one to/from it to get the next representable value. - */ - - xeq0 = spu_cmpeq(xtmp, zerod); - xlt0 = spu_cmpgt(zerod, xtmp); - xeqy = spu_cmpeq(xtmp, ytmp); - xgty = spu_cmpgt(xtmp, ytmp); - - /* If x = -0.0, set x = 0.0 */ - x = spu_andc(x, (vec_double2)xeq0); - - xllong = (vec_llong2)x; - - /* Determine value to add to x */ - delta = (vec_llong2)spu_xor(xgty, xlt0); - - //deltap1 = delta + one; - carry = spu_genc((vec_int4)delta, (vec_int4)one); - carry = spu_shuffle(carry, carry, mov_carry); - deltap1 = (vec_llong2)spu_addx((vec_int4)delta, (vec_int4)one, (vec_int4)carry); - - delta = spu_sel(deltap1, delta, (vec_ullong2)delta); - - //xllong = xllong + delta; - carry = spu_genc((vec_int4)xllong, (vec_int4)delta); - carry = spu_shuffle(carry, carry, mov_carry); - xllong = (vec_llong2)spu_addx((vec_int4)xllong, (vec_int4)delta, (vec_int4)carry); - - /* Fix the case of x = 0, and answer should be -1 ulp */ - result = spu_sel((vec_double2)xllong, n1ulp, spu_and((vec_ullong2)delta, xeq0)); - - /* - * Special Cases - */ - - /* x = y */ - result = spu_sel(result, y, xeqy); - - return result; -} - -#endif /* _NEXTAFTERD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/nextafterf.h b/newlib/libm/machine/spu/headers/nextafterf.h deleted file mode 100644 index a8c0418cf..000000000 --- a/newlib/libm/machine/spu/headers/nextafterf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/nextafterf4.h" - -static __inline float _nextafterf(float x, float y) -{ - return spu_extract(_nextafterf4(spu_promote(x, 0), spu_promote(y, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/nextafterf4.h b/newlib/libm/machine/spu/headers/nextafterf4.h deleted file mode 100644 index 4493db58b..000000000 --- a/newlib/libm/machine/spu/headers/nextafterf4.h +++ /dev/null @@ -1,108 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _NEXTAFTERF4_H_ -#define _NEXTAFTERF4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector float _nextafterf4(vector float x, vector float y) - * - * DESCRIPTION - * The nextafterf4 function returns a vector containing the next representable - * floating-point number after the element of x, in the direction of the - * corresponding element y. - * - * Special Cases: - * - Infinity and NaN are not supported in single-precision on SPU. They are treated - * as normal numbers. - * - x != y, and result = 0 is considered an underflow. - * - * - */ - -static __inline vector float _nextafterf4(vector float x, vector float y) -{ - vec_float4 n1ulp = (vec_float4)spu_splats(0x80000001); - vec_float4 zerof = spu_splats(0.0f); - vec_int4 one = spu_splats(1); - vec_uint4 xlt0, xgty, xeqy, xeq0; - vec_int4 xint; - vec_int4 delta, deltap1; - vec_float4 result; - - /* - * The idea here is to treat x as a signed int value, which allows us to - * add or subtact one to/from it to get the next representable value. - */ - - xeq0 = spu_cmpeq(x, zerof); - xlt0 = spu_cmpgt(zerof, x); - xeqy = spu_cmpeq(x, y); - xgty = spu_cmpgt(x, y); - - /* If x = -0.0, set x = 0.0 */ - x = spu_andc(x, (vec_float4)xeq0); - - xint = (vec_int4)x; - - /* Determine value to add to x */ - delta = (vec_int4)spu_xor(xgty, xlt0); - deltap1 = spu_add(delta,one); - delta = spu_sel(deltap1, delta, (vec_uint4)delta); - - xint = spu_add(xint, delta); - - /* Fix the case of x = 0, and answer should be -1 ulp */ - result = spu_sel((vec_float4)xint, n1ulp, spu_and((vec_uint4)delta, xeq0)); - - /* - * Special Cases - */ - - /* x = y */ - result = spu_sel(result, y, xeqy); - - return result; - -} - -#endif /* _NEXTAFTERF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/pow.h b/newlib/libm/machine/spu/headers/pow.h deleted file mode 100644 index 224d2f402..000000000 --- a/newlib/libm/machine/spu/headers/pow.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/powd2.h" - -static __inline double _pow(double x, double y) -{ - return spu_extract(_powd2(spu_promote(x, 0), spu_promote(y, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/powd2.h b/newlib/libm/machine/spu/headers/powd2.h deleted file mode 100644 index bbcafdfcb..000000000 --- a/newlib/libm/machine/spu/headers/powd2.h +++ /dev/null @@ -1,121 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _POWD2_H_ -#define _POWD2_H_ 1 - -#include "exp2d2.h" -#include "log2d2.h" - -/* - * FUNCTION - * vector double _powd2(vector double x, vector double y) - * - * DESCRIPTION - * The _powd2 function computes x raised to the power y for the set of - * vectors. The powd2 function is computed as by decomposing - * the problem into: - * - * x^y = 2^(y*log2(x)) - * - * - */ -static __inline vector double _powd2(vector double x, vector double y) -{ - vec_uchar16 splat_hi = (vec_uchar16) { 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11 }; - vec_int4 exp, shift; - vec_uint4 sign = (vec_uint4) { 0x80000000, 0, 0x80000000, 0 }; - vec_uint4 or_mask, and_mask, evenmask, intmask; - vec_double2 in_hi; - vector double signmask = spu_splats(-0.0); - vector signed int error = spu_splats(-1); - vector double zero = spu_splats(0.0); - vector unsigned int y_is_int, y_is_odd, y_is_even; - vector unsigned int x_is_neg; - vector double xabs, xsign; - vector double out; - - - xsign = spu_and(x, signmask); - xabs = spu_andc(x, signmask); - x_is_neg = (vec_uint4)spu_cmpgt(zero, x); - - - /* First we solve assuming x was non-negative */ - out = _exp2d2(spu_mul(y, _log2d2(xabs))); - - in_hi = spu_shuffle(y, y, splat_hi); - exp = spu_and(spu_rlmask((vec_int4)in_hi, -20), 0x7FF); - - /* Determine if y is an integer */ - shift = spu_sub(((vec_int4) { 1023, 1043, 1023, 1043 }), exp); - or_mask = spu_andc(spu_cmpgt(shift, 0), sign); - and_mask = spu_rlmask(((vec_uint4) { 0xFFFFF, -1, 0xFFFFF, -1 }), shift); - intmask = spu_or(spu_and(and_mask, spu_cmpgt(shift, -32)), or_mask); - y_is_int = (vec_uint4)spu_cmpeq(y, spu_andc(y, (vec_double2)(intmask))); - - /* Determine if y is an even integer */ - shift = spu_sub(((vec_int4) { 1024, 1044, 1024, 1044 }), exp); - or_mask = spu_andc(spu_cmpgt(shift, 0), sign); - and_mask = spu_rlmask(((vec_uint4) { 0xFFFFF, -1, 0xFFFFF, -1 }), shift); - evenmask = spu_or(spu_and(and_mask, spu_cmpgt(shift, -32)), or_mask); - y_is_even = (vec_uint4)spu_cmpeq(y, spu_andc(y, (vec_double2)(evenmask))); - - y_is_odd = spu_andc(y_is_int, y_is_even); - - - /* Special Cases - */ - - /* x < 0 is only ok when y integer */ - out = spu_sel(out, (vec_double2)error, (vec_ullong2)spu_andc(x_is_neg, y_is_int)); - - /* Preserve the sign of x if y is an odd integer */ - out = spu_sel(out, spu_or(out, xsign), (vec_ullong2)y_is_odd); - - /* x = anything, y = +/- 0, returns 1 */ - out = spu_sel(out, spu_splats(1.0), spu_cmpabseq(y, zero)); - - return(out); -} - -#endif /* _POWD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/powf.h b/newlib/libm/machine/spu/headers/powf.h deleted file mode 100644 index fb0f98c43..000000000 --- a/newlib/libm/machine/spu/headers/powf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/powf4.h" - -static __inline double _powf(float x, float y) -{ - return spu_extract(_powf4(spu_promote(x, 0), spu_promote(y, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/powf4.h b/newlib/libm/machine/spu/headers/powf4.h deleted file mode 100644 index 4fd2a229b..000000000 --- a/newlib/libm/machine/spu/headers/powf4.h +++ /dev/null @@ -1,120 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _POWF4_H_ -#define _POWF4_H_ 1 - -#include <spu_intrinsics.h> -#include <vec_types.h> - -#include "exp2f4.h" -#include "log2f4.h" - -/* - * FUNCTION - * vector float _powf4(vector float x, vector float y) - * - * DESCRIPTION - * The _powf4 function computes x raised to the power y for the set of - * vectors. The powf4 function is computed as by decomposing - * the problem into: - * - * x^y = 2^(y*log2(x)) - * - */ -static __inline vector float _powf4(vector float x, vector float y) -{ - vec_uint4 y_exp; - vec_uint4 y_mantissa; - vec_uint4 mant_shift; - vec_uint4 y_is_int; - vec_uint4 y_is_odd; - vec_uint4 x_sign_bit; - vec_uint4 zero = (vec_uint4)spu_splats(0); - vec_uint4 bit0 = (vec_uint4)spu_splats(0x80000000); - vec_int4 error = spu_splats(-1); - vec_float4 out; - - y_exp = spu_and(spu_rlmask((vec_uint4)y, -23), 0x000000FF); - - /* Need the implied bit in the mantissa to catch - * y = 1 case later - */ - y_mantissa = spu_or(spu_sl((vec_uint4)y, (unsigned int)8), bit0); - - x_sign_bit = spu_and((vec_uint4)x, bit0); - - /* We are going to shift the mantissa over enough to - * determine if we have an integer. - */ - mant_shift = spu_add(y_exp, -127); - - - /* Leave the lowest-order integer bit of mantissa on the - * high end so we can see if the integer is odd. - */ - y_mantissa = spu_sl(y_mantissa, mant_shift); - - y_is_int = spu_cmpeq(spu_andc(y_mantissa, bit0), 0); - y_is_int = spu_and(y_is_int, spu_cmpgt(y_exp, 126)); - - y_is_odd = spu_and(spu_cmpeq(y_mantissa, bit0), y_is_int); - - out = _exp2f4(spu_mul(y, _log2f4(spu_andc(x, (vec_float4)bit0)))); - - /* x < 0 is only ok when y integer - */ - out = spu_sel(out, (vec_float4)error, - spu_andc(spu_cmpeq(x_sign_bit, bit0), y_is_int)); - - /* Preserve the sign of x if y is an odd integer - */ - out = spu_sel(out, spu_or(out, (vec_float4)x_sign_bit), y_is_odd); - - /* x = anything, y = +/- 0, returns 1 - */ - out = spu_sel(out, spu_splats(1.0f), spu_cmpabseq(y, (vec_float4)zero)); - - return(out); -} - -#endif /* _POWF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/recipd2.h b/newlib/libm/machine/spu/headers/recipd2.h deleted file mode 100644 index 0c701ec05..000000000 --- a/newlib/libm/machine/spu/headers/recipd2.h +++ /dev/null @@ -1,113 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _RECIPD2_H_ -#define _RECIPD2_H_ 1 - -#include <spu_intrinsics.h> - - -/* - * FUNCTION - * vector double _recipd2(vector double value) - * - * DESCRIPTION - * The _recipd2 function inverts "value" and returns the result. - * Computation is performed using the single precision reciprocal - * estimate and interpolate instructions to produce a 12 accurate - * estimate. - * - * One (1) iteration of a Newton-Raphson is performed to improve - * accuracy to single precision floating point. Two additional double - * precision iterations are needed to achieve a full double - * preicision result. - * - * The Newton-Raphson iteration is of the form: - * X[i+1] = X[i] * (2.0 - b*X[i]) - * where b is the input value to be inverted - * - */ -static __inline vector double _recipd2(vector double value_d) -{ - vector unsigned long long expmask = (vector unsigned long long) { 0x7FF0000000000000ULL, 0x7FF0000000000000ULL }; - vector float x0; - vector float value; - vector float two = spu_splats(2.0f); - vector double two_d = spu_splats(2.0); - vector double x1, x2, x3; - vector double bias; - - /* Bias the divisor to correct for double precision floating - * point exponents that are out of single precision range. - */ - bias = spu_xor(spu_and(value_d, (vector double)expmask), (vector double)expmask); - - value = spu_roundtf(spu_mul(value_d, bias)); - x0 = spu_re(value); - x1 = spu_extend(spu_mul(x0, spu_nmsub(value, x0, two))); - x1 = spu_mul(x1, bias); - x2 = spu_mul(x1, spu_nmsub(value_d, x1, two_d)); - x3 = spu_mul(x2, spu_nmsub(value_d, x2, two_d)); - - /* Handle input = +/- infinity or +/-0. */ - -#ifdef __SPU_EDP__ - vec_ullong2 is0inf = spu_testsv(value_d, SPU_SV_NEG_ZERO | SPU_SV_POS_ZERO | - SPU_SV_NEG_INFINITY | SPU_SV_POS_INFINITY); -#else - vec_double2 nzero = spu_splats(-0.0); - vec_double2 xabs = spu_andc(value_d, nzero); - vector unsigned char swap = (vector unsigned char) {4,5,6,7, 0,1,2,3, 12,13,14,15, 8,9,10,11}; - vec_uint4 isinf = spu_cmpeq((vec_uint4)xabs, (vec_uint4)expmask); - vec_uint4 iszero = spu_cmpeq((vec_uint4)xabs, 0); - isinf = spu_and(isinf, spu_shuffle(isinf, isinf, swap)); - iszero = spu_and(iszero, spu_shuffle(iszero, iszero, swap)); - vec_ullong2 is0inf = (vec_ullong2)spu_or(isinf, iszero); -#endif /* __SPU_EDP__ */ - - x3 = spu_sel(x3, spu_xor(value_d, (vector double)expmask), is0inf); - - return (x3); -} - -#endif /* _RECIPD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/recipf4.h b/newlib/libm/machine/spu/headers/recipf4.h deleted file mode 100644 index d313c022e..000000000 --- a/newlib/libm/machine/spu/headers/recipf4.h +++ /dev/null @@ -1,142 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _RECIPF4_H_ -#define _RECIPF4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector float _recipf4(vector float value) - * - * DESCRIPTION - * The _recipf4 function inverts the vector "value" and returns the - * result. - * - */ -static __inline vector float _recipf4(vector float a) -{ - /* This function has been designed to provide a - * full function operation that presisely computes - * the reciprocal for the entire range of extended - * single precision input <a>. This includes: - * - * 1) Computing the reciprocal to full single precision - * floating point accuracy. - * 2) Round the result consistently with the rounding - * mode of the processor - truncated toward zero. - * 3) Underflow and overflow results are clamped to - * Smin and Smax and flagged with the appropriate - * UNF or OVF exception in the FPSCR. - * 4) Divide By Zero (DBZ) exception is produced when - * the input <a> has a zero exponent. A reciprocal - * of correctly signed Smax is produced. - * 5) Resulting denorm reciprocal will be coerced to +0. - * 6) If a non-compliant IEEE result is produced, the - * a DIFF exception is generated. - */ - vector float err, x0, x1; - vector float mult; - vector float mant_a; - vector float one = spu_splats(1.0f); - vector unsigned int exp, exp_a; - vector unsigned int exp_mask = (vec_uint4)spu_splats(0x7F800000); - - /* If a has a zero exponent, then set the divide by zero - * (DBZ) exception flag. The estimate result is discarded. - */ - (void)si_frest((qword)(a)); - - /* For computing the reciprocal, force the value - * into the range (1.0 <= 0 < 2.0). - */ - mant_a = spu_sel(a, one, exp_mask); - - /* Compute the reciprocal using the reciprocal estimate - * followed by one iteration of the Newton-Raphson. - * Due to truncation error, the quotient result may be low - * by 1 ulp (unit of least position). Conditionally add one - * if the estimate is too small. - */ - x0 = spu_re(mant_a); - x0 = spu_madd(spu_nmsub(mant_a, x0, one), x0, x0); - - x1 = (vector float)(spu_add((vector unsigned int)(x0), 1)); - err = spu_nmsub(mant_a, x1, one); - - x1 = spu_sel(x0, x1, spu_cmpgt((vector signed int)(err), -1)); - - /* Compute the reciprocal's expected exponent. If the exponent - * is out of range, then force the resulting exponent to 0. - * (127 with the bias). We correct for the out of range - * values by computing a multiplier (mult) that will force the - * result to the correct out of range value and set the - * correct exception flag (UNF, OVF, or neither). The multiplier - * is also conditioned to generate correctly signed Smax if the - * inoput <a> is a denorm or zero. - */ - exp_a = spu_and((vector unsigned int)a, exp_mask); - exp = spu_add(spu_sub(spu_splats((unsigned int)0x7F000000), exp_a), spu_cmpabsgt(mant_a, one)); - - /* The default multiplier is 1.0. If an underflow is detected (ie, - * either the dividend <a> is a denorm/zero, or the computed exponent is - * less than or equal to a biased 0), force the multiplier to 0.0. - */ - mult = spu_and(one, (vector float)spu_cmpgt((vector signed int)(exp), 0)); - - /* Force the multiplier to positive Smax (0x7FFFFFFF) and the biased exponent - * to 127, if the divisor is denorm/zero or the computed biased exponent is - * greater than 255. - */ - mult = spu_or(mult, (vector float)spu_rlmask(spu_cmpeq(exp_a, 0), -1)); - - /* Insert the exponent into the result and perform the - * final multiplication. - */ - x1 = spu_sel(x1, (vector float)exp, exp_mask); - x1 = spu_mul(x1, mult); - - return (x1); -} - -#endif /* _RECIPF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/remainder.h b/newlib/libm/machine/spu/headers/remainder.h deleted file mode 100644 index bdcffa0d3..000000000 --- a/newlib/libm/machine/spu/headers/remainder.h +++ /dev/null @@ -1,192 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _REMAINDER_H_ -#define _REMAINDER_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline double _remainder(double x, double y) -{ - int n, shift; - vec_uchar16 swap_words = VEC_LITERAL(vec_uchar16, 4,5,6,7, 0,1,2,3, 12,13,14,15, 8,9,10,11); - vec_uchar16 propagate = VEC_LITERAL(vec_uchar16, 4,5,6,7, 192,192,192,192, 12,13,14,15, 192,192,192,192); - vec_uchar16 splat_hi = VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11); - vec_uchar16 splat_lo = VEC_LITERAL(vec_uchar16, 4,5,6,7,4,5,6,7, 12,13,14,15, 12,13,14,15); - vec_uint4 vx, vy, z; - vec_uint4 x_hi, y_hi, y_lo; - vec_uint4 abs_x, abs_y, abs_2x, abs_2y; - vec_uint4 exp_x, exp_y; - vec_uint4 zero_x, zero_y; - vec_uint4 logb_x, logb_y; - vec_uint4 mant_x, mant_y; - vec_uint4 normal, norm, denorm; - vec_uint4 gt, eq, bias, y2_hi; - vec_uint4 nan_out; - vec_uint4 result, result0, resultx, cnt, sign, borrow; - vec_uint4 exp_special = VEC_SPLAT_U32(0x7FF00000); - vec_uint4 half_smax = VEC_SPLAT_U32(0x7FEFFFFF); - vec_uint4 lsb = (vec_uint4)(VEC_SPLAT_U64(0x0000000000000001ULL)); - vec_uint4 sign_mask = (vec_uint4)(VEC_SPLAT_U64(0x8000000000000000ULL)); - vec_uint4 implied_1 = (vec_uint4)(VEC_SPLAT_U64(0x0010000000000000ULL)); - vec_uint4 mant_mask = (vec_uint4)(VEC_SPLAT_U64(0x000FFFFFFFFFFFFFULL)); - - vx = (vec_uint4)spu_promote(x, 0); - vy = (vec_uint4)spu_promote(y, 0); - - abs_x = spu_andc(vx, sign_mask); - abs_y = spu_andc(vy, sign_mask); - - abs_2y = spu_add(abs_y, implied_1); - - sign = spu_and(vx, sign_mask); - - - /* Compute abs_x = fmodf(abs_x, 2*abs_y). If y is greater than 0.5*SMAX (SMAX is the maximum - * representable float), then return abs_x. - */ - { - x_hi = spu_shuffle(abs_x, abs_x, splat_hi); - y_lo = spu_shuffle(abs_y, abs_y, splat_lo); - y_hi = spu_shuffle(abs_y, abs_y, splat_hi); - y2_hi = spu_shuffle(abs_2y, abs_2y, splat_hi); - - /* Force a NaN output if (1) abs_x is infinity or NaN or (2) - * abs_y is a NaN. - */ - nan_out = spu_or(spu_cmpgt(x_hi, half_smax), - spu_or(spu_cmpgt(y_hi, exp_special), - spu_and(spu_cmpeq(y_hi, exp_special), - spu_cmpgt(y_lo, 0)))); - - /* Determine ilogb of abs_x and abs_y and - * extract the mantissas (mant_x, mant_y) - */ - exp_x = spu_rlmask(x_hi, -20); - exp_y = spu_rlmask(y2_hi, -20); - - resultx = spu_or(spu_cmpgt(y2_hi, x_hi), spu_cmpgt(y_hi, half_smax)); - - zero_x = spu_cmpeq(exp_x, 0); - zero_y = spu_cmpeq(exp_y, 0); - - logb_x = spu_add(exp_x, -1023); - logb_y = spu_add(exp_y, -1023); - - mant_x = spu_andc(spu_sel(implied_1, abs_x, mant_mask), zero_x); - mant_y = spu_andc(spu_sel(implied_1, abs_2y, mant_mask), zero_y); - - /* Compute fixed point fmod of mant_x and mant_y. Set the flag, - * result0, to all ones if we detect that the final result is - * ever 0. - */ - result0 = spu_or(zero_x, zero_y); - - n = spu_extract(spu_sub(logb_x, logb_y), 0); - - while (n-- > 0) { - borrow = spu_genb(mant_x, mant_y); - borrow = spu_shuffle(borrow, borrow, propagate); - z = spu_subx(mant_x, mant_y, borrow); - - result0 = spu_or(spu_cmpeq(spu_or(z, spu_shuffle(z, z, swap_words)), 0), result0); - - mant_x = spu_sel(spu_slqw(mant_x, 1), spu_andc(spu_slqw(z, 1), lsb), spu_cmpgt((vec_int4)spu_shuffle(z, z, splat_hi), -1)); - } - - - borrow = spu_genb(mant_x, mant_y); - borrow = spu_shuffle(borrow, borrow, propagate); - z = spu_subx(mant_x, mant_y, borrow); - - mant_x = spu_sel(mant_x, z, spu_cmpgt((vec_int4)spu_shuffle(z, z, splat_hi), -1)); - mant_x = spu_andc(mant_x, VEC_LITERAL(vec_uint4, 0,0,-1,-1)); - - result0 = spu_or(spu_cmpeq(spu_or(mant_x, spu_shuffle(mant_x, mant_x, swap_words)), 0), result0); - - /* Convert the result back to floating point and restore - * the sign. If we flagged the result to be zero (result0), - * zero it. If we flagged the result to equal its input x, - * (resultx) then return x. - * - * Double precision generates a denorm for an output. - */ - cnt = spu_cntlz(mant_x); - cnt = spu_add(cnt, spu_and(spu_rlqwbyte(cnt, 4), spu_cmpeq(cnt, 32))); - cnt = spu_add(spu_shuffle(cnt, cnt, splat_hi), -11); - - shift = spu_extract(exp_y, 0) - 1; - denorm = spu_slqwbytebc(spu_slqw(mant_x, shift), shift); - - exp_y = spu_sub(exp_y, cnt); - - normal = spu_cmpgt((vec_int4)exp_y, 0); - - /* Normalize normal results, denormalize denorm results. - */ - shift = spu_extract(cnt, 0); - norm = spu_slqwbytebc(spu_slqw(spu_andc(mant_x, VEC_LITERAL(vec_uint4, 0x00100000, 0, -1, -1)), shift), shift); - - mant_x = spu_sel(denorm, norm, normal); - - exp_y = spu_and(spu_rl(exp_y, 20), normal); - - result = spu_sel(exp_y, mant_x, mant_mask); - - abs_x = spu_sel(spu_andc(result, spu_rlmask(result0, -1)), abs_x, resultx); - - } - - /* if (2*x > y) - * x -= y - * if (2*x >= y) x -= y - */ - abs_2x = spu_and(spu_add(abs_x, implied_1), normal); - - gt = spu_cmpgt(abs_2x, abs_y); - eq = spu_cmpeq(abs_2x, abs_y); - bias = spu_or(gt, spu_and(eq, spu_rlqwbyte(gt, 4))); - bias = spu_shuffle(bias, bias, splat_hi); - abs_x = spu_sel(abs_x, (vec_uint4)spu_sub((vec_double2)abs_x, (vec_double2)abs_y), bias); - - bias = spu_andc(bias, spu_rlmaska((vec_uint4)spu_msub((vec_double2)abs_x, VEC_SPLAT_F64(2.0), (vec_double2)abs_y), -31)); - bias = spu_shuffle(bias, bias, splat_hi); - abs_x = spu_sel(abs_x, (vec_uint4)spu_sub((vec_double2)abs_x, (vec_double2)abs_y), bias); - - /* Generate a correct final sign - */ - result = spu_sel(spu_xor(abs_x, sign), exp_special, nan_out); - - return (spu_extract((vec_double2)result, 0)); -} -#endif /* _REMAINDER_H_ */ diff --git a/newlib/libm/machine/spu/headers/remainderf.h b/newlib/libm/machine/spu/headers/remainderf.h deleted file mode 100644 index b610b673e..000000000 --- a/newlib/libm/machine/spu/headers/remainderf.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _REMAINDERF_H_ -#define _REMAINDERF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline float _remainderf(float x, float y) -{ - int n; - vec_uint4 vx, vy, z; - vec_uint4 abs_x, abs_y, abs_2x, abs_2y; - vec_uint4 exp_x, exp_y; - vec_uint4 zero_x, zero_y; - vec_uint4 logb_x, logb_y; - vec_uint4 mant_x, mant_y; - vec_uint4 result, result0, resultx, cnt, sign, bias; - vec_uint4 sign_mask = VEC_SPLAT_U32(0x80000000); - vec_uint4 implied_1 = VEC_SPLAT_U32(0x00800000); - vec_uint4 mant_mask = VEC_SPLAT_U32(0x007FFFFF); - vec_float4 two = { 2.0f, 2.0f, 2.0f, 2.0f }; - - vx = (vec_uint4)spu_promote(x, 0); - vy = (vec_uint4)spu_promote(y, 0); - - abs_x = spu_andc(vx, sign_mask); - abs_y = spu_andc(vy, sign_mask); - - abs_2y = spu_add(abs_y, implied_1); /* abs_2y = 2 * abs_y */ - - sign = spu_and(vx, sign_mask); - - /* Compute abs_x = fmodf(abs_x, 2*abs_y). If y is greater than 0.5*SMAX - * (SMAX is the maximum representable float), then return abs_x. - */ - { - /* Determine ilogb of abs_x and abs_2y and - * extract the mantissas (mant_x, mant_y) - */ - exp_x = spu_rlmask(abs_x, -23); - exp_y = spu_rlmask(abs_2y, -23); - - resultx = spu_or(spu_cmpgt(abs_2y, abs_x), spu_cmpgt(abs_y, VEC_SPLAT_U32(0x7F7FFFFF))); - - zero_x = spu_cmpeq(exp_x, 0); - zero_y = spu_cmpeq(exp_y, 0); - - logb_x = spu_add(exp_x, -127); - logb_y = spu_add(exp_y, -127); - - mant_x = spu_andc(spu_sel(implied_1, abs_x, mant_mask), zero_x); - mant_y = spu_andc(spu_sel(implied_1, abs_2y, mant_mask), zero_y); - - /* Compute fixed point fmod of mant_x and mant_y. Set the flag, - * result0, to all ones if we detect that the final result is - * ever 0. - */ - result0 = spu_or(zero_x, zero_y); - - n = spu_extract(spu_sub(logb_x, logb_y), 0); - - - while (n-- > 0) { - z = spu_sub(mant_x, mant_y); - - result0 = spu_or(spu_cmpeq(z, 0), result0); - - mant_x = spu_sel(spu_add(mant_x, mant_x), spu_add(z, z), - spu_cmpgt((vec_int4)z, -1)); - } - - z = spu_sub(mant_x, mant_y); - mant_x = spu_sel(mant_x, z, spu_cmpgt((vec_int4)z, -1)); - - result0 = spu_or(spu_cmpeq(mant_x, 0), result0); - - /* Convert the result back to floating point and restore - * the sign. If we flagged the result to be zero (result0), - * zero it. If we flagged the result to equal its input x, - * (resultx) then return x. - */ - cnt = spu_add(spu_cntlz(mant_x), -8); - - mant_x = spu_rl(spu_andc(mant_x, implied_1), (vec_int4)cnt); - - exp_y = spu_sub(exp_y, cnt); - result0 = spu_orc(result0, spu_cmpgt((vec_int4)exp_y, 0)); /* zero denorm results */ - exp_y = spu_rl(exp_y, 23); - - result = spu_sel(exp_y, mant_x, mant_mask); - abs_x = spu_sel(spu_andc(result, spu_rlmask(result0, -1)), abs_x, resultx); - } - - /* if (2*x > y) - * x -= y - * if (2*x >= y) x -= y - */ - abs_2x = spu_add(abs_x, implied_1); - bias = spu_cmpgt(abs_2x, abs_y); - abs_x = spu_sel(abs_x, (vec_uint4)spu_sub((vec_float4)abs_x, (vec_float4)abs_y), bias); - bias = spu_andc(bias, spu_rlmaska((vec_uint4)spu_msub((vec_float4)abs_x, two, (vec_float4)abs_y), -31)); - abs_x = spu_sel(abs_x, (vec_uint4)spu_sub((vec_float4)abs_x, (vec_float4)abs_y), bias); - - /* Generate a correct final sign - */ - result = spu_xor(abs_x, sign); - - return (spu_extract((vec_float4)result, 0)); -} -#endif /* _REMAINDERF_H_ */ diff --git a/newlib/libm/machine/spu/headers/remquo.h b/newlib/libm/machine/spu/headers/remquo.h deleted file mode 100644 index fd6a5aae6..000000000 --- a/newlib/libm/machine/spu/headers/remquo.h +++ /dev/null @@ -1,239 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _REMQUO_H_ -#define _REMQUO_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline double _remquo(double x, double y, int *quo) -{ - int n, shift; - vec_uchar16 swap_words = VEC_LITERAL(vec_uchar16, 4,5,6,7, 0,1,2,3, 12,13,14,15, 8,9,10,11); - vec_uchar16 propagate = VEC_LITERAL(vec_uchar16, 4,5,6,7, 192,192,192,192, 12,13,14,15, 192,192,192,192); - vec_uchar16 splat_hi = VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11); - vec_uchar16 splat_lo = VEC_LITERAL(vec_uchar16, 4,5,6,7,4,5,6,7, 12,13,14,15, 12,13,14,15); - vec_int4 quotient; - vec_int4 four = { 4, 4, 4, 4 }; - vec_uint4 vx, vy, z; - vec_uint4 x_hi, y_hi, y8_hi, y_lo, y2, y4; - vec_uint4 abs_x, abs_y, abs_2x, abs_2y, abs_8y; - vec_uint4 exp_x, exp_y; - vec_uint4 zero_x, zero_y; - vec_uint4 logb_x, logb_y; - vec_uint4 mant_x, mant_y; - vec_uint4 normal, norm, denorm; - vec_uint4 gt, eq, bias; - vec_uint4 nan_out, not_ge, quo_pos, overflow; - vec_uint4 result, result0, resultx, cnt, sign, borrow; - vec_uint4 exp_special = VEC_SPLAT_U32(0x7FF00000); - vec_uint4 half_smax = VEC_SPLAT_U32(0x7FEFFFFF); - vec_uint4 lsb = (vec_uint4)(VEC_SPLAT_U64(0x0000000000000001ULL)); - vec_uint4 sign_mask = (vec_uint4)(VEC_SPLAT_U64(0x8000000000000000ULL)); - vec_uint4 implied_1 = (vec_uint4)(VEC_SPLAT_U64(0x0010000000000000ULL)); - vec_uint4 mant_mask = (vec_uint4)(VEC_SPLAT_U64(0x000FFFFFFFFFFFFFULL)); - - vx = (vec_uint4)spu_promote(x, 0); - vy = (vec_uint4)spu_promote(y, 0); - - abs_x = spu_andc(vx, sign_mask); - abs_y = spu_andc(vy, sign_mask); - - abs_2y = spu_add(abs_y, implied_1); - abs_8y = spu_add(abs_y, VEC_LITERAL(vec_uint4, 0x00300000, 0, 0x00300000, 0)); - - sign = spu_and(vx, sign_mask); - - quo_pos = spu_cmpgt((vec_int4)spu_and(spu_xor(vx, vy), sign_mask), -1); - quo_pos = spu_shuffle(quo_pos, quo_pos, splat_hi); - - /* Compute abs_x = fmodf(abs_x, 8*abs_y). If y is greater than 0.125*SMAX - * (SMAX is the maximum representable float), then return abs_x. - */ - { - x_hi = spu_shuffle(abs_x, abs_x, splat_hi); - y_lo = spu_shuffle(abs_y, abs_y, splat_lo); - y_hi = spu_shuffle(abs_y, abs_y, splat_hi); - y8_hi = spu_shuffle(abs_8y, abs_8y, splat_hi); - - /* Force a NaN output if (1) abs_x is infinity or NaN or (2) - * abs_y is a NaN. - */ - nan_out = spu_or(spu_cmpgt(x_hi, half_smax), - spu_or(spu_cmpgt(y_hi, exp_special), - spu_and(spu_cmpeq(y_hi, exp_special), - spu_cmpgt(y_lo, 0)))); - - /* Determine ilogb of abs_x and abs_8y and - * extract the mantissas (mant_x, mant_y) - */ - exp_x = spu_rlmask(x_hi, -20); - exp_y = spu_rlmask(y8_hi, -20); - - resultx = spu_or(spu_cmpgt(y8_hi, x_hi), spu_cmpgt(y_hi, half_smax)); - - zero_x = spu_cmpeq(exp_x, 0); - zero_y = spu_cmpeq(exp_y, 0); - - logb_x = spu_add(exp_x, -1023); - logb_y = spu_add(exp_y, -1023); - - mant_x = spu_andc(spu_sel(implied_1, abs_x, mant_mask), zero_x); - mant_y = spu_andc(spu_sel(implied_1, abs_8y, mant_mask), zero_y); - - /* Compute fixed point fmod of mant_x and mant_y. Set the flag, - * result0, to all ones if we detect that the final result is - * ever 0. - */ - result0 = spu_or(zero_x, zero_y); - - n = spu_extract(spu_sub(logb_x, logb_y), 0); - - while (n-- > 0) { - borrow = spu_genb(mant_x, mant_y); - borrow = spu_shuffle(borrow, borrow, propagate); - z = spu_subx(mant_x, mant_y, borrow); - - result0 = spu_or(spu_cmpeq(spu_or(z, spu_shuffle(z, z, swap_words)), 0), result0); - - mant_x = spu_sel(spu_slqw(mant_x, 1), spu_andc(spu_slqw(z, 1), lsb), spu_cmpgt((vec_int4)spu_shuffle(z, z, splat_hi), -1)); - } - - - borrow = spu_genb(mant_x, mant_y); - borrow = spu_shuffle(borrow, borrow, propagate); - z = spu_subx(mant_x, mant_y, borrow); - - mant_x = spu_sel(mant_x, z, spu_cmpgt((vec_int4)spu_shuffle(z, z, splat_hi), -1)); - mant_x = spu_andc(mant_x, VEC_LITERAL(vec_uint4, 0,0,-1,-1)); - - result0 = spu_or(spu_cmpeq(spu_or(mant_x, spu_shuffle(mant_x, mant_x, swap_words)), 0), result0); - - /* Convert the result back to floating point and restore - * the sign. If we flagged the result to be zero (result0), - * zero it. If we flagged the result to equal its input x, - * (resultx) then return x. - * - * Double precision generates a denorm for an output. - */ - cnt = spu_cntlz(mant_x); - cnt = spu_add(cnt, spu_and(spu_rlqwbyte(cnt, 4), spu_cmpeq(cnt, 32))); - cnt = spu_add(spu_shuffle(cnt, cnt, splat_hi), -11); - - shift = spu_extract(exp_y, 0) - 1; - denorm = spu_slqwbytebc(spu_slqw(mant_x, shift), shift); - - exp_y = spu_sub(exp_y, cnt); - - normal = spu_cmpgt((vec_int4)exp_y, 0); - - /* Normalize normal results, denormalize denorm results. - */ - shift = spu_extract(cnt, 0); - norm = spu_slqwbytebc(spu_slqw(spu_andc(mant_x, VEC_LITERAL(vec_uint4, 0x00100000, 0, -1, -1)), shift), shift); - - mant_x = spu_sel(denorm, norm, normal); - - exp_y = spu_and(spu_rl(exp_y, 20), normal); - - result = spu_sel(exp_y, mant_x, mant_mask); - - abs_x = spu_sel(spu_andc(result, spu_rlmask(result0, -1)), abs_x, resultx); - - } - - /* if (x >= 4*y) - * x -= 4*y - * quotient = 4 - * else - * quotient = 0 - */ - y4 = spu_andc(spu_add(abs_y, spu_rl(implied_1, 1)), zero_y); - - overflow = spu_cmpgt(y_hi, VEC_SPLAT_U32(0x7FCFFFFF)); - gt = spu_cmpgt(y4, abs_x); - eq = spu_cmpeq(y4, abs_x); - not_ge = spu_or(gt, spu_and(eq, spu_rlqwbyte(gt, 4))); - not_ge = spu_shuffle(not_ge, not_ge, splat_hi); - not_ge = spu_or(not_ge, overflow); - - abs_x = spu_sel((vec_uint4)spu_sub((vec_double2)abs_x, (vec_double2)y4), abs_x, not_ge); - quotient = spu_andc(four, (vec_int4)not_ge); - - /* if (x >= 2*y - * x -= 2*y - * quotient += 2 - */ - y2 = spu_andc(spu_add(abs_y, implied_1), zero_y); - - overflow = spu_cmpgt(y_hi, VEC_SPLAT_U32(0x7FDFFFFF)); - gt = spu_cmpgt(y2, abs_x); - eq = spu_cmpeq(y2, abs_x); - not_ge = spu_or(gt, spu_and(eq, spu_rlqwbyte(gt, 4))); - not_ge = spu_shuffle(not_ge, not_ge, splat_hi); - not_ge = spu_or(not_ge, overflow); - - - abs_x = spu_sel((vec_uint4)spu_sub((vec_double2)abs_x, (vec_double2)y2), abs_x, not_ge); - quotient = spu_sel(spu_add(quotient, 2), quotient, not_ge); - - /* if (2*x > y) - * x -= y - * if (2*x >= y) x -= y - */ - abs_2x = spu_and(spu_add(abs_x, implied_1), normal); - - gt = spu_cmpgt(abs_2x, abs_y); - eq = spu_cmpeq(abs_2x, abs_y); - bias = spu_or(gt, spu_and(eq, spu_rlqwbyte(gt, 4))); - bias = spu_shuffle(bias, bias, splat_hi); - abs_x = spu_sel(abs_x, (vec_uint4)spu_sub((vec_double2)abs_x, (vec_double2)abs_y), bias); - quotient = spu_sub(quotient, (vec_int4)bias); - - bias = spu_andc(bias, spu_rlmaska((vec_uint4)spu_msub((vec_double2)abs_x, VEC_SPLAT_F64(2.0), (vec_double2)abs_y), -31)); - bias = spu_shuffle(bias, bias, splat_hi); - abs_x = spu_sel(abs_x, (vec_uint4)spu_sub((vec_double2)abs_x, (vec_double2)abs_y), bias); - quotient = spu_sub(quotient, (vec_int4)bias); - - /* Generate a correct final sign - */ - result = spu_sel(spu_xor(abs_x, sign), exp_special, nan_out); - - quotient = spu_and(quotient, 7); - quotient = spu_sel(spu_sub(0, quotient), quotient, quo_pos); - - *quo = spu_extract(quotient, 0); - - return (spu_extract((vec_double2)result, 0)); -} -#endif /* _REMQUO_H_ */ diff --git a/newlib/libm/machine/spu/headers/remquof.h b/newlib/libm/machine/spu/headers/remquof.h deleted file mode 100644 index c48172856..000000000 --- a/newlib/libm/machine/spu/headers/remquof.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _REMQUOF_H_ -#define _REMQUOF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - - -static __inline float _remquof(float x, float y, int *quo) -{ - int n; - vec_int4 quotient; - vec_int4 four = { 4, 4, 4, 4 }; - vec_uint4 vx, vy, z, y2, y4; - vec_uint4 abs_x, abs_y, abs_2x, abs_8y; - vec_uint4 exp_x, exp_y; - vec_uint4 zero_x, zero_y; - vec_uint4 logb_x, logb_y; - vec_uint4 mant_x, mant_y; - vec_uint4 not_ge, overflow, quo_pos; - vec_uint4 result, result0, resultx, cnt, sign, bias; - vec_uint4 sign_mask = VEC_SPLAT_U32(0x80000000); - vec_uint4 implied_1 = VEC_SPLAT_U32(0x00800000); - vec_uint4 mant_mask = VEC_SPLAT_U32(0x007FFFFF); - - vx = (vec_uint4)spu_promote(x, 0); - vy = (vec_uint4)spu_promote(y, 0); - - abs_x = spu_andc(vx, sign_mask); - abs_y = spu_andc(vy, sign_mask); - - abs_8y = spu_add(abs_y, VEC_SPLAT_U32(0x01800000)); /* abs_2y = 8 * abs_y */ - - sign = spu_and(vx, sign_mask); - - quo_pos = spu_cmpgt((vec_int4)spu_and(spu_xor(vx, vy), sign_mask), -1); - - /* Compute abs_x = fmodf(abs_x, 8*abs_y). If y is greater than 0.125*SMAX - * (SMAX is the maximum representable float), then return abs_x. - */ - { - /* Determine ilogb of abs_x and abs_8y and - * extract the mantissas (mant_x, mant_y) - */ - exp_x = spu_rlmask(abs_x, -23); - exp_y = spu_rlmask(abs_8y, -23); - - resultx = spu_or(spu_cmpgt(abs_8y, abs_x), spu_cmpgt(abs_y, VEC_SPLAT_U32(0x7E7FFFFF))); - - zero_x = spu_cmpeq(exp_x, 0); - zero_y = spu_cmpeq(exp_y, 0); - - logb_x = spu_add(exp_x, -127); - logb_y = spu_add(exp_y, -127); - - mant_x = spu_andc(spu_sel(implied_1, abs_x, mant_mask), zero_x); - mant_y = spu_andc(spu_sel(implied_1, abs_8y, mant_mask), zero_y); - - /* Compute fixed point fmod of mant_x and mant_y. Set the flag, - * result0, to all ones if we detect that the final result is - * ever 0. - */ - result0 = spu_or(zero_x, zero_y); - - n = spu_extract(spu_sub(logb_x, logb_y), 0); - - - while (n-- > 0) { - z = spu_sub(mant_x, mant_y); - - result0 = spu_or(spu_cmpeq(z, 0), result0); - - mant_x = spu_sel(spu_add(mant_x, mant_x), spu_add(z, z), - spu_cmpgt((vec_int4)z, -1)); - } - - z = spu_sub(mant_x, mant_y); - mant_x = spu_sel(mant_x, z, spu_cmpgt((vec_int4)z, -1)); - - result0 = spu_or(spu_cmpeq(mant_x, 0), result0); - - /* Convert the result back to floating point and restore - * the sign. If we flagged the result to be zero (result0), - * zero it. If we flagged the result to equal its input x, - * (resultx) then return x. - */ - cnt = spu_add(spu_cntlz(mant_x), -8); - - mant_x = spu_rl(spu_andc(mant_x, implied_1), (vec_int4)cnt); - - exp_y = spu_sub(exp_y, cnt); - result0 = spu_orc(result0, spu_cmpgt((vec_int4)exp_y, 0)); /* zero denorm results */ - exp_y = spu_rl(exp_y, 23); - - result = spu_sel(exp_y, mant_x, mant_mask); - abs_x = spu_sel(spu_andc(result, spu_rlmask(result0, -1)), abs_x, resultx); - } - - /* if (x >= 4*y) - * x -= 4*y - * quotient = 4 - * else - * quotient = 0 - */ - y4 = spu_andc(spu_add(abs_y, VEC_SPLAT_U32(0x01000000)), zero_y); - - overflow = spu_cmpgt(abs_y, VEC_SPLAT_U32(0x7EFFFFFF)); - not_ge = spu_or(spu_cmpgt(y4, abs_x), overflow); - - abs_x = spu_sel((vec_uint4)spu_sub((vec_float4)abs_x, (vec_float4)y4), abs_x, not_ge); - quotient = spu_andc (four, (vec_int4)not_ge); - - /* if (x >= 2*y - * x -= 2*y - * quotient += 2 - */ - y2 = spu_andc(spu_add(abs_y, implied_1), zero_y); - not_ge = spu_cmpgt(y2, abs_x); - - abs_x = spu_sel((vec_uint4)spu_sub((vec_float4)abs_x, (vec_float4)y2), abs_x, not_ge); - quotient = spu_sel(spu_add(quotient, 2), quotient, not_ge); - - /* if (2*x > y) - * x -= y - * if (2*x >= y) x -= y - */ - abs_2x = spu_add(abs_x, implied_1); - bias = spu_cmpgt(abs_2x, abs_y); - abs_x = spu_sel(abs_x, (vec_uint4)spu_sub((vec_float4)abs_x, (vec_float4)abs_y), bias); - quotient = spu_sub(quotient, (vec_int4)bias); - - bias = spu_andc(bias, spu_rlmaska((vec_uint4)spu_msub((vec_float4)abs_x, VEC_SPLAT_F32(2.0f), (vec_float4)abs_y), -31)); - abs_x = spu_sel(abs_x, (vec_uint4)spu_sub((vec_float4)abs_x, (vec_float4)abs_y), bias); - quotient = spu_sub(quotient, (vec_int4)bias); - - /* Generate a correct final sign - */ - result = spu_xor(abs_x, sign); - - quotient = spu_and(quotient, 7); - quotient = spu_sel(spu_sub(0, quotient), quotient, quo_pos); - - *quo = spu_extract(quotient, 0); - - return (spu_extract((vec_float4)result, 0)); -} -#endif /* _REMQUOF_H_ */ diff --git a/newlib/libm/machine/spu/headers/rint.h b/newlib/libm/machine/spu/headers/rint.h deleted file mode 100644 index 7cf7adcfa..000000000 --- a/newlib/libm/machine/spu/headers/rint.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _RINT_H_ -#define _RINT_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input to the nearest integer according to the current - * rounding mode. - */ -static __inline double _rint(double x) -{ - vec_ullong2 sign = VEC_SPLAT_U64(0x8000000000000000ULL); - vec_double2 in, out, addend; - - in = spu_promote(x, 0); - - /* Add 2^53 and then subtract 2^53 to affect a round to be performed by the - * hardware. Also preserve the input sign so that negative inputs that - * round to zero generate a -0.0. - */ - addend = spu_sel((vec_double2)(VEC_SPLAT_U64(0x4330000000000000ULL)), - in, sign); - out = spu_sel(spu_sub(spu_add(in, addend), addend), in, sign); - - return (spu_extract(out, 0)); -} -#endif /* _RINT_H_ */ diff --git a/newlib/libm/machine/spu/headers/rintf.h b/newlib/libm/machine/spu/headers/rintf.h deleted file mode 100644 index 4649b0f38..000000000 --- a/newlib/libm/machine/spu/headers/rintf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/rintf4.h" - -static __inline float _rintf(float x) -{ - return spu_extract(_rintf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/rintf4.h b/newlib/libm/machine/spu/headers/rintf4.h deleted file mode 100644 index a2b5aea61..000000000 --- a/newlib/libm/machine/spu/headers/rintf4.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _RINTF4_H_ -#define _RINTF4_H_ 1 - -#include "truncf4.h" - -/* - * FUNCTION - * vector float _rintf4(vector float x) - * - * DESCRIPTION - * The SPU doesn't support directed rounding. Within the simdmath - * library, rintf4 is aliased to truncf4. This header merely - * provides inlinable compatibility - * - */ -static __inline vector float _rintf4(vector float x) -{ - return _truncf4(x); -} -#endif /* _RINTF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/round.h b/newlib/libm/machine/spu/headers/round.h deleted file mode 100644 index 0943218b6..000000000 --- a/newlib/libm/machine/spu/headers/round.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _ROUND_H_ -#define _ROUND_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input to the nearest integer, rounding halfway - * cases away from zero. - */ -static __inline double _round(double x) -{ - vec_uchar16 splat_hi = VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11); - vec_int4 exp, shift; - vec_uint4 sign = VEC_LITERAL(vec_uint4, 0x80000000, 0, 0x80000000, 0); - vec_uint4 or_mask, and_mask, mask, addend; - vec_double2 in, in_hi, out; - - in = spu_promote(x, 0); - - /* Add 0.5 (fixed precision to eliminate rounding issues) - */ - in_hi = spu_shuffle(in, in, splat_hi); - exp = spu_and(spu_rlmask((vec_int4)in_hi, -20), 0x7FF); - - shift = spu_sub(VEC_LITERAL(vec_int4, 1022, 1043, 1022, 1043), exp); - - addend = spu_and(spu_rlmask(VEC_LITERAL(vec_uint4, 0x100000, 0x80000000, - 0x100000, 0x80000000), shift), - spu_cmpgt((vec_uint4)spu_add(shift, -1), -33)); - - in = (vec_double2)spu_addx((vec_uint4)in, addend, - spu_rlqwbyte(spu_genc((vec_uint4)in, addend), 4)); - - /* Truncate the result. - */ - in_hi = spu_shuffle(in, in, splat_hi); - exp = spu_and(spu_rlmask((vec_int4)in_hi, -20), 0x7FF); - - shift = spu_sub(VEC_LITERAL(vec_int4, 1023, 1043, 1023, 1043), exp); - or_mask = spu_andc(spu_cmpgt(shift, 0), sign); - - - and_mask = spu_rlmask(VEC_LITERAL(vec_uint4, 0xFFFFF, -1, 0xFFFFF, -1), - shift); - mask = spu_or(spu_and(and_mask, spu_cmpgt(shift, -31)), or_mask); - - /* Apply the mask and return the result. - */ - out = spu_andc(in, (vec_double2)(mask)); - - return (spu_extract(out, 0)); -} -#endif /* _ROUND_H_ */ diff --git a/newlib/libm/machine/spu/headers/roundf.h b/newlib/libm/machine/spu/headers/roundf.h deleted file mode 100644 index 16914d6f9..000000000 --- a/newlib/libm/machine/spu/headers/roundf.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _ROUNDF_H_ -#define _ROUNDF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Round the input to the nearest integer, rounding halfway - * cases away from zero. - */ -static __inline float _roundf(float x) -{ - vec_int4 exp; - vec_uint4 or_mask, and_mask, mask, addend; - vec_float4 in, out; - - in = spu_promote(x, 0); - - /* Add 0.5 (fixed precision to eliminate rounding issues) - */ - exp = spu_sub(125, spu_and(spu_rlmask((vec_int4)in, -23), 0xFF)); - - addend = spu_and(spu_rlmask(VEC_SPLAT_U32(0x1000000), exp), - spu_cmpgt((vec_uint4)exp, -31)); - - in = (vec_float4)spu_add((vec_uint4)in, addend); - - /* Truncate the result. - */ - exp = spu_sub(127, spu_and(spu_rlmask((vec_int4)in, -23), 0xFF)); - - or_mask = spu_cmpgt(exp, 0); - and_mask = spu_rlmask(VEC_SPLAT_U32(0x7FFFFF), exp); - - mask = spu_or(spu_and(and_mask, spu_cmpgt(exp, -31)), or_mask); - - out = spu_andc(in, (vec_float4)(mask)); - - return (spu_extract(out, 0)); -} -#endif /* _ROUNDF_H_ */ diff --git a/newlib/libm/machine/spu/headers/scalbn.h b/newlib/libm/machine/spu/headers/scalbn.h deleted file mode 100644 index 65802b635..000000000 --- a/newlib/libm/machine/spu/headers/scalbn.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _SCALBN_H_ -#define _SCALBN_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* scalbn computes x * 2^exp. This function variant computes the result - * and handles overflow, underflow, and denorms by breaking the problem - * into: - * exp = MAX(exp, -2044) - * exp = MIN(exp, 2046) - * e1 = exp / 2 - * e2 = exp - e1; - * x * 2^e1 * 2^e2 - */ -static __inline double _scalbn(double x, int exp) -{ - vec_int4 e, e1, e2; - vec_int4 min = VEC_SPLAT_S32(-2044); - vec_int4 max = VEC_SPLAT_S32(2046); - vec_uint4 cmp_min, cmp_max; - vec_uint4 shift = VEC_LITERAL(vec_uint4, 20, 32, 20, 32); - vec_double2 f1, f2; - vec_double2 in, out; - - in = spu_promote(x, 0); - e = spu_promote(exp, 0); - - /* Clamp the specified exponent to the range -2044 to 2046. - */ - cmp_min = spu_cmpgt(e, min); - cmp_max = spu_cmpgt(e, max); - e = spu_sel(min, e, cmp_min); - e = spu_sel(e, max, cmp_max); - - /* Generate the factors f1 = 2^e1 and f2 = 2^e2 - */ - e1 = spu_rlmaska(e, -1); - e2 = spu_sub(e, e1); - - f1 = (vec_double2)spu_sl(spu_add(e1, 1023), shift); - f2 = (vec_double2)spu_sl(spu_add(e2, 1023), shift); - - /* Compute the product x * 2^e1 * 2^e2 - */ - out = spu_mul(spu_mul(in, f1), f2); - - return (spu_extract(out, 0)); -} -#endif /* _SCALBN_H_ */ diff --git a/newlib/libm/machine/spu/headers/scalbnf.h b/newlib/libm/machine/spu/headers/scalbnf.h deleted file mode 100644 index 56ed1ef87..000000000 --- a/newlib/libm/machine/spu/headers/scalbnf.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _SCALBNF_H_ -#define _SCALBNF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* scalbnf computes x * 2^exp. This function is computed without - * the assistence of any floating point operations and as such does - * not set any floating point exceptions. - */ -static __inline float _scalbnf(float x, int exp) -{ - vec_int4 x_exp; - vec_uint4 zero, overflow; - vec_uint4 exp_mask = VEC_SPLAT_U32(0x7F800000); - vec_float4 in, out; - - in = spu_promote(x, 0); - - /* Extract exponent from x. If the exponent is 0, then - * x is either 0 or a denorm and x*2^exp is a zero. - */ - x_exp = spu_and(spu_rlmask((vec_int4)in, -23), 0xFF); - - zero = spu_cmpeq(x_exp, 0); - - /* Compute the expected exponent and determine if the - * result is within range. - */ - x_exp = spu_add(spu_promote(exp, 0), x_exp); - - zero = spu_orc(zero, spu_cmpgt(x_exp, 0)); - - overflow = spu_rlmask(spu_cmpgt(x_exp, 255), -1); - - /* Merge the expect exponent with x's mantissa. Zero the - * result if underflow and force to max if overflow. - */ - out = spu_sel(in, (vec_float4)spu_rl(x_exp, 23), exp_mask); - out = spu_andc(out, (vec_float4)zero); - out = spu_or(out, (vec_float4)overflow); - - return (spu_extract(out, 0)); -} -#endif /* _SCALBNF_H_ */ diff --git a/newlib/libm/machine/spu/headers/scalbnf4.h b/newlib/libm/machine/spu/headers/scalbnf4.h deleted file mode 100644 index 32b733993..000000000 --- a/newlib/libm/machine/spu/headers/scalbnf4.h +++ /dev/null @@ -1,101 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SCALBNF4_H_ -#define _SCALBNF4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector float _scalbnf4(vector float x, vector signed int exp) - * - * DESCRIPTION - * The _scalbnf4 function returns a vector containing each element of x - * multiplied by 2^n computed efficiently. This function is computed - * without the assistance of any floating point operations and as such - * does not set any floating point exceptions. - * - * Special Cases: - * - if the exponent is 0, then x is either 0 or a subnormal, and the - * result will be returned as 0. - * - if the result if underflows, it will be returned as 0. - * - if the result overflows, it will be returned as FLT_MAX. - * - */ -static __inline vector float _scalbnf4(vector float x, vector signed int exp) -{ - vec_int4 x_exp; - vec_uint4 zero; - vec_uint4 overflow; - vec_uint4 exp_mask = (vec_uint4)spu_splats(0x7F800000); - vec_float4 out; - - /* Extract exponent from x. If the exponent is 0, then - * x is either 0 or a denorm and x*2^exp is a zero. - */ - x_exp = spu_and(spu_rlmask((vec_int4)x, -23), 0xFF); - zero = spu_cmpeq(x_exp, 0); - - /* Compute the expected exponent and determine if the - * result is within range. - */ - x_exp = spu_add(exp, x_exp); - - /* Check for zero or overflow of result. - * Note: set high bit of flags = 0, since we have to - * return -0 when x = -0 - */ - zero = spu_rlmask(spu_orc(zero, spu_cmpgt(x_exp, 0)), -1); - overflow = spu_rlmask(spu_cmpgt(x_exp, 255), -1); - - /* Merge the expect exponent with x's mantissa. Zero the - * result if underflow and force to max if overflow. - */ - out = spu_sel(x, (vec_float4)spu_rl(x_exp, 23), exp_mask); - out = spu_andc(out, (vec_float4)zero); - out = spu_or(out, (vec_float4)overflow); - - return out; -} - -#endif /* _SCALBNF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/signbit.h b/newlib/libm/machine/spu/headers/signbit.h deleted file mode 100644 index b27fce235..000000000 --- a/newlib/libm/machine/spu/headers/signbit.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/signbitd2.h" - -static __inline unsigned long long _signbit(double x) -{ - return spu_extract(_signbitd2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/signbitd2.h b/newlib/libm/machine/spu/headers/signbitd2.h deleted file mode 100644 index 74138d4e6..000000000 --- a/newlib/libm/machine/spu/headers/signbitd2.h +++ /dev/null @@ -1,74 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SIGNBITD2_H_ -#define _SIGNBITD2_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector unsigned long long _signbitd2(vector double x) - * - * DESCRIPTION - * The signbitd2 function returns a vector which contains either all ones - * or all zeros, depending on the sign of the corresponding input vector - * element. - * - * Note that the signbit functions are not logically equivalent to - * x < 0.0. IEEE 754 floating point rules include a signed zero, so if - * the input value is –0.0, signbit will return non-zero, but the naive - * implementation will not. - * - * RETURNS - * The function signbitf4 returns an unsigned int vector in which each - * element is defined as: - * - * - ULLONG_MAX (0xFFFFFFFFFFFFFFFF) if the sign bit is set for the - * corresponding element of x - * - 0 (0x0000000000000000) otherwise. - * - */ -static __inline vector unsigned long long _signbitd2(vector double x) -{ - vec_uchar16 shuf = ((vec_uchar16){0, 1, 2, 3, 0, 1, 2, 3, 8, 9, 10, 11, 8, 9, 10, 11}); - vec_uint4 r = spu_rlmaska((vec_uint4)x,-31); - return (vec_ullong2)spu_shuffle(r,r,shuf); -} -#endif /* _SIGNBITD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/simdmath.h b/newlib/libm/machine/spu/headers/simdmath.h deleted file mode 100644 index 3330d79b7..000000000 --- a/newlib/libm/machine/spu/headers/simdmath.h +++ /dev/null @@ -1,267 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifndef __SIMD_MATH_H__ -#define __SIMD_MATH_H__ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(__SPU__) && !defined(__ALTIVEC__) -#error Bad platform -#else - -#define SM_E 2.7182818284590452354 /* e */ -#define SM_LOG2E 1.4426950408889634074 /* log_2 e */ -#define SM_LOG10E 0.43429448190325182765 /* log_10 e */ -#define SM_LN2 0.69314718055994530942 /* log_e 2 */ -#define SM_LN10 2.30258509299404568402 /* log_e 10 */ -#define SM_PI 3.14159265358979323846 /* pi */ -#define SM_PI_2 1.57079632679489661923 /* pi/2 */ -#define SM_PI_4 0.78539816339744830962 /* pi/4 */ -#define SM_1_PI 0.31830988618379067154 /* 1/pi */ -#define SM_2_PI 0.63661977236758134308 /* 2/pi */ -#define SM_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ -#define SM_SQRT2 1.41421356237309504880 /* sqrt(2) */ -#define SM_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ - -/* Typedefs common to both SPU and PPU */ -typedef struct divi4_s { - vector signed int quot; - vector signed int rem; -} divi4_t; - -typedef struct divu4_s { - vector unsigned int quot; - vector unsigned int rem; -} divu4_t; - - -/* Functions common to both SPU and PPU */ -vector signed int absi4(vector signed int x); -vector float acosf4(vector float x); -vector float acoshf4(vector float x); -vector float asinf4(vector float x); -vector float asinhf4(vector float x); -vector float atanf4(vector float x); -vector float atanhf4(vector float x); -vector float atan2f4(vector float y, vector float x); -vector float cbrtf4(vector float x); -vector float ceilf4(vector float x); -vector float copysignf4(vector float x, vector float y); -vector float cosf4(vector float x); -vector float coshf4(vector float x); -vector float divf4(vector float x, vector float y); -vector float divf4_fast(vector float x, vector float y); -divi4_t divi4(vector signed int dividend, vector signed int divisor); -divu4_t divu4(vector unsigned int dividend, vector unsigned int divisor); -vector float erff4(vector float x); -vector float erfcf4(vector float x); -vector float exp2f4(vector float x); -vector float expf4(vector float x); -vector float expm1f4(vector float x); -vector float fabsf4(vector float value); -vector float fdimf4(vector float x, vector float y); -vector float floorf4(vector float value); -vector float fmaf4(vector float x, vector float y, vector float z); -vector float fmaxf4(vector float x, vector float y); -vector float fminf4(vector float x, vector float y); -vector float fmodf4(vector float x, vector float y); -vector signed int fpclassifyf4(vector float x); -vector float frexpf4(vector float x, vector signed int *pexp); -vector float hypotf4(vector float x, vector float y); -vector signed int ilogbf4(vector float x); -vector signed int irintf4(vector float x); -vector signed int iroundf4(vector float x); -vector unsigned int is0denormf4(vector float x); -vector unsigned int isequalf4(vector float x, vector float y); -vector unsigned int isfinitef4(vector float x); -vector unsigned int isgreaterf4(vector float x, vector float y); -vector unsigned int isgreaterequalf4(vector float x, vector float y); -vector unsigned int isinff4(vector float x); -vector unsigned int islessf4(vector float x, vector float y); -vector unsigned int islessequalf4(vector float x, vector float y); -vector unsigned int islessgreaterf4(vector float x, vector float y); -vector unsigned int isnanf4(vector float x); -vector unsigned int isnormalf4(vector float x); -vector unsigned int isunorderedf4(vector float x, vector float y); -vector float ldexpf4(vector float x, vector signed int exp); -vector float lgammaf4(vector float x); -vector float log10f4(vector float x); -vector float log1pf4(vector float x); -vector float log2f4(vector float x); -vector float logbf4(vector float x); -vector float logf4(vector float x); -vector float modff4(vector float x, vector float *pint); -vector float nearbyintf4(vector float x); -vector float negatef4(vector float x); -vector signed int negatei4(vector signed int x); -vector float nextafterf4(vector float x, vector float y); -vector float powf4(vector float x, vector float y); -vector float recipf4(vector float a); -vector float remainderf4(vector float x, vector float y); -vector float remquof4(vector float x, vector float y, vector signed int *quo); -vector float rintf4(vector float x); -vector float roundf4(vector float x); -vector float rsqrtf4(vector float value); -vector float scalbnf4(vector float x, vector signed int exp); -vector unsigned int signbitf4(vector float x); -void sincosf4(vector float x, vector float *sx, vector float *cx); -vector float sinf4(vector float x); -vector float sinhf4(vector float x); -vector float sqrtf4(vector float in); -vector float tanf4(vector float angle); -vector float tanhf4(vector float x); -vector float tgammaf4(vector float x); -vector float truncf4(vector float x); - - -#ifdef __SPU__ -/* Typedefs specific to SPU */ -typedef struct llroundf4_s { - vector signed long long vll[2]; -} llroundf4_t; - -typedef struct lldivi2_s { - vector signed long long quot; - vector signed long long rem; -} lldivi2_t; - -typedef struct lldivu2_s { - vector unsigned long long quot; - vector unsigned long long rem; -} lldivu2_t; - - -/* Functions specific to SPU */ -llroundf4_t llrintf4(vector float in); -llroundf4_t llroundf4 (vector float x); -vector double acosd2(vector double x); -vector double acoshd2(vector double x); -vector double asind2(vector double x); -vector double asinhd2(vector double x); -vector double atan2d2(vector double y, vector double x); -vector double atand2(vector double x); -vector double atanhd2(vector double x); -vector double cbrtd2(vector double x); -vector double ceild2(vector double x); -vector float ceilf4_fast(vector float x); -vector double copysignd2(vector double x, vector double y); -vector double cosd2(vector double x); -vector double coshd2(vector double x); -vector double divd2(vector double a, vector double b); -vector double erfcd2(vector double x); -vector double erfd2(vector double x); -vector double exp2d2(vector double x); -vector double expd2(vector double x); -vector double expm1d2(vector double x); -vector double fabsd2(vector double x); -vector double fdimd2(vector double x, vector double y); -vector double floord2(vector double x); -vector float floorf4_fast(vector float value); -vector double fmad2(vector double x, vector double y, vector double z); -vector double fmaxd2(vector double x, vector double y); -vector double fmind2(vector double x, vector double y); -vector double fmodd2(vector double x, vector double y); -vector float fmodf4_fast(vector float x, vector float y); -vector signed long long fpclassifyd2(vector double x); -vector double frexpd2(vector double x, vector signed long long *pexp); -vector double hypotd2(vector double x, vector double y); -vector signed long long ilogbd2(vector double x); -vector unsigned long long is0denormd2(vector double x); -vector unsigned long long isequald2(vector double x, vector double y); -vector unsigned long long isfinited2(vector double x); -vector unsigned long long isgreaterd2(vector double x, vector double y); -vector unsigned long long isgreaterequald2(vector double x, vector double y); -vector unsigned long long isinfd2(vector double x); -vector unsigned long long islessd2(vector double x, vector double y); -vector unsigned long long islessequald2(vector double x, vector double y); -vector unsigned long long islessgreaterd2(vector double x, vector double y); -vector unsigned long long isnand2(vector double x); -vector unsigned long long isnormald2(vector double x); -vector unsigned long long isunorderedd2(vector double x, vector double y); -vector double ldexpd2(vector double x, vector signed long long exp); -vector signed long long llabsi2(vector signed long long x); -lldivi2_t lldivi2(vector signed long long x, vector signed long long y); -lldivu2_t lldivu2(vector unsigned long long x, vector unsigned long long y); -vector double lgammad2(vector double x); -vector signed long long llrintd2(vector double in); -vector signed long long llroundd2(vector double x); -vector double log10d2(vector double x); -vector double log1pd2(vector double x); -vector double log2d2(vector double x); -vector double logbd2(vector double x); -vector double logd2(vector double x); -vector double modfd2(vector double x, vector double* pint); -vector double nearbyintd2(vector double x); -vector double negated2(vector double x); -vector double nextafterd2(vector double x, vector double y); -vector signed long long negatell2(vector signed long long x); -vector double powd2(vector double x, vector double y); -vector double recipd2(vector double value_d); -vector float recipf4_fast(vector float a); -vector double remainderd2(vector double x, vector double y); -vector double remquod2(vector double x, vector double y, vector signed long long *quo); -vector double rintd2(vector double x); -vector double roundd2(vector double x); -vector double rsqrtd2(vector double x); -vector double scalbllnd2(vector double x, vector signed long long n); -vector unsigned long long signbitd2(vector double x); -void sincosd2(vector double x, vector double *sx, vector double *cx); -vector double sind2(vector double x); -vector double sinhd2(vector double x); -vector double sqrtd2(vector double x); -vector float sqrtf4_fast(vector float in); -vector double tand2(vector double x); -vector double tanhd2(vector double x); -vector double tgammad2(vector double x); -vector double truncd2(vector double x); - -#endif /* __SPU__ */ - -/* Functions specific to PPU */ -#ifdef __ALTIVEC__ -#endif - -#endif /* __SPU__ || __ALTIVEC__ */ - -#ifdef __cplusplus -} -#endif - -#endif /* __SIMD_MATH_H__ */ diff --git a/newlib/libm/machine/spu/headers/sin.h b/newlib/libm/machine/spu/headers/sin.h deleted file mode 100644 index 5d3fac823..000000000 --- a/newlib/libm/machine/spu/headers/sin.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/sind2.h" - -static __inline double _sin(double angle) -{ - return spu_extract(_sind2(spu_promote(angle, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/sincos.h b/newlib/libm/machine/spu/headers/sincos.h deleted file mode 100644 index 37c7d9416..000000000 --- a/newlib/libm/machine/spu/headers/sincos.h +++ /dev/null @@ -1,10 +0,0 @@ -#include "headers/sincosd2.h" - -static __inline void _sincos(double angle, double* sinx, double* cosx) -{ - vector double vsinx, vcosx; - - _sincosd2(spu_promote(angle, 0), &vsinx, &vcosx); - *sinx = spu_extract(vsinx, 0); - *cosx = spu_extract(vcosx, 0); -} diff --git a/newlib/libm/machine/spu/headers/sincosd2.h b/newlib/libm/machine/spu/headers/sincosd2.h deleted file mode 100644 index 5f3102d39..000000000 --- a/newlib/libm/machine/spu/headers/sincosd2.h +++ /dev/null @@ -1,93 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SINCOSD2_H_ -#define _SINCOSD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "cos_sin.h" - -/* - * FUNCTION - * void _sincosd2(vector double x, vector double *sx, vector double *cx) - * - * DESCRIPTION - * The _sincosd2 function computes the sine and cosine of a vector of - * angles (expressed in radians) to an accuracy of a double precision - * floating point. - * - * - */ - -static __inline void _sincosd2(vector double angle, - vector double *sinx, - vector double *cosx) -{ - vec_int4 octant; - vec_ullong2 select; - vec_double2 cos, sin; - vec_double2 toggle_sign; - - /* Range reduce the input angle x into the range -PI/4 to PI/4 - * by performing simple modulus. - */ - MOD_PI_OVER_FOUR(angle, octant); - - /* Compute the cosine and sine of the range reduced input. - */ - COMPUTE_COS_SIN(angle, cos, sin); - - /* - * See the comments for the sind2 and cosd2 functions for an - * explanation of the following steps. - */ - octant = spu_shuffle(octant, octant, ((vec_uchar16) { 0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11 })); - select = (vec_ullong2)spu_cmpeq(spu_and(octant, 2), 0); - - toggle_sign = (vec_double2)spu_sl(spu_and(spu_add(octant, 2), 4), ((vec_uint4) { 29,32,29,32 })); - *cosx = spu_xor(spu_sel(sin, cos, select), toggle_sign); - - toggle_sign = (vec_double2)spu_sl(spu_and(octant, 4), ((vec_uint4) { 29,32,29,32 })); - *sinx = spu_xor(spu_sel(cos, sin, select), toggle_sign); - - return; -} - -#endif /* _SINCOSD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/sincosf.h b/newlib/libm/machine/spu/headers/sincosf.h deleted file mode 100644 index e67e99701..000000000 --- a/newlib/libm/machine/spu/headers/sincosf.h +++ /dev/null @@ -1,10 +0,0 @@ -#include "headers/sincosf4.h" - -static __inline void _sincosf(float angle, float* sinx, float* cosx) -{ - vector float vsinx, vcosx; - - _sincosf4(spu_promote(angle, 0), &vsinx, &vcosx); - *sinx = spu_extract(vsinx, 0); - *cosx = spu_extract(vcosx, 0); -} diff --git a/newlib/libm/machine/spu/headers/sincosf4.h b/newlib/libm/machine/spu/headers/sincosf4.h deleted file mode 100644 index 403897448..000000000 --- a/newlib/libm/machine/spu/headers/sincosf4.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SINCOSF4_H_ -#define _SINCOSF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "cos_sin.h" - -/* - * FUNCTION - * vector void _sincosf4(vector float angle, vector float *sx, vector float *cx) - * - * DESCRIPTION - * The _sincosf4 function computes the sine and cosine of a vector of - * angles (expressed in radians) to an accuracy of a single precision - * floating point. - * - */ - -static __inline void _sincosf4(vector float angle, - vector float *sinx, - vector float *cosx) -{ - - vec_int4 octant; - vec_uint4 select; - vec_float4 cos, sin; - vec_float4 toggle_sign; - - /* Range reduce the input angle x into the range -PI/4 to PI/4 - * by performing simple modulus. - */ - MOD_PI_OVER_FOUR_F(angle, octant); - - /* Compute the cosine and sine of the range reduced input. - */ - COMPUTE_COS_SIN_F(angle, cos, sin); - - select = spu_cmpeq(spu_and(octant, 2), 0); - - toggle_sign = (vec_float4)spu_sl(spu_and(octant, 4), 29); - *sinx = spu_xor(spu_sel(cos, sin, select), toggle_sign); - - toggle_sign = (vec_float4)spu_sl(spu_and(spu_add(octant, 2), 4), 29); - *cosx = spu_xor(spu_sel(sin, cos, select), toggle_sign); - - return; -} - -#endif /* _SINCOSF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/sind2.h b/newlib/libm/machine/spu/headers/sind2.h deleted file mode 100644 index b1a9d1ff2..000000000 --- a/newlib/libm/machine/spu/headers/sind2.h +++ /dev/null @@ -1,98 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SIND2_H_ -#define _SIND2_H_ 1 - -#include <spu_intrinsics.h> -#include "cos_sin.h" - -/* - * FUNCTION - * vector double _sind2(vector double angle) - * - * DESCRIPTION - * The _sind2 function computes the sine of a vector of angles (expressed - * in radians) to an accuracy of a double precision floating point. - * - */ -static __inline vector double _sind2(vector double angle) -{ - vec_int4 octant; - vec_ullong2 select; - vec_double2 cos, sin; - vec_double2 toggle_sign, answer; - - /* Range reduce the input angle x into the range -PI/4 to PI/4 - * by performing simple modulus. - */ - MOD_PI_OVER_FOUR(angle, octant); - - /* Compute the cosine and sine of the range reduced input. - */ - COMPUTE_COS_SIN(angle, cos, sin); - - /* For each SIMD element, select which result (cos or sin) to use - * with a sign correction depending upon the octant of the original - * angle (Maclaurin series). - * - * octants angles select sign toggle - * ------- ------------ ------ ----------- - * 0 0 to 45 sin no - * 1,2 45 to 135 cos no - * 3,4 135 to 225 sin yes - * 5,6 225 to 315 sin yes - * 7 315 to 360 cos no - */ - octant = spu_shuffle(octant, octant, ((vec_uchar16) { - 0,1, 2, 3, 0,1, 2, 3, - 8,9,10,11, 8,9,10,11 } )); - - toggle_sign = (vec_double2)spu_sl(spu_and(octant, 4), ((vec_uint4) { 29,32,29,32 })); - select = (vec_ullong2)spu_cmpeq(spu_and(octant, 2), 0); - - answer = spu_xor(spu_sel(cos, sin, select), toggle_sign); - - return (answer); -} - -#endif /* _SIND2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/sinf.h b/newlib/libm/machine/spu/headers/sinf.h deleted file mode 100644 index 389050ba2..000000000 --- a/newlib/libm/machine/spu/headers/sinf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/sinf4.h" - -static __inline float _sinf(float angle) -{ - return spu_extract(_sinf4(spu_promote(angle, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/sinf4.h b/newlib/libm/machine/spu/headers/sinf4.h deleted file mode 100644 index 90b20e63f..000000000 --- a/newlib/libm/machine/spu/headers/sinf4.h +++ /dev/null @@ -1,95 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SINF4_H_ -#define _SINF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "cos_sin.h" - -/* - * FUNCTION - * vector float _sind2(vector float angle) - * - * DESCRIPTION - * The _sinf4 function computes the sine of a vector of angles (expressed - * in radians) to an accuracy of a single precision floating point. - * - */ -static __inline vector float _sinf4(vector float angle) -{ - vec_int4 octant; - vec_uint4 select; - vec_float4 cos, sin; - vec_float4 toggle_sign, answer; - - /* Range reduce the input angle x into the range -PI/4 to PI/4 - * by performing simple modulus. - */ - MOD_PI_OVER_FOUR_F(angle, octant); - - /* Compute the cosine and sine of the range reduced input. - */ - COMPUTE_COS_SIN_F(angle, cos, sin); - - /* For each SIMD element, select which result (cos or sin) to use - * with a sign correction depending upon the octant of the original - * angle (Maclaurin series). - * - * octants angles select sign toggle - * ------- ------------ ------ ----------- - * 0 0 to 45 sin no - * 1,2 45 to 135 cos no - * 3,4 135 to 225 sin yes - * 5,6 225 to 315 cos yes - * 7 315 to 360 sin no - */ - toggle_sign = (vec_float4)spu_sl(spu_and(octant, 4), 29); - select = spu_cmpeq(spu_and(octant, 2), 0); - - answer = spu_xor(spu_sel(cos, sin, select), toggle_sign); - - return (answer); -} - -#endif /* _SINF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/sinh.h b/newlib/libm/machine/spu/headers/sinh.h deleted file mode 100644 index f94afaf81..000000000 --- a/newlib/libm/machine/spu/headers/sinh.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/sinhd2.h" - -static __inline double _sinh(double x) -{ - return spu_extract(_sinhd2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/sinhd2.h b/newlib/libm/machine/spu/headers/sinhd2.h deleted file mode 100644 index d87ec07a3..000000000 --- a/newlib/libm/machine/spu/headers/sinhd2.h +++ /dev/null @@ -1,121 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SINHD2_H_ -#define _SINHD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "expd2.h" -#include "recipd2.h" - -/* - * FUNCTION - * vector double _sinhd2(vector double angle) - * - * DESCRIPTION - * The _sinhd2 function computes the hyperbolic sine of a vector of - * angles (expressed in radians) to an accuracy of a double precision - * floating point. - */ -static __inline vector double _sinhd2(vector double x) -{ - // Coefficents for the power series - vec_double2 f03 = spu_splats(1.66666666666666666667E-01); // 1/(3!) - vec_double2 f05 = spu_splats(8.33333333333333333333E-03); // 1/(5!) - vec_double2 f07 = spu_splats(1.98412698412698412698E-04); // 1/(7!) - vec_double2 f09 = spu_splats(2.75573192239858906526E-06); // 1/(9!) - vec_double2 f11 = spu_splats(2.50521083854417187751E-08); // 1/(11!) - vec_double2 f13 = spu_splats(1.60590438368216145994E-10); // 1/(13!) - vec_double2 f15 = spu_splats(7.64716373181981647590E-13); // 1/(15!) - vec_double2 f17 = spu_splats(2.81145725434552076320E-15); // 1/(17!) - vec_double2 f19 = spu_splats(8.22063524662432971696E-18); // 1/(19!) - vec_double2 f21 = spu_splats(1.95729410633912612308E-20); // 1/(21!) - vec_double2 f23 = spu_splats(3.86817017063068403772E-23); // 1/(23!) - - - - // Check if the input is within the range [ -1.0 ... 1.0 ] - // If it is, we want to use the power series, otherwise - // we want to use the 0.5 * (e^x - e^-x) - - // round to float, check if within range. Results will be in - // slots 0 and 2, so we rotate right 4 bytes, and "or" with ourself - // to produce 64 bits of all 1's or 0's. - vec_uint4 use_exp = spu_cmpabsgt(spu_roundtf(x),spu_splats(1.0f)); - use_exp = spu_or(use_exp,spu_rlmaskqwbyte(use_exp,-4)); - - - - - // Perform the calculation of the power series using Horner's method - vec_double2 result; - vec_double2 x2 = spu_mul(x,x); - result = spu_madd(x2,f23,f21); - result = spu_madd(x2,result,f19); - result = spu_madd(x2,result,f17); - result = spu_madd(x2,result,f15); - result = spu_madd(x2,result,f13); - result = spu_madd(x2,result,f11); - result = spu_madd(x2,result,f09); - result = spu_madd(x2,result,f07); - result = spu_madd(x2,result,f05); - result = spu_madd(x2,result,f03); - result = spu_madd(x2,result,spu_splats(1.0)); - result = spu_mul(x,result); - - - // Perform calculation as a function of 0.5 * (e^x - e^-x) - vec_double2 ex = _expd2(x); - vec_double2 ex_inv = _recipd2(ex); - - vec_double2 r2= spu_sub(ex,ex_inv); - r2 = spu_mul(r2,spu_splats(0.5)); - - - // Select either the power series or exp version - result = spu_sel(result,r2,(vec_ullong2)use_exp); - - - - return result; - -} - -#endif /* _SINHD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/sinhf.h b/newlib/libm/machine/spu/headers/sinhf.h deleted file mode 100644 index ddf99d4b6..000000000 --- a/newlib/libm/machine/spu/headers/sinhf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/sinhf4.h" - -static __inline float _sinhf(float x) -{ - return spu_extract(_sinhf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/sinhf4.h b/newlib/libm/machine/spu/headers/sinhf4.h deleted file mode 100644 index 486f5d358..000000000 --- a/newlib/libm/machine/spu/headers/sinhf4.h +++ /dev/null @@ -1,104 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2006,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SINHF4_H_ -#define _SINHF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "expf4.h" -#include "recipf4.h" - - -/* - * FUNCTION - * vector float _sinhf4(vector float angle) - * - * DESCRIPTION - * The _sinhf4 function computes the hyperbolic sine of a vector of - * angles (expressed in radians) to an accuracy of a single precision - * floating point. - * - */ -static __inline vector float _sinhf4(vector float x) -{ - // 1.0000 (above this number, use sinh(x) = 0.5 * (e^x - e^-x) - vec_uint4 threshold = (vec_uint4)spu_splats(0x3F800000); - - vec_uint4 sign_mask = (vec_uint4)spu_splats(0x80000000); - - // Coefficents for the Taylor series - vec_float4 f03 = spu_splats(1.6666666666666667E-1f); // 1/3! - vec_float4 f05 = spu_splats(8.3333333333333333E-3f); // 1/5! - vec_float4 f07 = spu_splats(1.9841269841269841E-4f); // 1/7! - vec_float4 f09 = spu_splats(2.7557319223985891E-6f); // 1/9! - vec_float4 f11 = spu_splats(2.5052108385441719E-8f); // 1/11! - - - // Perform the calculation as a Taylor series - vec_float4 result; - vec_float4 x2 = spu_mul(x,x); - result = spu_madd(x2,f11,f09); - result = spu_madd(x2,result,f07); - result = spu_madd(x2,result,f05); - result = spu_madd(x2,result,f03); - result = spu_madd(x2,result,spu_splats(1.0f)); - result = spu_mul(x,result); - - - // Perform calculation as a function of 0.5 * (e^x - e^-x) - vec_float4 ex =_expf4(x); - vec_float4 ex_inv = _recipf4(ex); - - vec_float4 r2= spu_sub(ex,ex_inv); - r2 = spu_mul(r2,spu_splats(0.5f)); - - vec_uint4 xabs = spu_andc((vec_uint4)x,sign_mask); - vec_uint4 use_exp = spu_cmpgt(xabs,threshold); - - // Select either the Taylor or exp version - result = spu_sel(result,r2,use_exp); - - // Flip the sign if needed - result = (vec_float4)spu_or((vec_uint4)result,spu_and((vec_uint4)x,sign_mask)); - - return result; - -} -#endif /* _SINHF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/sqrt.h b/newlib/libm/machine/spu/headers/sqrt.h deleted file mode 100644 index 63b034dd9..000000000 --- a/newlib/libm/machine/spu/headers/sqrt.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _SQRT_H_ -#define _SQRT_H_ 1 - -/* - * FUNCTION - * double _sqrt(double in) - * - * DESCRIPTION - * _sqrt computes the square root of the input "in" and returns the - * result. - */ -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" -#include "headers/dom_chkd_less_than.h" - -static __inline double _sqrt(double in) -{ - vec_int4 bias_exp; - vec_uint4 exp; - vec_float4 fx, fg, fy, fd, fe, fy2, fhalf; - vec_ullong2 nochange; - vec_ullong2 mask = VEC_SPLAT_U64(0x7FE0000000000000ULL); - vec_double2 x, dx, de, dd, dy, dg, dy2, dhalf; - vec_double2 denorm, neg; - vec_double2 vc = { 0.0, 0.0 }; - - fhalf = VEC_SPLAT_F32(0.5f); - dhalf = VEC_SPLAT_F64(0.5); - - /* Coerce the input, in, into the argument reduced space [0.5, 2.0). - */ - x = spu_promote(in, 0); - dx = spu_sel(x, dhalf, mask); - - /* Compute an initial single precision guess for the square root (fg) - * and half reciprocal (fy2). - */ - fx = spu_roundtf(dx); - - fy2 = spu_rsqrte(fx); - fy = spu_mul(fy2, fhalf); - fg = spu_mul(fy2, fx); /* 12-bit approximation to sqrt(cx) */ - - /* Perform one single precision Newton-Raphson iteration to improve - * accuracy to about 22 bits. - */ - fe = spu_nmsub(fy, fg, fhalf); - fd = spu_nmsub(fg, fg, fx); - - fy = spu_madd(fy2, fe, fy); - fg = spu_madd(fy, fd, fg); /* 22-bit approximation */ - - dy = spu_extend(fy); - dg = spu_extend(fg); - - /* Perform two double precision Newton-Raphson iteration to improve - * accuracy to about 44 and 88 bits repectively. - */ - dy2 = spu_add(dy, dy); - de = spu_nmsub(dy, dg, dhalf); - dd = spu_nmsub(dg, dg, dx); - dy = spu_madd(dy2, de, dy); - dg = spu_madd(dy, dd, dg); /* 44 bit approximation */ - - dd = spu_nmsub(dg, dg, dx); - dg = spu_madd(dy, dd, dg); /* full double precision approximation */ - - - /* Compute the expected exponent assuming that it is not a special value. - * See special value handling below. - */ - bias_exp = spu_rlmaska(spu_sub((vec_int4)spu_and((vec_ullong2)x, mask), - (vec_int4)VEC_SPLAT_U64(0x3FE0000000000000ULL)), -1); - dg = (vec_double2)spu_add((vec_int4)dg, bias_exp); - - - /* Handle special inputs. These include: - * - * input output - * ========= ========= - * -0 -0 - * +infinity +infinity - * NaN NaN - * <0 NaN - * denorm zero - */ - exp = (vec_uint4)spu_and((vec_ullong2)x, VEC_SPLAT_U64(0xFFF0000000000000ULL)); - exp = spu_shuffle(exp, exp, VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3, 8,9,10,11,8,9,10,11)); - - neg = (vec_double2)spu_rlmaska((vec_int4)exp, -31); - denorm = (vec_double2)spu_rlmask(spu_cmpeq(spu_sl(exp, 1), 0), VEC_LITERAL(vec_int4, -1,0,-1,0)); - - nochange = (vec_ullong2)spu_cmpeq(exp, 0x7FF00000); - - dg = spu_sel(spu_andc(spu_or(dg, neg), denorm), x, nochange); - -#ifndef _IEEE_LIBM - dom_chkd_less_than(spu_splats(in), vc); -#endif - return (spu_extract(dg, 0)); -} -#endif /* _SQRT_H_ */ diff --git a/newlib/libm/machine/spu/headers/sqrtd2.h b/newlib/libm/machine/spu/headers/sqrtd2.h deleted file mode 100644 index b5c527b13..000000000 --- a/newlib/libm/machine/spu/headers/sqrtd2.h +++ /dev/null @@ -1,150 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SQRTD2_H_ -#define _SQRTD2_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector double _sqrtd2(vector double in) - * - * DESCRIPTION - * The _sqrtd2 function computes the square root of the vector input "in" - * and returns the result. - * - */ -static __inline vector double _sqrtd2(vector double in) -{ - vec_int4 bias_exp; - vec_uint4 exp; - vec_float4 fx, fg, fy, fd, fe, fy2, fhalf; - vec_ullong2 nochange, denorm; - vec_ullong2 mask = spu_splats(0x7FE0000000000000ULL); - vec_double2 dx, de, dd, dy, dg, dy2, dhalf; - vec_double2 neg; - vec_double2 one = spu_splats(1.0); - vec_double2 two_pow_52 = (vec_double2)spu_splats(0x4330000000000000ULL); - - /* If the input is a denorm, then multiply it by 2^52 so that the input is no - * longer denormal. - */ - exp = (vec_uint4)spu_and((vec_ullong2)in, spu_splats(0xFFF0000000000000ULL)); - denorm = (vec_ullong2)spu_cmpeq(exp,0); - - in = spu_mul(in, spu_sel(one, two_pow_52, denorm)); - - fhalf = spu_splats(0.5f); - dhalf = spu_splats(0.5); - - /* Coerce the input, in, into the argument reduced space [0.5, 2.0). - */ - dx = spu_sel(in, dhalf, mask); - - /* Compute an initial single precision guess for the square root (fg) - * and half reciprocal (fy2). - */ - fx = spu_roundtf(dx); - - fy2 = spu_rsqrte(fx); - fy = spu_mul(fy2, fhalf); - fg = spu_mul(fy2, fx); /* 12-bit approximation to sqrt(cx) */ - - /* Perform one single precision Newton-Raphson iteration to improve - * accuracy to about 22 bits. - */ - fe = spu_nmsub(fy, fg, fhalf); - fd = spu_nmsub(fg, fg, fx); - - fy = spu_madd(fy2, fe, fy); - fg = spu_madd(fy, fd, fg); /* 22-bit approximation */ - - dy = spu_extend(fy); - dg = spu_extend(fg); - - /* Perform two double precision Newton-Raphson iteration to improve - * accuracy to about 44 and 88 bits repectively. - */ - dy2 = spu_add(dy, dy); - de = spu_nmsub(dy, dg, dhalf); - dd = spu_nmsub(dg, dg, dx); - dy = spu_madd(dy2, de, dy); - dg = spu_madd(dy, dd, dg); /* 44 bit approximation */ - - dd = spu_nmsub(dg, dg, dx); - dg = spu_madd(dy, dd, dg); /* full double precision approximation */ - - - /* Compute the expected exponent assuming that it is not a special value. - * See special value handling below. - */ - bias_exp = spu_rlmaska(spu_sub((vec_int4)spu_and((vec_ullong2)in, mask), - (vec_int4)spu_splats(0x3FE0000000000000ULL)), - -1); - - /* Adjust the exponent bias if the input was denormalized */ - bias_exp = spu_sub(bias_exp, (vec_int4)spu_and(spu_splats(0x01A0000000000000ULL), denorm)); - - dg = (vec_double2)spu_add((vec_int4)dg, bias_exp); - - /* Handle special inputs. These include: - * - * input output - * ========= ========= - * -0 -0 - * 0 0 - * +infinity +infinity - * NaN NaN - * <0 NaN - */ - exp = spu_shuffle(exp, exp, ((vec_uchar16) { 0,1,2,3,0,1,2,3, 8,9,10,11,8,9,10,11 })); - - neg = (vec_double2)spu_rlmaska((vec_int4)exp, -31); - nochange = spu_or((vec_ullong2)spu_cmpeq(exp, 0x7FF00000), - spu_cmpeq(in, spu_splats(0.0))); - - dg = spu_sel(spu_or(dg, neg), in, nochange); - - return (dg); -} -#endif /* _SQRTD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/sqrtf.h b/newlib/libm/machine/spu/headers/sqrtf.h deleted file mode 100644 index c1f5ab223..000000000 --- a/newlib/libm/machine/spu/headers/sqrtf.h +++ /dev/null @@ -1,16 +0,0 @@ -#include "headers/sqrtf4.h" -#include "headers/dom_chkf_less_than.h" - -static __inline float _sqrtf(float in) -{ - float res; - vector float vx; - vector float vc = { 0.0, 0.0, 0.0, 0.0 }; - - vx = spu_promote(in, 0); - res = spu_extract(_sqrtf4(vx), 0); -#ifndef _IEEE_LIBM - dom_chkf_less_than(vx, vc); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/sqrtf4.h b/newlib/libm/machine/spu/headers/sqrtf4.h deleted file mode 100644 index 4565ab406..000000000 --- a/newlib/libm/machine/spu/headers/sqrtf4.h +++ /dev/null @@ -1,116 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _SQRTF4_H_ -#define _SQRTF4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector float _sqrtf4(vector float in) - * - * DESCRIPTION - * The _sqrtf4 function computes the square root of the vector input "in" - *and returns the result. - * - */ -static __inline vector float _sqrtf4(vector float in) -{ - vec_uint4 exp, valid; - vec_uint4 mask = spu_splats((unsigned int)0xFF000000); - vec_uint4 half = spu_splats((unsigned int)0x00800000); - vec_float4 one = spu_splats(1.0f); - vec_float4 three = spu_splats(3.0f); - vec_float4 x, y0, y1, y1_n1, y1_p1, y1_p2, y1_p3; - vec_float4 mant, err, err_p1, err_p2, err_p3; - vec_float4 out; - - /* Compute the mantissa of the result seperately from - * the exponent to assure complete accuracy over the allowable - * input range. The mantissa is computed for inputs in the - * range [0.5, 2.0). - */ - x = spu_sel(in, one, mask); - y0 = spu_rsqrte(x); - - /* Perform one iteration of the Newton-Raphsom method in single precision - * arithmetic. - */ - y1 = spu_mul(spu_nmsub(x, spu_mul(y0, y0), three), - spu_mul(y0, (vec_float4)(spu_sub((vec_uint4)(x), half)))); - - /* Correct the result for possible error. The range of error is -3 to +1. - * Identify the extent of the error and correct for it. - */ - y1_p3 = (vec_float4)spu_add((vec_uint4)(y1), 3); - y1_p2 = (vec_float4)spu_add((vec_uint4)(y1), 2); - y1_p1 = (vec_float4)spu_add((vec_uint4)(y1), 1); - y1_n1 = (vec_float4)spu_add((vec_uint4)(y1), -1); - - err = spu_nmsub(y1, y1, x); - err_p1 = spu_nmsub(y1_p1, y1_p1, x); - err_p2 = spu_nmsub(y1_p2, y1_p2, x); - err_p3 = spu_nmsub(y1_p3, y1_p3, x); - - mant = spu_sel(y1_n1, y1, spu_cmpgt((vec_int4)(err), -1)); - mant = spu_sel(mant, y1_p1, spu_cmpgt((vec_int4)(err_p1), -1)); - mant = spu_sel(mant, y1_p2, spu_cmpgt((vec_int4)(err_p2), -1)); - mant = spu_sel(mant, y1_p3, spu_cmpgt((vec_int4)(err_p3), -1)); - - /* Compute the expected exponent. If the exponent is zero or the input is - * negative, then set the result to zero. - */ - exp = spu_rlmask(spu_add((vec_uint4)(in), (vec_uint4)(one)), -1); - - valid = spu_cmpgt(spu_and((vec_int4)(in), (vec_int4)(mask)), 0); - - /* Merge the computed exponent and mantissa. - */ - out = spu_and(spu_sel(mant, (vec_float4)(exp), spu_splats(0xFF800000)), (vec_float4)(valid)); - - - return (out); - -} - -#endif /* _SQRTF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/tan.h b/newlib/libm/machine/spu/headers/tan.h deleted file mode 100644 index 04072fb86..000000000 --- a/newlib/libm/machine/spu/headers/tan.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/tand2.h" - -static __inline double _tan(double angle) -{ - return spu_extract(_tand2(spu_promote(angle, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/tand2.h b/newlib/libm/machine/spu/headers/tand2.h deleted file mode 100644 index 91c76ce4f..000000000 --- a/newlib/libm/machine/spu/headers/tand2.h +++ /dev/null @@ -1,105 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _TAND2_H_ -#define _TAND2_H_ 1 - -#include <spu_intrinsics.h> - -#include "cos_sin.h" -#include "divd2.h" - -/* - * FUNCTION - * vector double _tand2(vector double angle) - * - * DESCRIPTION - * The _tand2 function computes the tangent of a vector of "angle"s - * (expressed in radians) to an accuracy of double precision floating - * point. - * - */ -static __inline vector double _tand2(vector double angle) -{ - vec_int4 octant; - vec_ullong2 select; - vec_double2 cos, sin; - vec_double2 num, den; - vec_double2 toggle_sign, answer; - - /* Range reduce the input angle x into the range -PI/4 to PI/4 - * by performing simple modulus. - */ - MOD_PI_OVER_FOUR(angle, octant); - - /* Compute the cosine and sine of the range reduced input. - */ - COMPUTE_COS_SIN(angle, cos, sin); - - /* For each SIMD element, select the numerator, denominator, and sign - * correction depending upon the octant of the original angle. - * - * octants angles numerator denominator sign toggle - * ------- ------------ --------- ----------- ----------- - * 0 0 to 45 sin cos no - * 1,2 45 to 135 cos sin no,yes - * 3,4 135 to 225 sin cos yes,no - * 5,6 225 to 315 cos sin no,yes - * 7 315 to 360 sin cos yes - */ - octant = spu_shuffle(octant, octant, ((vec_uchar16) { - 0,1, 2, 3, 0,1, 2, 3, - 8,9,10,11, 8,9,10,11 })); - - toggle_sign = spu_and((vec_double2)spu_sl(octant, 30), - (vec_double2) spu_splats(0x8000000000000000ULL)); - - select = (vec_ullong2)spu_cmpeq(spu_and(octant, 2), 0); - num = spu_sel(cos, sin, select); - den = spu_sel(sin, cos, select); - - answer = spu_xor(_divd2(num, den), toggle_sign); - - return (answer); -} - -#endif /* _TAND2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/tanf.h b/newlib/libm/machine/spu/headers/tanf.h deleted file mode 100644 index 6e10186c3..000000000 --- a/newlib/libm/machine/spu/headers/tanf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/tanf4.h" - -static __inline float _tanf(float angle) -{ - return spu_extract(_tanf4(spu_promote(angle, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/tanf4.h b/newlib/libm/machine/spu/headers/tanf4.h deleted file mode 100644 index 879891e4e..000000000 --- a/newlib/libm/machine/spu/headers/tanf4.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _TANF4_H_ -#define _TANF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "cos_sin.h" -#include "divf4.h" - -/* - * FUNCTION - * vector float _tanf4(vector float angle) - * - * DESCRIPTION - * The _tanf4 function computes the tangent of a vector of "angle"s - * (expressed in radians) to an accuracy of single precision floating - * point. - * - */ -static __inline vector float _tanf4(vector float angle) -{ - vec_int4 octant; - vec_uint4 select; - vec_float4 cos, sin; - vec_float4 num, den; - vec_float4 toggle_sign, answer; - - /* Range reduce the input angle x into the range -PI/4 to PI/4 - * by performing simple modulus. - */ - MOD_PI_OVER_FOUR_F(angle, octant); - - /* Compute the cosine and sine of the range reduced input. - */ - COMPUTE_COS_SIN_F(angle, cos, sin); - - /* For each SIMD element, select the numerator, denominator, and sign - * correction depending upon the octant of the original angle. - * - * octants angles numerator denominator sign toggle - * ------- ------------ --------- ----------- ----------- - * 0 0 to 45 sin cos no - * 1,2 45 to 135 cos sin no,yes - * 3,4 135 to 225 sin cos yes,no - * 5,6 225 to 315 cos sin no,yes - * 7 315 to 360 sin cos yes - */ - toggle_sign = (vec_float4)spu_sl(spu_and(octant, 2), 30); - - select = spu_cmpeq(spu_and(octant, 2), 0); - num = spu_sel(cos, sin, select); - den = spu_sel(sin, cos, select); - - answer = spu_xor(_divf4(num, den), toggle_sign); - - return (answer); -} - -#endif /* _TANF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/tanh.h b/newlib/libm/machine/spu/headers/tanh.h deleted file mode 100644 index 03d29dc8d..000000000 --- a/newlib/libm/machine/spu/headers/tanh.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/tanhd2.h" - -static __inline double _tanh(double x) -{ - return spu_extract(_tanhd2(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/tanhd2.h b/newlib/libm/machine/spu/headers/tanhd2.h deleted file mode 100644 index 654cd99e9..000000000 --- a/newlib/libm/machine/spu/headers/tanhd2.h +++ /dev/null @@ -1,161 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _TANHD2_H_ -#define _TANHD2_H_ 1 - -#include <spu_intrinsics.h> - -#include "expd2.h" -#include "divd2.h" - - -/* - * Taylor coefficients for tanh - */ -#define TANH_TAY01 1.000000000000000000000000000000E0 -#define TANH_TAY02 -3.333333333333333333333333333333E-1 -#define TANH_TAY03 1.333333333333333333333333333333E-1 -#define TANH_TAY04 -5.396825396825396825396825396825E-2 -#define TANH_TAY05 2.186948853615520282186948853616E-2 -#define TANH_TAY06 -8.863235529902196568863235529902E-3 -#define TANH_TAY07 3.592128036572481016925461369906E-3 -#define TANH_TAY08 -1.455834387051318268249485180702E-3 -#define TANH_TAY09 5.900274409455859813780759937000E-4 -#define TANH_TAY10 -2.391291142435524814857314588851E-4 -#define TANH_TAY11 9.691537956929450325595875000389E-5 -#define TANH_TAY12 -3.927832388331683405337080809312E-5 -#define TANH_TAY13 1.591890506932896474074427981657E-5 -#define TANH_TAY14 -6.451689215655430763190842315303E-6 -#define TANH_TAY15 2.614771151290754554263594256410E-6 -#define TANH_TAY16 -1.059726832010465435091355394125E-6 -#define TANH_TAY17 4.294911078273805854820351280397E-7 - - -/* - * FUNCTION - * vector double _tanhd2(vector double x) - * - * DESCRIPTION - * The _tanhd2 function computes the hyperbolic tangent for each - * element of the input vector. - * - * We use the following to approximate tanh: - * - * |x| <= .25: Taylor Series - * |x| > .25: tanh(x) = (exp(2x) - 1)/(exp(2x) + 1) - * - * - * SPECIAL CASES: - * - tanh(+/- 0) = +/-0 - * - tanh(+/- infinity) = +/- 1 - * - tanh(NaN) = NaN - * - */ - -static __inline vector double _tanhd2(vector double x) -{ - vector double signbit = spu_splats(-0.0); - vector double oned = spu_splats(1.0); - vector double twod = spu_splats(2.0); - vector double infd = (vector double)spu_splats(0x7FF0000000000000ull); - vector double xabs; - vector double x2; - vector unsigned long long gttaylor; - vector double e; - vector double tresult; - vector double eresult; - vector double result; - - xabs = spu_andc(x, signbit); - - /* - * This is where we switch from Taylor Series - * to exponential formula. - */ - gttaylor = spu_cmpgt(xabs, spu_splats(0.25)); - - - /* - * Taylor Series Approximation - */ - x2 = spu_mul(x,x); - tresult = spu_madd(x2, spu_splats(TANH_TAY11), spu_splats(TANH_TAY10)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY09)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY08)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY07)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY06)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY05)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY04)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY03)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY02)); - tresult = spu_madd(x2, tresult, spu_splats(TANH_TAY01)); - tresult = spu_mul(xabs, tresult); - - - /* - * Exponential Formula - * Our expd2 function gives a more accurate result in general - * with xabs instead of x for x<0. We correct for sign later. - */ - e = _expd2(spu_mul(xabs, twod)); - eresult = _divd2(spu_sub(e, oned), spu_add(e, oned)); - - - /* - * Select Taylor or exp result. - */ - result = spu_sel(tresult, eresult, gttaylor); - - /* - * Inf and NaN special cases. NaN is already in result - * for x = NaN. - */ - result = spu_sel(result, oned, spu_cmpeq(xabs, infd)); - - /* - * Antisymmetric function - preserve sign bit of x - * in the result. - */ - result = spu_sel(result, x, (vec_ullong2)signbit); - - return result; -} - -#endif /* _TANHD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/tanhf.h b/newlib/libm/machine/spu/headers/tanhf.h deleted file mode 100644 index 545b073fe..000000000 --- a/newlib/libm/machine/spu/headers/tanhf.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "headers/tanhf4.h" - -static __inline float _tanhf(float x) -{ - return spu_extract(_tanhf4(spu_promote(x, 0)), 0); -} diff --git a/newlib/libm/machine/spu/headers/tanhf4.h b/newlib/libm/machine/spu/headers/tanhf4.h deleted file mode 100644 index 6d45572b0..000000000 --- a/newlib/libm/machine/spu/headers/tanhf4.h +++ /dev/null @@ -1,135 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _TANHF4_H_ -#define _TANHF4_H_ 1 - -#include <spu_intrinsics.h> - -#include "expf4.h" -#include "divf4.h" - -#include "tanhd2.h" - -/* - * FUNCTION - * vector float _tanhf4(vector float x) - * - * DESCRIPTION - * The _tanhf4 function computes the hyperbolic tangent for each - * element of the input vector. - * - * We use the following to approximate tanh: - * - * |x| <= .25: Taylor Series - * |x| > .25: tanh(x) = (exp(2x) - 1)/(exp(2x) + 1) - * - * - * SPECIAL CASES: - * - tanh(+/- 0) = +/-0 - * - tanh(+/- infinity) = +/- 1 - * - */ - -static __inline vector float _tanhf4(vector float x) -{ - vector float signbit = spu_splats(-0.0f); - vector float onef = spu_splats(1.0f); - vector float twof = spu_splats(2.0f); - vector float xabs; - vector float x2; - vector unsigned int gttaylor; - vector float e; - vector float tresult; - vector float eresult; - vector float result; - - xabs = spu_andc(x, signbit); - - /* - * This is where we switch from Taylor Series - * to exponential formula. - */ - gttaylor = spu_cmpgt(xabs, spu_splats(0.25f)); - - - /* - * Taylor Series Approximation - */ - x2 = spu_mul(x,x); - tresult = spu_madd(x2, spu_splats((float)TANH_TAY06), spu_splats((float)TANH_TAY05)); - tresult = spu_madd(x2, tresult, spu_splats((float)TANH_TAY04)); - tresult = spu_madd(x2, tresult, spu_splats((float)TANH_TAY03)); - tresult = spu_madd(x2, tresult, spu_splats((float)TANH_TAY02)); - tresult = spu_madd(x2, tresult, spu_splats((float)TANH_TAY01)); - tresult = spu_mul(xabs, tresult); - - - /* - * Exponential Formula - * Our expf4 function gives a more accurate result in general - * with xabs instead of x for x<0. We correct for sign later. - */ - e = _expf4(spu_mul(xabs, twof)); - eresult = _divf4(spu_sub(e, onef), spu_add(e, onef)); - - - /* - * Select Taylor or exp result. - */ - result = spu_sel(tresult, eresult, gttaylor); - - /* - * Correct for accumulated truncation error when - * tanh(x) should return 1. - * Note that this also handles the special case of - * x = +/- infinity. - */ - result = spu_sel(result, onef, spu_cmpgt(xabs, spu_splats(9.125f))); - - /* - * Antisymmetric function - preserve sign bit of x - * in the result. - */ - result = spu_sel(result, x, (vec_uint4)signbit); - - return result; -} - -#endif /* _TANHF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/tgamma.h b/newlib/libm/machine/spu/headers/tgamma.h deleted file mode 100644 index bd2f31f27..000000000 --- a/newlib/libm/machine/spu/headers/tgamma.h +++ /dev/null @@ -1,30 +0,0 @@ -#include <errno.h> -#include "headers/truncd2.h" -#include "headers/tgammad2.h" - -static __inline double _tgamma(double x) -{ - double res; - vector double vx; - vector double truncx; - vector double vc = { 0.0, 0.0 }; - vector unsigned long long cmpres; - vector signed int verrno, ferrno; - vector signed int fail = { EDOM, EDOM, EDOM, EDOM }; - - vx = spu_promote(x, 0); - res = spu_extract(_tgammad2(vx), 0); - -#ifndef _IEEE_LIBM - /* - * use vector truncd2 rather than splat x, and splat truncx. - */ - truncx = _truncd2(vx); - cmpres = spu_cmpeq(truncx, vx); - verrno = spu_splats(errno); - ferrno = spu_sel(verrno, fail, (vector unsigned int) cmpres); - cmpres = spu_cmpgt(vc, vx); - errno = spu_extract(spu_sel(verrno, ferrno, (vector unsigned int) cmpres), 0); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/tgammad2.h b/newlib/libm/machine/spu/headers/tgammad2.h deleted file mode 100644 index fa0f2f325..000000000 --- a/newlib/libm/machine/spu/headers/tgammad2.h +++ /dev/null @@ -1,289 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ - -#ifndef _TGAMMAD2_H_ -#define _TGAMMAD2_H_ 1 - -#include <spu_intrinsics.h> -#include "simdmath.h" - -#include "recipd2.h" -#include "truncd2.h" -#include "expd2.h" -#include "logd2.h" -#include "divd2.h" -#include "sind2.h" -#include "powd2.h" - - -/* - * FUNCTION - * vector double _tgammad2(vector double x) - * - * DESCRIPTION - * _tgammad2 - * - * This is an interesting function to approximate fast - * and accurately. We take a fairly standard approach - break - * the domain into 5 separate regions: - * - * 1. [-infinity, 0) - use - * 2. [0, 1) - push x into [1,2), then adjust the - * result. - * 3. [1, 2) - use a rational approximation. - * 4. [2, 10) - pull back into [1, 2), then adjust - * the result. - * 5. [10, +infinity] - use Stirling's Approximation. - * - * - * Special Cases: - * - tgamma(+/- 0) returns +/- infinity - * - tgamma(negative integer) returns NaN - * - tgamma(-infinity) returns NaN - * - tgamma(infinity) returns infinity - * - */ - - -/* - * Coefficients for Stirling's Series for Gamma() - */ -/* 1/ 1 */ -#define STIRLING_00 1.000000000000000000000000000000000000E0 -/* 1/ 12 */ -#define STIRLING_01 8.333333333333333333333333333333333333E-2 -/* 1/ 288 */ -#define STIRLING_02 3.472222222222222222222222222222222222E-3 -/* -139/ 51840 */ -#define STIRLING_03 -2.681327160493827160493827160493827160E-3 -/* -571/ 2488320 */ -#define STIRLING_04 -2.294720936213991769547325102880658436E-4 -/* 163879/ 209018880 */ -#define STIRLING_05 7.840392217200666274740348814422888497E-4 -/* 5246819/ 75246796800 */ -#define STIRLING_06 6.972813758365857774293988285757833083E-5 -/* -534703531/ 902961561600 */ -#define STIRLING_07 -5.921664373536938828648362256044011874E-4 -/* -4483131259/ 86684309913600 */ -#define STIRLING_08 -5.171790908260592193370578430020588228E-5 -/* 432261921612371/ 514904800886784000 */ -#define STIRLING_09 8.394987206720872799933575167649834452E-4 -/* 6232523202521089/ 86504006548979712000 */ -#define STIRLING_10 7.204895416020010559085719302250150521E-5 -/* -25834629665134204969/ 13494625021640835072000 */ -#define STIRLING_11 -1.914438498565477526500898858328522545E-3 -/* -1579029138854919086429/ 9716130015581401251840000 */ -#define STIRLING_12 -1.625162627839158168986351239802709981E-4 -/* 746590869962651602203151/ 116593560186976815022080000 */ -#define STIRLING_13 6.403362833808069794823638090265795830E-3 -/* 1511513601028097903631961/ 2798245444487443560529920000 */ -#define STIRLING_14 5.401647678926045151804675085702417355E-4 -/* -8849272268392873147705987190261/ 299692087104605205332754432000000 */ -#define STIRLING_15 -2.952788094569912050544065105469382445E-2 -/* -142801712490607530608130701097701/ 57540880724084199423888850944000000 */ -#define STIRLING_16 -2.481743600264997730915658368743464324E-3 - - -/* - * Rational Approximation Coefficients for the - * domain [1, 2). - */ -#define TGD2_P00 -1.8211798563156931777484715e+05 -#define TGD2_P01 -8.7136501560410004458390176e+04 -#define TGD2_P02 -3.9304030489789496641606092e+04 -#define TGD2_P03 -1.2078833505605729442322627e+04 -#define TGD2_P04 -2.2149136023607729839568492e+03 -#define TGD2_P05 -7.2672456596961114883015398e+02 -#define TGD2_P06 -2.2126466212611862971471055e+01 -#define TGD2_P07 -2.0162424149396112937893122e+01 - -#define TGD2_Q00 1.0000000000000000000000000 -#define TGD2_Q01 -1.8212849094205905566923320e+05 -#define TGD2_Q02 -1.9220660507239613798446953e+05 -#define TGD2_Q03 2.9692670736656051303725690e+04 -#define TGD2_Q04 3.0352658363629092491464689e+04 -#define TGD2_Q05 -1.0555895821041505769244395e+04 -#define TGD2_Q06 1.2786642579487202056043316e+03 -#define TGD2_Q07 -5.5279768804094054246434098e+01 - -static __inline vector double _tgammad2(vector double x) -{ - vector double signbit = spu_splats(-0.0); - vector double zerod = spu_splats(0.0); - vector double halfd = spu_splats(0.5); - vector double oned = spu_splats(1.0); - vector double ninep9d = (vec_double2)spu_splats(0x4023FFFFFFFFFFFFull); - vector double twohd = spu_splats(200.0); - vector double pi = spu_splats(SM_PI); - vector double sqrt2pi = spu_splats(2.50662827463100050241576528481); - vector double inf = (vector double)spu_splats(0x7FF0000000000000ull); - vector double nan = (vector double)spu_splats(0x7FF8000000000000ull); - - - vector double xabs; - vector double xscaled; - vector double xtrunc; - vector double xinv; - vector double nresult; - vector double rresult; /* Rational Approx result */ - vector double sresult; /* Stirling's result */ - vector double result; - vector double pr,qr; - - vector unsigned long long gt0 = spu_cmpgt(x, zerod); - vector unsigned long long gt1 = spu_cmpgt(x, oned); - vector unsigned long long gt9p9 = spu_cmpgt(x, ninep9d); - vector unsigned long long gt200 = spu_cmpgt(x, twohd); - - - xabs = spu_andc(x, signbit); - - /* - * For x in [0, 1], add 1 to x, use rational - * approximation, then use: - * - * gamma(x) = gamma(x+1)/x - * - */ - xabs = spu_sel(spu_add(xabs, oned), xabs, gt1); - xtrunc = _truncd2(xabs); - - - /* - * For x in [2, 10): - */ - xscaled = spu_add(oned, spu_sub(xabs, xtrunc)); - - /* - * For x in [1,2), use a rational approximation. - */ - pr = spu_madd(xscaled, spu_splats(TGD2_P07), spu_splats(TGD2_P06)); - pr = spu_madd(pr, xscaled, spu_splats(TGD2_P05)); - pr = spu_madd(pr, xscaled, spu_splats(TGD2_P04)); - pr = spu_madd(pr, xscaled, spu_splats(TGD2_P03)); - pr = spu_madd(pr, xscaled, spu_splats(TGD2_P02)); - pr = spu_madd(pr, xscaled, spu_splats(TGD2_P01)); - pr = spu_madd(pr, xscaled, spu_splats(TGD2_P00)); - - qr = spu_madd(xscaled, spu_splats(TGD2_Q07), spu_splats(TGD2_Q06)); - qr = spu_madd(qr, xscaled, spu_splats(TGD2_Q05)); - qr = spu_madd(qr, xscaled, spu_splats(TGD2_Q04)); - qr = spu_madd(qr, xscaled, spu_splats(TGD2_Q03)); - qr = spu_madd(qr, xscaled, spu_splats(TGD2_Q02)); - qr = spu_madd(qr, xscaled, spu_splats(TGD2_Q01)); - qr = spu_madd(qr, xscaled, spu_splats(TGD2_Q00)); - - rresult = _divd2(pr, qr); - rresult = spu_sel(_divd2(rresult, x), rresult, gt1); - - /* - * If x was in [2,10) and we pulled it into [1,2), we need to push - * it back out again. - */ - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [2,3) */ - xscaled = spu_add(xscaled, oned); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [3,4) */ - xscaled = spu_add(xscaled, oned); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [4,5) */ - xscaled = spu_add(xscaled, oned); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [5,6) */ - xscaled = spu_add(xscaled, oned); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [6,7) */ - xscaled = spu_add(xscaled, oned); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [7,8) */ - xscaled = spu_add(xscaled, oned); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [8,9) */ - xscaled = spu_add(xscaled, oned); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [9,10) */ - - - /* - * For x >= 10, we use Stirling's Approximation - */ - vector double sum; - xinv = _recipd2(xabs); - sum = spu_madd(xinv, spu_splats(STIRLING_16), spu_splats(STIRLING_15)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_14)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_13)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_12)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_11)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_10)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_09)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_08)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_07)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_06)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_05)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_04)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_03)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_02)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_01)); - sum = spu_madd(sum, xinv, spu_splats(STIRLING_00)); - - sum = spu_mul(sum, sqrt2pi); - sum = spu_mul(sum, _powd2(x, spu_sub(x, halfd))); - sresult = spu_mul(sum, _expd2(spu_or(x, signbit))); - - /* - * Choose rational approximation or Stirling's result. - */ - result = spu_sel(rresult, sresult, gt9p9); - - - result = spu_sel(result, inf, gt200); - - /* For x < 0, use: - * - * gamma(x) = pi/(x*gamma(-x)*sin(x*pi)) - * or - * gamma(x) = pi/(gamma(1 - x)*sin(x*pi)) - */ - nresult = _divd2(pi, spu_mul(x, spu_mul(result, _sind2(spu_mul(x, pi))))); - result = spu_sel(nresult, result, gt0); - - /* - * x = non-positive integer, return NaN. - */ - result = spu_sel(result, nan, spu_andc(spu_cmpeq(x, xtrunc), gt0)); - - - return result; -} - -#endif /* _TGAMMAD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/tgammaf.h b/newlib/libm/machine/spu/headers/tgammaf.h deleted file mode 100644 index a30928c60..000000000 --- a/newlib/libm/machine/spu/headers/tgammaf.h +++ /dev/null @@ -1,29 +0,0 @@ -#include <errno.h> -#include "headers/truncf4.h" -#include "headers/tgammaf4.h" - -static __inline float _tgammaf(float x) -{ - float res; - vector float vx; - vector float truncx; - vector float vc = { 0.0, 0.0 }; - vector unsigned int cmpres; - vector signed int verrno, ferrno; - vector signed int fail = { EDOM, EDOM, EDOM, EDOM }; - - vx = spu_promote(x, 0); - res = spu_extract(_tgammaf4(vx), 0); -#ifndef _IEEE_LIBM - /* - * use vector truncf4 rather than splat x, and splat truncx. - */ - truncx = _truncf4(vx); - cmpres = spu_cmpeq(truncx, vx); - verrno = spu_splats(errno); - ferrno = spu_sel(verrno, fail, (vector unsigned int) cmpres); - cmpres = spu_cmpgt(vc, vx); - errno = spu_extract(spu_sel(verrno, ferrno, (vector unsigned int) cmpres), 0); -#endif - return res; -} diff --git a/newlib/libm/machine/spu/headers/tgammaf4.h b/newlib/libm/machine/spu/headers/tgammaf4.h deleted file mode 100644 index 396146a57..000000000 --- a/newlib/libm/machine/spu/headers/tgammaf4.h +++ /dev/null @@ -1,229 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2007,2008, */ -/* International Business Machines Corporation */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _TGAMMAF4_H_ -#define _TGAMMAF4_H_ 1 - -#include <spu_intrinsics.h> -#include "simdmath.h" - -#include "recipf4.h" -#include "truncf4.h" -#include "expf4.h" -#include "logf4.h" -#include "divf4.h" -#include "sinf4.h" -#include "powf4.h" -#include "tgammad2.h" - -/* - * FUNCTION - * vector float _tgammaf4(vector float x) - * - * DESCRIPTION - * The tgammaf4 function returns a vector containing tgamma for each - * element of x - * - * We take a fairly standard approach - break the domain into 5 separate regions: - * - * 1. [-infinity, 0) - use gamma(x) = pi/(x*gamma(-x)*sin(x*pi)) - * 2. [0, 1) - push x into [1,2), then adjust the - * result. - * 3. [1, 2) - use a rational approximation. - * 4. [2, 10) - pull back into [1, 2), then adjust - * the result. - * 5. [10, +infinity] - use Stirling's Approximation. - * - * - * Special Cases: - * - tgamma(+/- 0) returns +/- infinity - * - tgamma(negative integer) returns NaN - * - tgamma(-infinity) returns NaN - * - tgamma(infinity) returns infinity - * - */ - -/* - * Coefficients for Stirling's Series for Gamma() are defined in - * tgammad2.h - */ - -/* - * Rational Approximation Coefficients for the - * domain [1, 2) are defined in tgammad2.h - */ - - -static __inline vector float _tgammaf4(vector float x) -{ - vector float signbit = spu_splats(-0.0f); - vector float zerof = spu_splats(0.0f); - vector float halff = spu_splats(0.5f); - vector float onef = spu_splats(1.0f); - vector float ninep9f = (vector float)spu_splats(0x411FFFFF); /* Next closest to 10.0 */ - vector float t38f = spu_splats(38.0f); - vector float pi = spu_splats((float)SM_PI); - vector float sqrt2pi = spu_splats(2.506628274631000502415765284811f); - vector float inf = (vec_float4)spu_splats(0x7F800000); - vector float nan = (vec_float4)spu_splats(0x7FFFFFFF); - - vector float xabs; - vector float xscaled; - vector float xtrunc; - vector float xinv; - vector float nresult; /* Negative x result */ - vector float rresult; /* Rational Approx result */ - vector float sresult; /* Stirling's result */ - vector float result; - vector float pr,qr; - - vector unsigned int gt0 = spu_cmpgt(x, zerof); - vector unsigned int gt1 = spu_cmpgt(x, onef); - vector unsigned int gt9p9 = spu_cmpgt(x, ninep9f); - vector unsigned int gt38 = spu_cmpgt(x, t38f); - - xabs = spu_andc(x, signbit); - - /* - * For x in [0, 1], add 1 to x, use rational - * approximation, then use: - * - * gamma(x) = gamma(x+1)/x - * - */ - xabs = spu_sel(spu_add(xabs, onef), xabs, gt1); - xtrunc = _truncf4(xabs); - - - /* - * For x in [2, 10): - */ - xscaled = spu_add(onef, spu_sub(xabs, xtrunc)); - - /* - * For x in [1,2), use a rational approximation. - */ - pr = spu_madd(xscaled, spu_splats((float)TGD2_P07), spu_splats((float)TGD2_P06)); - pr = spu_madd(pr, xscaled, spu_splats((float)TGD2_P05)); - pr = spu_madd(pr, xscaled, spu_splats((float)TGD2_P04)); - pr = spu_madd(pr, xscaled, spu_splats((float)TGD2_P03)); - pr = spu_madd(pr, xscaled, spu_splats((float)TGD2_P02)); - pr = spu_madd(pr, xscaled, spu_splats((float)TGD2_P01)); - pr = spu_madd(pr, xscaled, spu_splats((float)TGD2_P00)); - - qr = spu_madd(xscaled, spu_splats((float)TGD2_Q07), spu_splats((float)TGD2_Q06)); - qr = spu_madd(qr, xscaled, spu_splats((float)TGD2_Q05)); - qr = spu_madd(qr, xscaled, spu_splats((float)TGD2_Q04)); - qr = spu_madd(qr, xscaled, spu_splats((float)TGD2_Q03)); - qr = spu_madd(qr, xscaled, spu_splats((float)TGD2_Q02)); - qr = spu_madd(qr, xscaled, spu_splats((float)TGD2_Q01)); - qr = spu_madd(qr, xscaled, spu_splats((float)TGD2_Q00)); - - rresult = _divf4(pr, qr); - rresult = spu_sel(_divf4(rresult, x), rresult, gt1); - - /* - * If x was in [2,10) and we pulled it into [1,2), we need to push - * it back out again. - */ - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [2,3) */ - xscaled = spu_add(xscaled, onef); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [3,4) */ - xscaled = spu_add(xscaled, onef); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [4,5) */ - xscaled = spu_add(xscaled, onef); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [5,6) */ - xscaled = spu_add(xscaled, onef); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [6,7) */ - xscaled = spu_add(xscaled, onef); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [7,8) */ - xscaled = spu_add(xscaled, onef); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [8,9) */ - xscaled = spu_add(xscaled, onef); - rresult = spu_sel(rresult, spu_mul(rresult, xscaled), spu_cmpgt(x, xscaled)); /* [9,10) */ - - - /* - * For x >= 10, we use Stirling's Approximation - */ - vector float sum; - xinv = _recipf4(xabs); - sum = spu_madd(xinv, spu_splats((float)STIRLING_16), spu_splats((float)STIRLING_15)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_14)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_13)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_12)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_11)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_10)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_09)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_08)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_07)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_06)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_05)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_04)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_03)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_02)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_01)); - sum = spu_madd(sum, xinv, spu_splats((float)STIRLING_00)); - - sum = spu_mul(sum, sqrt2pi); - sum = spu_mul(sum, _powf4(x, spu_sub(x, halff))); - sresult = spu_mul(sum, _expf4(spu_or(x, signbit))); - - /* - * Choose rational approximation or Stirling's result. - */ - result = spu_sel(rresult, sresult, gt9p9); - - result = spu_sel(result, inf, gt38); - - /* For x < 0, use: - * gamma(x) = pi/(x*gamma(-x)*sin(x*pi)) - */ - nresult = _divf4(pi, spu_mul(x, spu_mul(result, _sinf4(spu_mul(x, pi))))); - result = spu_sel(nresult, result, gt0); - - /* - * x = non-positive integer, return NaN. - */ - result = spu_sel(result, nan, spu_andc(spu_cmpeq(x, xtrunc), gt0)); - - return result; -} - -#endif /* _TGAMMAF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/trunc.h b/newlib/libm/machine/spu/headers/trunc.h deleted file mode 100644 index 1c503c515..000000000 --- a/newlib/libm/machine/spu/headers/trunc.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _TRUNC_H_ -#define _TRUNC_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -/* Truncate the input downwards to the nearest integer. - */ -static __inline double _trunc(double x) -{ - vec_uchar16 splat_hi = VEC_LITERAL(vec_uchar16, 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11); - vec_int4 exp, shift; - vec_uint4 sign = VEC_LITERAL(vec_uint4, 0x80000000, 0, 0x80000000, 0); - vec_uint4 or_mask, and_mask, mask; - vec_double2 in, in_hi, out; - - in = spu_promote(x, 0); - - /* Construct a mask to remove the fraction bits. The mask - * depends on the exponent of the floating point - * input value. - */ - in_hi = spu_shuffle(in, in, splat_hi); - exp = spu_and(spu_rlmask((vec_int4)in_hi, -20), 0x7FF); - - shift = spu_sub(VEC_LITERAL(vec_int4, 1023, 1043, 1023, 1043), exp); - or_mask = spu_andc(spu_cmpgt(shift, 0), sign); - - and_mask = spu_rlmask(VEC_LITERAL(vec_uint4, 0xFFFFF, -1, 0xFFFFF, -1), shift); - mask = spu_or(spu_and(and_mask, spu_cmpgt(shift, -31)), or_mask); - - /* Apply the mask and return the result. - */ - out = spu_andc(in, (vec_double2)(mask)); - - return (spu_extract(out, 0)); -} -#endif /* _TRUNC_H_ */ diff --git a/newlib/libm/machine/spu/headers/truncd2.h b/newlib/libm/machine/spu/headers/truncd2.h deleted file mode 100644 index 87d4a38ca..000000000 --- a/newlib/libm/machine/spu/headers/truncd2.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _TRUNCD2_H_ -#define _TRUNCD2_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector double _truncd2(vector double x) - * - * DESCRIPTION - * The _truncd2 function truncates the elements of the input vector - * downwards (towards zero) to the nearest integer. - * - */ -static __inline vector double _truncd2(vector double in) -{ - vec_uchar16 splat_hi = (vec_uchar16) { 0,1,2,3,0,1,2,3, 8,9,10,11, 8,9,10,11 }; - vec_int4 exp, shift; - vec_uint4 sign = (vec_uint4) { 0x80000000, 0, 0x80000000, 0 }; - vec_uint4 or_mask, and_mask, mask; - vec_double2 in_hi, out; - - /* Construct a mask to remove the fraction bits. The mask - * depends on the exponent of the floating point - * input value. - */ - in_hi = spu_shuffle(in, in, splat_hi); - exp = spu_and(spu_rlmask((vec_int4)in_hi, -20), 0x7FF); - - shift = spu_sub(((vec_int4) { 1023, 1043, 1023, 1043 }), exp); - or_mask = spu_andc(spu_cmpgt(shift, 0), sign); - - and_mask = spu_rlmask(((vec_uint4) { 0xFFFFF, -1, 0xFFFFF, -1 }), shift); - mask = spu_or(spu_and(and_mask, spu_cmpgt(shift, -32)), or_mask); - - /* Apply the mask and return the result. - */ - out = spu_andc(in, (vec_double2)(mask)); - - return (out); -} - - -#endif /* _TRUNCD2_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/truncf.h b/newlib/libm/machine/spu/headers/truncf.h deleted file mode 100644 index 2b360452a..000000000 --- a/newlib/libm/machine/spu/headers/truncf.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _TRUNCF_H_ -#define _TRUNCF_H_ 1 - -#include <spu_intrinsics.h> -#include "headers/vec_literal.h" - -static __inline float _truncf(float x) -{ - vec_int4 exp; - vec_uint4 or_mask, and_mask, mask; - vec_float4 in, out; - - in = spu_promote(x, 0); - - /* Construct a mask to remove the fraction bits. The mask - * depends on the exponent of the floating point - * input value. - */ - exp = spu_sub(127, spu_and(spu_rlmask((vec_int4)in, -23), 0xFF)); - - or_mask = spu_cmpgt(exp, 0); - and_mask = spu_rlmask(VEC_SPLAT_U32(0x7FFFFF), exp); - - mask = spu_or(spu_and(and_mask, spu_cmpgt(exp, -31)), or_mask); - - /* Apply the mask and return the result. - */ - out = spu_andc(in, (vec_float4)(mask)); - - return (spu_extract(out, 0)); -} -#endif /* _TRUNCF_H_ */ diff --git a/newlib/libm/machine/spu/headers/truncf4.h b/newlib/libm/machine/spu/headers/truncf4.h deleted file mode 100644 index b762e3a46..000000000 --- a/newlib/libm/machine/spu/headers/truncf4.h +++ /dev/null @@ -1,79 +0,0 @@ -/* -------------------------------------------------------------- */ -/* (C)Copyright 2001,2008, */ -/* International Business Machines Corporation, */ -/* Sony Computer Entertainment, Incorporated, */ -/* Toshiba Corporation, */ -/* */ -/* All Rights Reserved. */ -/* */ -/* Redistribution and use in source and binary forms, with or */ -/* without modification, are permitted provided that the */ -/* following conditions are met: */ -/* */ -/* - Redistributions of source code must retain the above copyright*/ -/* notice, this list of conditions and the following disclaimer. */ -/* */ -/* - Redistributions in binary form must reproduce the above */ -/* copyright notice, this list of conditions and the following */ -/* disclaimer in the documentation and/or other materials */ -/* provided with the distribution. */ -/* */ -/* - Neither the name of IBM Corporation nor the names of its */ -/* contributors may be used to endorse or promote products */ -/* derived from this software without specific prior written */ -/* permission. */ -/* */ -/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */ -/* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */ -/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ -/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ -/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR */ -/* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ -/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT */ -/* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ -/* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ -/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR */ -/* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */ -/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* -------------------------------------------------------------- */ -/* PROLOG END TAG zYx */ -#ifdef __SPU__ -#ifndef _TRUNCF4_H_ -#define _TRUNCF4_H_ 1 - -#include <spu_intrinsics.h> - -/* - * FUNCTION - * vector float _truncf4(vector float x) - * - * DESCRIPTION - * The _truncf4 function truncates the elements of the input vector - * downwards (towards zero) to the nearest integer. - * - */ -static __inline vector float _truncf4(vector float x) -{ - vec_int4 exp; - vec_uint4 or_mask, and_mask, mask; - vec_float4 out; - - // Construct a mask to remove the fraction bits. The mask - // depends on the exponent of the floating point - // input value. - exp = spu_sub(127, spu_and(spu_rlmask((vec_int4) x, -23), 0xFF)); - - // Be sure to always preserve the sign bit - or_mask = spu_rlmask(spu_cmpgt(exp, 0),-1); - - and_mask = spu_rlmask(spu_splats((unsigned int)0x7FFFFF), exp); - mask = spu_or(spu_and(and_mask, spu_cmpgt(exp, -31)), or_mask); - - // Apply the mask and return the result. - - out = spu_andc(x, (vec_float4) (mask)); - return (out); -} -#endif /* _TRUNCF4_H_ */ -#endif /* __SPU__ */ diff --git a/newlib/libm/machine/spu/headers/vec_literal.h b/newlib/libm/machine/spu/headers/vec_literal.h deleted file mode 100644 index 0098fee54..000000000 --- a/newlib/libm/machine/spu/headers/vec_literal.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - (C) Copyright 2001,2006, - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -#ifndef _VEC_LITERAL_H_ -#define _VEC_LITERAL_H_ - -/* This header files provides an abstraction for the various implementations - * of vector literal construction. The two formats are: - * - * 1) Altivec styled using parenthesis - * 2) C grammer friendly styled using curly braces - * - * The macro, VEC_LITERAL has been developed to provide some portability - * in these two styles. To achieve true portability, user must specify all - * elements of the vector being initialized. A single element can be provided - * but only the first element guarenteed across both construction styles. - * - * The VEC_SPLAT_* macros have been provided for portability of vector literal - * construction when all the elements of the vector contain the same value. - */ - -#include <spu_intrinsics.h> - -#ifdef __ALTIVEC_LITERAL_STYLE__ -/* Use altivec style. - */ -#define VEC_LITERAL(_type, ...) ((_type)(__VA_ARGS__)) - -#define VEC_SPLAT_U8(_val) ((vector unsigned char)(_val)) -#define VEC_SPLAT_S8(_val) ((vector signed char)(_val)) - -#define VEC_SPLAT_U16(_val) ((vector unsigned short)(_val)) -#define VEC_SPLAT_S16(_val) ((vector signed short)(_val)) - -#define VEC_SPLAT_U32(_val) ((vector unsigned int)(_val)) -#define VEC_SPLAT_S32(_val) ((vector signed int)(_val)) -#define VEC_SPLAT_F32(_val) ((vector float)(_val)) - -#define VEC_SPLAT_U64(_val) ((vector unsigned long long)(_val)) -#define VEC_SPLAT_S64(_val) ((vector signed long long)(_val)) -#define VEC_SPLAT_F64(_val) ((vector double)(_val)) - -#else -/* Use curly brace style. - */ -#define VEC_LITERAL(_type, ...) ((_type){__VA_ARGS__}) - -#define VEC_SPLAT_U8(_val) ((vector unsigned char){_val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val}) -#define VEC_SPLAT_S8(_val) ((vector signed char){_val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val, _val}) - -#define VEC_SPLAT_U16(_val) ((vector unsigned short){_val, _val, _val, _val, _val, _val, _val, _val}) -#define VEC_SPLAT_S16(_val) ((vector signed short){_val, _val, _val, _val, _val, _val, _val, _val}) - -#define VEC_SPLAT_U32(_val) ((vector unsigned int){_val, _val, _val, _val}) -#define VEC_SPLAT_S32(_val) ((vector signed int){_val, _val, _val, _val}) -#define VEC_SPLAT_F32(_val) ((vector float){_val, _val, _val, _val}) - -#define VEC_SPLAT_U64(_val) ((vector unsigned long long){_val, _val}) -#define VEC_SPLAT_S64(_val) ((vector signed long long){_val, _val}) -#define VEC_SPLAT_F64(_val) ((vector double){_val, _val}) - -#endif - -#endif /* _VEC_LITERAL_H_ */ diff --git a/newlib/libm/machine/spu/llrint.c b/newlib/libm/machine/spu/llrint.c deleted file mode 100644 index e0aa0e8f4..000000000 --- a/newlib/libm/machine/spu/llrint.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/llrint.h" - -long long int llrint(double x) -{ - return _llrint(x); -} diff --git a/newlib/libm/machine/spu/llrintf.c b/newlib/libm/machine/spu/llrintf.c deleted file mode 100644 index a27c773f8..000000000 --- a/newlib/libm/machine/spu/llrintf.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/llrintf.h" - -long long int llrintf(float x) -{ - return _llrintf(x); -} diff --git a/newlib/libm/machine/spu/llround.c b/newlib/libm/machine/spu/llround.c deleted file mode 100644 index a24450e32..000000000 --- a/newlib/libm/machine/spu/llround.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/llround.h" - -long long int llround(double x) -{ - return _llround(x); -} diff --git a/newlib/libm/machine/spu/llroundf.c b/newlib/libm/machine/spu/llroundf.c deleted file mode 100644 index 8adfd43c3..000000000 --- a/newlib/libm/machine/spu/llroundf.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/llroundf.h" - -long long int llroundf(float x) -{ - return _llroundf(x); -} diff --git a/newlib/libm/machine/spu/log2.c b/newlib/libm/machine/spu/log2.c deleted file mode 100644 index 9bbb31de2..000000000 --- a/newlib/libm/machine/spu/log2.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <math.h> -#include "headers/log2.h" - -#undef log2 -double log2(double vx) -{ - return _log2(vx); -} diff --git a/newlib/libm/machine/spu/log2f.c b/newlib/libm/machine/spu/log2f.c deleted file mode 100644 index 42b2c02bb..000000000 --- a/newlib/libm/machine/spu/log2f.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <math.h> -#include "headers/log2f.h" - -#undef log2f -float log2f(float x) -{ - return _log2f(x); -} diff --git a/newlib/libm/machine/spu/s_asinh.c b/newlib/libm/machine/spu/s_asinh.c deleted file mode 100644 index f78d5ff2d..000000000 --- a/newlib/libm/machine/spu/s_asinh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/asinh.h" - -double asinh(double x) -{ - return _asinh(x); -} diff --git a/newlib/libm/machine/spu/s_atan.c b/newlib/libm/machine/spu/s_atan.c deleted file mode 100644 index f9b605f58..000000000 --- a/newlib/libm/machine/spu/s_atan.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/atan.h" - -double atan(double x) -{ - return _atan(x); -} diff --git a/newlib/libm/machine/spu/s_cbrt.c b/newlib/libm/machine/spu/s_cbrt.c deleted file mode 100644 index 56be72f64..000000000 --- a/newlib/libm/machine/spu/s_cbrt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/cbrt.h" - -double cbrt(double x) -{ - return _cbrt(x); -} diff --git a/newlib/libm/machine/spu/s_ceil.c b/newlib/libm/machine/spu/s_ceil.c deleted file mode 100644 index c96d976fb..000000000 --- a/newlib/libm/machine/spu/s_ceil.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/ceil.h" - -double ceil(double x) -{ - return _ceil(x); -} diff --git a/newlib/libm/machine/spu/s_copysign.c b/newlib/libm/machine/spu/s_copysign.c deleted file mode 100644 index b4b2390e8..000000000 --- a/newlib/libm/machine/spu/s_copysign.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/copysign.h" - -double copysign(double x, double y) -{ - return _copysign(x, y); -} diff --git a/newlib/libm/machine/spu/s_cos.c b/newlib/libm/machine/spu/s_cos.c deleted file mode 100644 index 587326255..000000000 --- a/newlib/libm/machine/spu/s_cos.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/cos.h" - -double cos(double angle) -{ - return _cos(angle); -} diff --git a/newlib/libm/machine/spu/s_erf.c b/newlib/libm/machine/spu/s_erf.c deleted file mode 100644 index 89ef0cf59..000000000 --- a/newlib/libm/machine/spu/s_erf.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <math.h> -#include "headers/erf.h" - -double erf(double x) -{ - return _erf(x); -} - -/* - * The default s_erf.c contains both erf and erfc, erfc was manually added - * here, it could be moved to a separate file (similar for sf_erf.c). - */ -#include "headers/erfc.h" - -double erfc(double x) -{ - return _erfc(x); -} diff --git a/newlib/libm/machine/spu/s_expm1.c b/newlib/libm/machine/spu/s_expm1.c deleted file mode 100644 index 616d3d56e..000000000 --- a/newlib/libm/machine/spu/s_expm1.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/expm1.h" - -double expm1(double x) -{ - return _expm1(x); -} diff --git a/newlib/libm/machine/spu/s_fabs.c b/newlib/libm/machine/spu/s_fabs.c deleted file mode 100644 index 810f320a6..000000000 --- a/newlib/libm/machine/spu/s_fabs.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fabs.h" - -double fabs(double x) -{ - return _fabs(x); -} diff --git a/newlib/libm/machine/spu/s_fdim.c b/newlib/libm/machine/spu/s_fdim.c deleted file mode 100644 index fd2b5ac80..000000000 --- a/newlib/libm/machine/spu/s_fdim.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fdim.h" - -double fdim(double x, double y) -{ - return _fdim(x, y); -} diff --git a/newlib/libm/machine/spu/s_floor.c b/newlib/libm/machine/spu/s_floor.c deleted file mode 100644 index 5f0d23893..000000000 --- a/newlib/libm/machine/spu/s_floor.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/floor.h" - -double floor(double x) -{ - return _floor(x); -} diff --git a/newlib/libm/machine/spu/s_fma.c b/newlib/libm/machine/spu/s_fma.c deleted file mode 100644 index 0dad63eee..000000000 --- a/newlib/libm/machine/spu/s_fma.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fma.h" - -double fma(double x, double y, double z) -{ - return _fma(x, y, z); -} diff --git a/newlib/libm/machine/spu/s_fmax.c b/newlib/libm/machine/spu/s_fmax.c deleted file mode 100644 index b17c32764..000000000 --- a/newlib/libm/machine/spu/s_fmax.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fmax.h" - -double fmax(double x, double y) -{ - return _fmax(x, y); -} diff --git a/newlib/libm/machine/spu/s_fmin.c b/newlib/libm/machine/spu/s_fmin.c deleted file mode 100644 index 3daa05ba1..000000000 --- a/newlib/libm/machine/spu/s_fmin.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fmin.h" - -double fmin(double x, double y) -{ - return _fmin(x, y); -} diff --git a/newlib/libm/machine/spu/s_frexp.c b/newlib/libm/machine/spu/s_frexp.c deleted file mode 100644 index 3f1e096da..000000000 --- a/newlib/libm/machine/spu/s_frexp.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/frexp.h" - -double frexp(double x, int *pexp) -{ - return _frexp(x, pexp); -} diff --git a/newlib/libm/machine/spu/s_ilogb.c b/newlib/libm/machine/spu/s_ilogb.c deleted file mode 100644 index 9a3730f5a..000000000 --- a/newlib/libm/machine/spu/s_ilogb.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/ilogb.h" - -int ilogb(double x) -{ - return _ilogb(x); -} diff --git a/newlib/libm/machine/spu/s_isnan.c b/newlib/libm/machine/spu/s_isnan.c deleted file mode 100644 index c93ff19f9..000000000 --- a/newlib/libm/machine/spu/s_isnan.c +++ /dev/null @@ -1,8 +0,0 @@ -#include <math.h> -#include "headers/isnan.h" - -#undef isnan -int isnan(double x) -{ - return _isnan(x); -} diff --git a/newlib/libm/machine/spu/s_ldexp.c b/newlib/libm/machine/spu/s_ldexp.c deleted file mode 100644 index 268eb67a4..000000000 --- a/newlib/libm/machine/spu/s_ldexp.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/ldexp.h" - -double ldexp(double x, int exp) -{ - return _ldexp(x, exp); -} diff --git a/newlib/libm/machine/spu/s_log1p.c b/newlib/libm/machine/spu/s_log1p.c deleted file mode 100644 index 70ca37591..000000000 --- a/newlib/libm/machine/spu/s_log1p.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/log1p.h" - -double log1p(double x) -{ - return _log1p(x); -} diff --git a/newlib/libm/machine/spu/s_lrint.c b/newlib/libm/machine/spu/s_lrint.c deleted file mode 100644 index e9a3f74b3..000000000 --- a/newlib/libm/machine/spu/s_lrint.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/lrint.h" - -long int lrint(double x) -{ - return _lrint(x); -} diff --git a/newlib/libm/machine/spu/s_lround.c b/newlib/libm/machine/spu/s_lround.c deleted file mode 100644 index cc012d7ce..000000000 --- a/newlib/libm/machine/spu/s_lround.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/lround.h" - -long int lround(double x) -{ - return _lround(x); -} diff --git a/newlib/libm/machine/spu/s_nearbyint.c b/newlib/libm/machine/spu/s_nearbyint.c deleted file mode 100644 index 5887f27f1..000000000 --- a/newlib/libm/machine/spu/s_nearbyint.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/nearbyint.h" - -double nearbyint(double x) -{ - return _nearbyint(x); -} diff --git a/newlib/libm/machine/spu/s_nextafter.c b/newlib/libm/machine/spu/s_nextafter.c deleted file mode 100644 index 60a741ff8..000000000 --- a/newlib/libm/machine/spu/s_nextafter.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/nextafter.h" - -double nextafter(double x, double y) -{ - return _nextafter(x, y); -} diff --git a/newlib/libm/machine/spu/s_remquo.c b/newlib/libm/machine/spu/s_remquo.c deleted file mode 100644 index 9ba6a1213..000000000 --- a/newlib/libm/machine/spu/s_remquo.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/remquo.h" - -double remquo(double x, double y, int *quo) -{ - return _remquo(x, y, quo); -} diff --git a/newlib/libm/machine/spu/s_rint.c b/newlib/libm/machine/spu/s_rint.c deleted file mode 100644 index 482c6264c..000000000 --- a/newlib/libm/machine/spu/s_rint.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/rint.h" - -double rint(double x) -{ - return _rint(x); -} diff --git a/newlib/libm/machine/spu/s_round.c b/newlib/libm/machine/spu/s_round.c deleted file mode 100644 index 7138c8447..000000000 --- a/newlib/libm/machine/spu/s_round.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/round.h" - -double round(double x) -{ - return _round(x); -} diff --git a/newlib/libm/machine/spu/s_scalbn.c b/newlib/libm/machine/spu/s_scalbn.c deleted file mode 100644 index 58e161dfc..000000000 --- a/newlib/libm/machine/spu/s_scalbn.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/scalbn.h" - -double scalbn(double x, int exp) -{ - return _scalbn(x, exp); -} diff --git a/newlib/libm/machine/spu/s_sin.c b/newlib/libm/machine/spu/s_sin.c deleted file mode 100644 index ec079c98e..000000000 --- a/newlib/libm/machine/spu/s_sin.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/sin.h" - -double sin(double angle) -{ - return _sin(angle); -} diff --git a/newlib/libm/machine/spu/s_tan.c b/newlib/libm/machine/spu/s_tan.c deleted file mode 100644 index 8b0b22c7f..000000000 --- a/newlib/libm/machine/spu/s_tan.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/tan.h" - -double tan(double angle) -{ - return _tan(angle); -} diff --git a/newlib/libm/machine/spu/s_tanh.c b/newlib/libm/machine/spu/s_tanh.c deleted file mode 100644 index 5443d5750..000000000 --- a/newlib/libm/machine/spu/s_tanh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/tanh.h" - -double tanh(double x) -{ - return _tanh(x); -} diff --git a/newlib/libm/machine/spu/s_trunc.c b/newlib/libm/machine/spu/s_trunc.c deleted file mode 100644 index 043df4461..000000000 --- a/newlib/libm/machine/spu/s_trunc.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/trunc.h" - -double trunc(double x) -{ - return _trunc(x); -} diff --git a/newlib/libm/machine/spu/sf_asinh.c b/newlib/libm/machine/spu/sf_asinh.c deleted file mode 100644 index fcfb95913..000000000 --- a/newlib/libm/machine/spu/sf_asinh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/asinhf.h" - -float asinhf(float x) -{ - return _asinhf(x); -} diff --git a/newlib/libm/machine/spu/sf_atan.c b/newlib/libm/machine/spu/sf_atan.c deleted file mode 100644 index 90ef5145c..000000000 --- a/newlib/libm/machine/spu/sf_atan.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/atanf.h" - -float atanf(float x) -{ - return _atanf(x); -} diff --git a/newlib/libm/machine/spu/sf_cbrt.c b/newlib/libm/machine/spu/sf_cbrt.c deleted file mode 100644 index 86a08650e..000000000 --- a/newlib/libm/machine/spu/sf_cbrt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/cbrtf.h" - -float cbrtf(float x) -{ - return _cbrtf(x); -} diff --git a/newlib/libm/machine/spu/sf_ceil.c b/newlib/libm/machine/spu/sf_ceil.c deleted file mode 100644 index cfd611ca0..000000000 --- a/newlib/libm/machine/spu/sf_ceil.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/ceilf.h" - -float ceilf(float value) -{ - return _ceilf(value); -} diff --git a/newlib/libm/machine/spu/sf_copysign.c b/newlib/libm/machine/spu/sf_copysign.c deleted file mode 100644 index 4647c4572..000000000 --- a/newlib/libm/machine/spu/sf_copysign.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/copysignf.h" - -float copysignf(float x, float y) -{ - return _copysignf(x, y); -} diff --git a/newlib/libm/machine/spu/sf_cos.c b/newlib/libm/machine/spu/sf_cos.c deleted file mode 100644 index da498d1f1..000000000 --- a/newlib/libm/machine/spu/sf_cos.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/cosf.h" - -float cosf(float angle) -{ - return _cosf(angle); -} diff --git a/newlib/libm/machine/spu/sf_erf.c b/newlib/libm/machine/spu/sf_erf.c deleted file mode 100644 index 14e0dcd82..000000000 --- a/newlib/libm/machine/spu/sf_erf.c +++ /dev/null @@ -1,18 +0,0 @@ -#include <math.h> -#include "headers/erff.h" - -float erff(float x) -{ - return _erff(x); -} - -/* - * The default sf_erf.c contains both erff and erfcf, erfcf was manually added - * here, it could be moved to a separate file (similar to s_erf.c). - */ -#include "headers/erfcf.h" - -float erfcf(float x) -{ - return _erfcf(x); -} diff --git a/newlib/libm/machine/spu/sf_expm1.c b/newlib/libm/machine/spu/sf_expm1.c deleted file mode 100644 index 9851de540..000000000 --- a/newlib/libm/machine/spu/sf_expm1.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/expm1f.h" - -float expm1f(float vx) -{ - return _expm1f(vx); -} diff --git a/newlib/libm/machine/spu/sf_fabs.c b/newlib/libm/machine/spu/sf_fabs.c deleted file mode 100644 index bffc44b03..000000000 --- a/newlib/libm/machine/spu/sf_fabs.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fabsf.h" - -float fabsf(float value) -{ - return _fabsf(value); -} diff --git a/newlib/libm/machine/spu/sf_fdim.c b/newlib/libm/machine/spu/sf_fdim.c deleted file mode 100644 index b489c2726..000000000 --- a/newlib/libm/machine/spu/sf_fdim.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fdimf.h" - -float fdimf(float x, float y) -{ - return _fdimf(x, y); -} diff --git a/newlib/libm/machine/spu/sf_finite.c b/newlib/libm/machine/spu/sf_finite.c deleted file mode 100644 index 88d635fd4..000000000 --- a/newlib/libm/machine/spu/sf_finite.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - (C) Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * On the SPU always return 1. - */ -int -finitef(float x) -{ - return 1; -} diff --git a/newlib/libm/machine/spu/sf_floor.c b/newlib/libm/machine/spu/sf_floor.c deleted file mode 100644 index c5de7ca6a..000000000 --- a/newlib/libm/machine/spu/sf_floor.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/floorf.h" - -float floorf(float value) -{ - return _floorf(value); -} diff --git a/newlib/libm/machine/spu/sf_fma.c b/newlib/libm/machine/spu/sf_fma.c deleted file mode 100644 index 45dbcba4a..000000000 --- a/newlib/libm/machine/spu/sf_fma.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fmaf.h" - -float fmaf(float x, float y, float z) -{ - return _fmaf(x, y, z); -} diff --git a/newlib/libm/machine/spu/sf_fmax.c b/newlib/libm/machine/spu/sf_fmax.c deleted file mode 100644 index 5d5ca536b..000000000 --- a/newlib/libm/machine/spu/sf_fmax.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fmaxf.h" - -float fmaxf(float x, float y) -{ - return _fmaxf(x, y); -} diff --git a/newlib/libm/machine/spu/sf_fmin.c b/newlib/libm/machine/spu/sf_fmin.c deleted file mode 100644 index a08dca8d0..000000000 --- a/newlib/libm/machine/spu/sf_fmin.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fminf.h" - -float fminf(float x, float y) -{ - return _fminf(x, y); -} diff --git a/newlib/libm/machine/spu/sf_fpclassify.c b/newlib/libm/machine/spu/sf_fpclassify.c deleted file mode 100644 index 36cf8ba90..000000000 --- a/newlib/libm/machine/spu/sf_fpclassify.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. - * - * Permission to use, copy, modify, and distribute this software - * is freely granted, provided that this notice is preserved. - */ - -#include "fdlibm.h" - -/* - * On the SPU, single precision floating point returns only FP_NORMAL and - * FP_ZERO, since FP_NAN, FP_INFINITE, and FP_SUBNORMAL are not - * supported, base on the common f_fpclassify.c. - */ -int -__fpclassifyf (float x) -{ - __uint32_t w; - - GET_FLOAT_WORD(w,x); - - if (w == 0x00000000 || w == 0x80000000) - return FP_ZERO; - return FP_NORMAL; -} diff --git a/newlib/libm/machine/spu/sf_frexp.c b/newlib/libm/machine/spu/sf_frexp.c deleted file mode 100644 index 8ea04d56f..000000000 --- a/newlib/libm/machine/spu/sf_frexp.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/frexpf.h" - -float frexpf(float x, int *pexp) -{ - return _frexpf(x, pexp); -} diff --git a/newlib/libm/machine/spu/sf_ilogb.c b/newlib/libm/machine/spu/sf_ilogb.c deleted file mode 100644 index ea2146c5c..000000000 --- a/newlib/libm/machine/spu/sf_ilogb.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/ilogbf.h" - -int ilogbf(float x) -{ - return _ilogbf(x); -} diff --git a/newlib/libm/machine/spu/sf_isinf.c b/newlib/libm/machine/spu/sf_isinf.c deleted file mode 100644 index 7cba324f9..000000000 --- a/newlib/libm/machine/spu/sf_isinf.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - (C) Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * On the SPU isinff(x) always returns 0. - * - * isinff is an extension declared in <ieeefp.h> and <math.h>. - */ -int -isinff (float x) -{ - return 0; -} diff --git a/newlib/libm/machine/spu/sf_isinff.c b/newlib/libm/machine/spu/sf_isinff.c deleted file mode 100644 index 3ce424a74..000000000 --- a/newlib/libm/machine/spu/sf_isinff.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - (C) Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * On the SPU __isinff(x) always returns 0. - */ -int -__isinff (float x) -{ - return 0; -} diff --git a/newlib/libm/machine/spu/sf_isnan.c b/newlib/libm/machine/spu/sf_isnan.c deleted file mode 100644 index 448bfc47e..000000000 --- a/newlib/libm/machine/spu/sf_isnan.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - (C) Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * On the SPU single precision floating does not support NAN's. - */ -int -isnanf(float x) -{ - return 0; -} diff --git a/newlib/libm/machine/spu/sf_isnanf.c b/newlib/libm/machine/spu/sf_isnanf.c deleted file mode 100644 index 1dab50c7e..000000000 --- a/newlib/libm/machine/spu/sf_isnanf.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - (C) Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * On the SPU single precision floating does not support NAN's. - */ -int -__isnanf(float x) -{ - return 0; -} diff --git a/newlib/libm/machine/spu/sf_ldexp.c b/newlib/libm/machine/spu/sf_ldexp.c deleted file mode 100644 index 7d19a5d5c..000000000 --- a/newlib/libm/machine/spu/sf_ldexp.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/ldexpf.h" - -float ldexpf(float x, int exp) -{ - return _ldexpf(x, exp); -} diff --git a/newlib/libm/machine/spu/sf_log1p.c b/newlib/libm/machine/spu/sf_log1p.c deleted file mode 100644 index 8ea8a3764..000000000 --- a/newlib/libm/machine/spu/sf_log1p.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/log1pf.h" - -float log1pf(float x) -{ - return _log1pf(x); -} diff --git a/newlib/libm/machine/spu/sf_logb.c b/newlib/libm/machine/spu/sf_logb.c deleted file mode 100644 index 2aca4864f..000000000 --- a/newlib/libm/machine/spu/sf_logb.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/logbf.h" - -float logbf(float x) -{ - return _logbf(x); -} diff --git a/newlib/libm/machine/spu/sf_lrint.c b/newlib/libm/machine/spu/sf_lrint.c deleted file mode 100644 index dd96610a6..000000000 --- a/newlib/libm/machine/spu/sf_lrint.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/lrintf.h" - -long int lrintf(float x) -{ - return _lrintf(x); -} diff --git a/newlib/libm/machine/spu/sf_lround.c b/newlib/libm/machine/spu/sf_lround.c deleted file mode 100644 index 250467b7e..000000000 --- a/newlib/libm/machine/spu/sf_lround.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/lroundf.h" - -long int lroundf(float x) -{ - return _lroundf(x); -} diff --git a/newlib/libm/machine/spu/sf_nan.c b/newlib/libm/machine/spu/sf_nan.c deleted file mode 100644 index ef994c7ba..000000000 --- a/newlib/libm/machine/spu/sf_nan.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - (C) Copyright 2007 - International Business Machines Corporation, - Sony Computer Entertainment, Incorporated, - Toshiba Corporation, - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the names of the copyright holders nor the names of their - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/* - * On the SPU single precision floating does not support NAN's, and nanf - * is documented as returning zero. - */ -float -nanf(const char *unused) -{ - return 0; -} diff --git a/newlib/libm/machine/spu/sf_nearbyint.c b/newlib/libm/machine/spu/sf_nearbyint.c deleted file mode 100644 index d55329baa..000000000 --- a/newlib/libm/machine/spu/sf_nearbyint.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/nearbyintf.h" - -float nearbyintf(float x) -{ - return _nearbyintf(x); -} diff --git a/newlib/libm/machine/spu/sf_nextafter.c b/newlib/libm/machine/spu/sf_nextafter.c deleted file mode 100644 index 408ed41ed..000000000 --- a/newlib/libm/machine/spu/sf_nextafter.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/nextafterf.h" - -float nextafterf(float x, float y) -{ - return _nextafterf(x, y); -} diff --git a/newlib/libm/machine/spu/sf_remquo.c b/newlib/libm/machine/spu/sf_remquo.c deleted file mode 100644 index 3494398b2..000000000 --- a/newlib/libm/machine/spu/sf_remquo.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/remquof.h" - -float remquof(float x, float y, int *quo) -{ - return _remquof(x, y, quo); -} diff --git a/newlib/libm/machine/spu/sf_rint.c b/newlib/libm/machine/spu/sf_rint.c deleted file mode 100644 index 777dfd66e..000000000 --- a/newlib/libm/machine/spu/sf_rint.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/rintf.h" - -float rintf(float x) -{ - return _rintf(x); -} diff --git a/newlib/libm/machine/spu/sf_round.c b/newlib/libm/machine/spu/sf_round.c deleted file mode 100644 index 62a68f602..000000000 --- a/newlib/libm/machine/spu/sf_round.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/roundf.h" - -float roundf(float x) -{ - return _roundf(x); -} diff --git a/newlib/libm/machine/spu/sf_scalbn.c b/newlib/libm/machine/spu/sf_scalbn.c deleted file mode 100644 index 67824dfac..000000000 --- a/newlib/libm/machine/spu/sf_scalbn.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/scalbnf.h" - -float scalbnf(float x, int exp) -{ - return _scalbnf(x, exp); -} diff --git a/newlib/libm/machine/spu/sf_sin.c b/newlib/libm/machine/spu/sf_sin.c deleted file mode 100644 index ac8d2a367..000000000 --- a/newlib/libm/machine/spu/sf_sin.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/sinf.h" - -float sinf(float angle) -{ - return _sinf(angle); -} diff --git a/newlib/libm/machine/spu/sf_tan.c b/newlib/libm/machine/spu/sf_tan.c deleted file mode 100644 index 511106be9..000000000 --- a/newlib/libm/machine/spu/sf_tan.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/tanf.h" - -float tanf(float angle) -{ - return _tanf(angle); -} diff --git a/newlib/libm/machine/spu/sf_tanh.c b/newlib/libm/machine/spu/sf_tanh.c deleted file mode 100644 index 65c3f9bcf..000000000 --- a/newlib/libm/machine/spu/sf_tanh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/tanhf.h" - -float tanhf(float x) -{ - return _tanhf(x); -} diff --git a/newlib/libm/machine/spu/sf_trunc.c b/newlib/libm/machine/spu/sf_trunc.c deleted file mode 100644 index 4a7ab8841..000000000 --- a/newlib/libm/machine/spu/sf_trunc.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/truncf.h" - -float truncf(float x) -{ - return _truncf(x); -} diff --git a/newlib/libm/machine/spu/w_acos.c b/newlib/libm/machine/spu/w_acos.c deleted file mode 100644 index 412198c67..000000000 --- a/newlib/libm/machine/spu/w_acos.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/acos.h" - -double acos(double x) -{ - return _acos(x); -} diff --git a/newlib/libm/machine/spu/w_acosh.c b/newlib/libm/machine/spu/w_acosh.c deleted file mode 100644 index b05f4a4dd..000000000 --- a/newlib/libm/machine/spu/w_acosh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/acosh.h" - -double acosh(double x) -{ - return _acosh(x); -} diff --git a/newlib/libm/machine/spu/w_asin.c b/newlib/libm/machine/spu/w_asin.c deleted file mode 100644 index 142ed2b75..000000000 --- a/newlib/libm/machine/spu/w_asin.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/asin.h" - -double asin(double x) -{ - return _asin(x); -} diff --git a/newlib/libm/machine/spu/w_atan2.c b/newlib/libm/machine/spu/w_atan2.c deleted file mode 100644 index fb690c436..000000000 --- a/newlib/libm/machine/spu/w_atan2.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/atan2.h" - -double atan2(double y, double x) -{ - return _atan2(y, x); -} diff --git a/newlib/libm/machine/spu/w_atanh.c b/newlib/libm/machine/spu/w_atanh.c deleted file mode 100644 index 8d4c2ceca..000000000 --- a/newlib/libm/machine/spu/w_atanh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/atanh.h" - -double atanh(double x) -{ - return _atanh(x); -} diff --git a/newlib/libm/machine/spu/w_cosh.c b/newlib/libm/machine/spu/w_cosh.c deleted file mode 100644 index 5fb77eb09..000000000 --- a/newlib/libm/machine/spu/w_cosh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/cosh.h" - -double cosh(double x) -{ - return _cosh(x); -} diff --git a/newlib/libm/machine/spu/w_exp.c b/newlib/libm/machine/spu/w_exp.c deleted file mode 100644 index 3f00afa1b..000000000 --- a/newlib/libm/machine/spu/w_exp.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/exp.h" - -double exp(double x) -{ - return _exp(x); -} diff --git a/newlib/libm/machine/spu/w_exp2.c b/newlib/libm/machine/spu/w_exp2.c deleted file mode 100644 index c8933bce1..000000000 --- a/newlib/libm/machine/spu/w_exp2.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/exp2.h" - -double exp2(double vx) -{ - return _exp2(vx); -} diff --git a/newlib/libm/machine/spu/w_fmod.c b/newlib/libm/machine/spu/w_fmod.c deleted file mode 100644 index 29704bceb..000000000 --- a/newlib/libm/machine/spu/w_fmod.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fmod.h" - -double fmod(double x, double y) -{ - return _fmod(x, y); -} diff --git a/newlib/libm/machine/spu/w_hypot.c b/newlib/libm/machine/spu/w_hypot.c deleted file mode 100644 index 93db031b0..000000000 --- a/newlib/libm/machine/spu/w_hypot.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/hypot.h" - -double hypot(double x, double y) -{ - return _hypot(x, y); -} diff --git a/newlib/libm/machine/spu/w_lgamma.c b/newlib/libm/machine/spu/w_lgamma.c deleted file mode 100644 index f092adb69..000000000 --- a/newlib/libm/machine/spu/w_lgamma.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/lgamma.h" - -double lgamma(double x) -{ - return _lgamma(x); -} diff --git a/newlib/libm/machine/spu/w_log.c b/newlib/libm/machine/spu/w_log.c deleted file mode 100644 index b224dbc5f..000000000 --- a/newlib/libm/machine/spu/w_log.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/log.h" - -double log(double x) -{ - return _log(x); -} diff --git a/newlib/libm/machine/spu/w_log10.c b/newlib/libm/machine/spu/w_log10.c deleted file mode 100644 index b76187581..000000000 --- a/newlib/libm/machine/spu/w_log10.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/log10.h" - -double log10(double x) -{ - return _log10(x); -} diff --git a/newlib/libm/machine/spu/w_pow.c b/newlib/libm/machine/spu/w_pow.c deleted file mode 100644 index a1afe4338..000000000 --- a/newlib/libm/machine/spu/w_pow.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/pow.h" - -double pow(double x, double y) -{ - return _pow(x, y); -} diff --git a/newlib/libm/machine/spu/w_remainder.c b/newlib/libm/machine/spu/w_remainder.c deleted file mode 100644 index c87627b49..000000000 --- a/newlib/libm/machine/spu/w_remainder.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/remainder.h" - -double remainder(double x, double y) -{ - return _remainder(x, y); -} diff --git a/newlib/libm/machine/spu/w_sincos.c b/newlib/libm/machine/spu/w_sincos.c deleted file mode 100644 index 0ea124482..000000000 --- a/newlib/libm/machine/spu/w_sincos.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/sincos.h" - -void sincos(double angle, double* sinx, double* cosx) -{ - return _sincos(angle, sinx, cosx); -} diff --git a/newlib/libm/machine/spu/w_sinh.c b/newlib/libm/machine/spu/w_sinh.c deleted file mode 100644 index 0077296a6..000000000 --- a/newlib/libm/machine/spu/w_sinh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/sinh.h" - -double sinh(double x) -{ - return _sinh(x); -} diff --git a/newlib/libm/machine/spu/w_sqrt.c b/newlib/libm/machine/spu/w_sqrt.c deleted file mode 100644 index 359ffcc32..000000000 --- a/newlib/libm/machine/spu/w_sqrt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/sqrt.h" - -double sqrt(double in) -{ - return _sqrt(in); -} diff --git a/newlib/libm/machine/spu/w_tgamma.c b/newlib/libm/machine/spu/w_tgamma.c deleted file mode 100644 index 98dd52d8b..000000000 --- a/newlib/libm/machine/spu/w_tgamma.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/tgamma.h" - -double tgamma(double x) -{ - return _tgamma(x); -} diff --git a/newlib/libm/machine/spu/wf_acos.c b/newlib/libm/machine/spu/wf_acos.c deleted file mode 100644 index 86585565c..000000000 --- a/newlib/libm/machine/spu/wf_acos.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/acosf.h" - -float acosf(float x) -{ - return _acosf(x); -} diff --git a/newlib/libm/machine/spu/wf_acosh.c b/newlib/libm/machine/spu/wf_acosh.c deleted file mode 100644 index 1e729ae44..000000000 --- a/newlib/libm/machine/spu/wf_acosh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/acoshf.h" - -float acoshf(float x) -{ - return _acoshf(x); -} diff --git a/newlib/libm/machine/spu/wf_asin.c b/newlib/libm/machine/spu/wf_asin.c deleted file mode 100644 index c3fab30ff..000000000 --- a/newlib/libm/machine/spu/wf_asin.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/asinf.h" - -float asinf(float x) -{ - return _asinf(x); -} diff --git a/newlib/libm/machine/spu/wf_atan2.c b/newlib/libm/machine/spu/wf_atan2.c deleted file mode 100644 index 2a22f537e..000000000 --- a/newlib/libm/machine/spu/wf_atan2.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/atan2f.h" - -float atan2f(float y, float x) -{ - return _atan2f(y, x); -} diff --git a/newlib/libm/machine/spu/wf_atanh.c b/newlib/libm/machine/spu/wf_atanh.c deleted file mode 100644 index 8a8017432..000000000 --- a/newlib/libm/machine/spu/wf_atanh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/atanhf.h" - -float atanhf(float x) -{ - return _atanhf(x); -} diff --git a/newlib/libm/machine/spu/wf_cosh.c b/newlib/libm/machine/spu/wf_cosh.c deleted file mode 100644 index 6a0f15cb7..000000000 --- a/newlib/libm/machine/spu/wf_cosh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/coshf.h" - -float coshf(float x) -{ - return _coshf(x); -} diff --git a/newlib/libm/machine/spu/wf_exp.c b/newlib/libm/machine/spu/wf_exp.c deleted file mode 100644 index 9a0f905d0..000000000 --- a/newlib/libm/machine/spu/wf_exp.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/expf.h" - -float expf(float x) -{ - return _expf(x); -} diff --git a/newlib/libm/machine/spu/wf_exp2.c b/newlib/libm/machine/spu/wf_exp2.c deleted file mode 100644 index c815cee55..000000000 --- a/newlib/libm/machine/spu/wf_exp2.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/exp2f.h" - -float exp2f(float x) -{ - return _exp2f(x); -} diff --git a/newlib/libm/machine/spu/wf_fmod.c b/newlib/libm/machine/spu/wf_fmod.c deleted file mode 100644 index b7b8c27df..000000000 --- a/newlib/libm/machine/spu/wf_fmod.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/fmodf.h" - -float fmodf(float x, float y) -{ - return _fmodf(x, y); -} diff --git a/newlib/libm/machine/spu/wf_hypot.c b/newlib/libm/machine/spu/wf_hypot.c deleted file mode 100644 index f9d88501c..000000000 --- a/newlib/libm/machine/spu/wf_hypot.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/hypotf.h" - -float hypotf(float x, float y) -{ - return _hypotf(x, y); -} diff --git a/newlib/libm/machine/spu/wf_lgamma.c b/newlib/libm/machine/spu/wf_lgamma.c deleted file mode 100644 index 6b0824adf..000000000 --- a/newlib/libm/machine/spu/wf_lgamma.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/lgammaf.h" - -float lgammaf(float x) -{ - return _lgammaf(x); -} diff --git a/newlib/libm/machine/spu/wf_log.c b/newlib/libm/machine/spu/wf_log.c deleted file mode 100644 index e788dea4d..000000000 --- a/newlib/libm/machine/spu/wf_log.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/logf.h" - -float logf(float x) -{ - return _logf(x); -} diff --git a/newlib/libm/machine/spu/wf_log10.c b/newlib/libm/machine/spu/wf_log10.c deleted file mode 100644 index f3d2c9f90..000000000 --- a/newlib/libm/machine/spu/wf_log10.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/log10f.h" - -float log10f(float x) -{ - return _log10f(x); -} diff --git a/newlib/libm/machine/spu/wf_pow.c b/newlib/libm/machine/spu/wf_pow.c deleted file mode 100644 index 799665612..000000000 --- a/newlib/libm/machine/spu/wf_pow.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/powf.h" - -float powf(float x, float y) -{ - return _powf(x, y); -} diff --git a/newlib/libm/machine/spu/wf_remainder.c b/newlib/libm/machine/spu/wf_remainder.c deleted file mode 100644 index 84508ce2a..000000000 --- a/newlib/libm/machine/spu/wf_remainder.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/remainderf.h" - -float remainderf(float x, float y) -{ - return _remainderf(x, y); -} diff --git a/newlib/libm/machine/spu/wf_sincos.c b/newlib/libm/machine/spu/wf_sincos.c deleted file mode 100644 index 6dc4d0c98..000000000 --- a/newlib/libm/machine/spu/wf_sincos.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/sincosf.h" - -void sincosf(float angle, float* sinx, float* cosx) -{ - return _sincosf(angle, sinx, cosx); -} diff --git a/newlib/libm/machine/spu/wf_sinh.c b/newlib/libm/machine/spu/wf_sinh.c deleted file mode 100644 index 413e7b56b..000000000 --- a/newlib/libm/machine/spu/wf_sinh.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/sinhf.h" - -float sinhf(float x) -{ - return _sinhf(x); -} diff --git a/newlib/libm/machine/spu/wf_sqrt.c b/newlib/libm/machine/spu/wf_sqrt.c deleted file mode 100644 index 78eccb418..000000000 --- a/newlib/libm/machine/spu/wf_sqrt.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/sqrtf.h" - -float sqrtf(float in) -{ - return _sqrtf(in); -} diff --git a/newlib/libm/machine/spu/wf_tgamma.c b/newlib/libm/machine/spu/wf_tgamma.c deleted file mode 100644 index 161f505fe..000000000 --- a/newlib/libm/machine/spu/wf_tgamma.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <math.h> -#include "headers/tgammaf.h" - -float tgammaf(float x) -{ - return _tgammaf(x); -} |