[BACK]Return to softfloat-qp.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libc / arch / sparc64 / softfloat

File: [cvs.NetBSD.org] / src / lib / libc / arch / sparc64 / softfloat / softfloat-qp.h (download)

Revision 1.2, Thu Nov 8 15:50:21 2007 UTC (14 years, 6 months ago) by martin
Branch: MAIN
CVS Tags: yamt-pf42-baseX, yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-pf42-base, yamt-pf42, yamt-pagecache-tag8, yamt-pagecache-base9, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, yamt-pagecache, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, wrstuden-revivesa, tls-maxphys-base, tls-maxphys, tls-earlyentropy-base, tls-earlyentropy, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, phil-wifi-base, phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, phil-wifi-20191119, phil-wifi-20190609, phil-wifi, pgoyette-localcount-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, pgoyette-localcount, pgoyette-compat-merge-20190127, pgoyette-compat-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, pgoyette-compat, perseant-stdc-iso10646-base, perseant-stdc-iso10646, netbsd-9-base, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, netbsd-8-base, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, netbsd-5-base, netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, netbsd-5, mjf-devfs2-base, mjf-devfs2, matt-premerge-20091211, matt-nb8-mediatek-base, matt-nb8-mediatek, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-premerge-20101231, matt-mips64-base2, matt-armv6-nbase, matt-armv6-base, localcount-20160914, keiichi-mipv6-base, keiichi-mipv6, jym-xensuspend-nbase, jym-xensuspend-base, jym-xensuspend, is-mlppp-base, is-mlppp, hpcarm-cleanup-nbase, hpcarm-cleanup-base, cube-autoconf-base, cube-autoconf, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x, christos-time_t-nbase, christos-time_t-base, christos-time_t, cherry-xenmp-base, cherry-xenmp, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2, agc-symver-base, agc-symver, HEAD
Changes since 1.1: +1 -0 lines

When converting long double values to integer types, explicitly use the
"round to zero" variants of the softfloat conversion functions.
Add a variant to convert long double to unsigned long - the "to long"
variant checked for overflows that do not apply to unsigned results.
This fixes the regress/lib/libc/convfp tests for sparc64.

/*
 * Get everything SOFTFLOAT_FOR_GCC normally would rename out of the users
 * namespace. Much of this isn't used but to avoid dissecting softloat.c
 * all of it is pulled in even for just the _Qp* case
 */

#if defined(SOFTFLOATSPARC64_FOR_GCC) && !defined(SOFTFLOAT_FOR_GCC)
#define float_exception_flags   _softfloat_float_exception_flags
#define float_rounding_mode     _softfloat_float_rounding_mode
#define float_raise             _softfloat_float_raise

#define float32_eq              _softfloat_float32_eq
#define float32_le              _softfloat_float32_le
#define float32_lt              _softfloat_float32_lt
#define float64_eq              _softfloat_float64_eq
#define float64_le              _softfloat_float64_le
#define float64_lt              _softfloat_float64_lt

#define float32_add			_softfloat_float32_add
#define float64_add			_softfloat_float64_add
#define float32_sub			_softfloat_float32_sub
#define float64_sub			_softfloat_float64_sub
#define float32_mul			_softfloat_float32_mul
#define float64_mul			_softfloat_float64_mul
#define float32_div			_softfloat_float32_div
#define float64_div			_softfloat_float64_div
#define int32_to_float32		_softfloat_int32_to_float32
#define int32_to_float64		_softfloat_int32_to_float64
#define int64_to_float32		_softfloat_int64_to_float32
#define int64_to_float64		_softfloat_int64_to_float64
#define float32_to_int32_round_to_zero	_softfloat_float32_to_int32_round_to_zero
#define float64_to_int32_round_to_zero	_softfloat_float64_to_int32_round_to_zero
#define float32_to_int64_round_to_zero	_softfloat_float32_to_int64_round_to_zero
#define float64_to_int64_round_to_zero	_softfloat_float64_to_int64_round_to_zero
#define float32_to_uint32_round_to_zero	_softfloat_float32_to_uint32_round_to_zero
#define float64_to_uint32_round_to_zero	_softfloat_float64_to_uint32_round_to_zero
#define float32_to_float64		_softfloat_float32_to_float64
#define float64_to_float32		_softfloat_float64_to_float32
#define float32_is_signaling_nan	_softfloat_float32_is_signaling_nan
#define float64_is_signaling_nan	_softfloat_float64_is_signaling_nan

#endif /* SOFTFLOATSPARC64_FOR_GCC and !SOFTFLOAT_FOR_GCC */

/*
 * The following will always end up in the namespace if FLOAT128 is
 * defined and SOFTFLOAT_FOR_GCC isn't. So rename them out of the user's
 * namespace.
 */

#ifdef SOFTFLOATSPARC64_FOR_GCC
#define	float128_add			_softfloat_float128_add
#define	float128_div			_softfloat_float128_div
#define	float128_eq			_softfloat_float128_eq
#define	float128_eq_signaling		_softfloat_float128_eq_signaling
#define	float128_is_nan			_softfloat_float128_is_nan
#define	float128_is_signaling_nan	_softfloat_float128_is_signaling_nan
#define	float128_le			_softfloat_float128_le
#define	float128_le_quiet		_softfloat_float128_le_quiet
#define	float128_lt			_softfloat_float128_lt
#define	float128_lt_quiet		_softfloat_float128_lt_quiet
#define	float128_mul			_softfloat_float128_mul
#define	float128_rem			_softfloat_float128_rem
#define	float128_round_to_int		_softfloat_float128_round_to_int
#define	float128_sqrt			_softfloat_float128_sqrt
#define	float128_sub			_softfloat_float128_sub
#define	float128_to_float32		_softfloat_float128_to_float32
#define	float128_to_float64		_softfloat_float128_to_float64
#define	float128_to_int32		_softfloat_float128_to_int32
#define	float128_to_int32_round_to_zero	_softfloat_float128_to_int32_round_to_zero
#define	float128_to_int64		_softfloat_float128_to_int64
#define	float128_to_int64_round_to_zero	_softfloat_float128_to_int64_round_to_zero
#define	float128_to_uint64_round_to_zero	_softfloat_float128_to_uint64_round_to_zero
#define	float32_to_float128		_softfloat_float32_to_float128
#define	float64_to_float128		_softfloat_float64_to_float128
#define	int32_to_float128		_softfloat_int32_to_float128
#define	int64_to_float128		_softfloat_int64_to_float128

/*
 * If this isn't defined go ahead and set it now since this is now past
 * anywhere define's are happening and this will conditionally compile out
 * a lot of extraneous code in softfloat.c
 */

#ifndef SOFTFLOAT_FOR_GCC
#define SOFTFLOAT_FOR_GCC
#endif

#endif /* SOFTFLOATSPARC64_FOR_GCC */