2002-10-19 20:03:40 +00:00
|
|
|
# Makefile fragment for PowerPC with no FPU.
|
|
|
|
|
|
|
|
ifeq ($(subdir),soft-fp)
|
2006-01-30 22:12:44 +00:00
|
|
|
sysdep_routines += $(gcc-single-routines) $(gcc-double-routines) \
|
2018-06-01 17:25:12 +00:00
|
|
|
sqrtsf2 sqrtdf2 \
|
2013-11-28 18:01:41 +00:00
|
|
|
sim-full atomic-feholdexcept atomic-feclearexcept \
|
|
|
|
atomic-feupdateenv flt-rounds
|
2002-10-19 20:03:40 +00:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(subdir),math)
|
2007-07-13 12:43:40 +00:00
|
|
|
libm-support += fenv_const
|
2006-11-22 15:13:11 +00:00
|
|
|
CPPFLAGS += -I../soft-fp/
|
|
|
|
# The follow CFLAGS are a work around for GCC Bugzilla Bug 29253
|
|
|
|
# "expand_abs wrong default code for floating point"
|
|
|
|
# As this is not a regression, a fix is not likely to go into
|
|
|
|
# gcc-4.1.1 and may be too late for gcc-4.2. So we need these flags
|
|
|
|
# until the fix in a gcc release and glibc drops support for earlier
|
|
|
|
# versions of gcc.
|
2018-01-09 22:34:35 +00:00
|
|
|
#
|
|
|
|
# This bug can cause wrong signs of zero results from fabsl, and
|
|
|
|
# spurious "invalid" exceptions from comparisons with NaN in the
|
|
|
|
# default code sequence generated. The fpclassify expansion used by
|
|
|
|
# __builtin_fpclassify, which is used in the absence of
|
|
|
|
# -fsignaling-nans, uses __builtin_fabsl, and is not affected by
|
|
|
|
# -fno-builtin-fabsl, so requiring -fsignaling-nans for some affected
|
|
|
|
# source files.
|
2014-01-03 20:56:18 +00:00
|
|
|
CFLAGS-e_atan2l.c += -fno-builtin-fabsl
|
2013-10-10 19:12:09 +00:00
|
|
|
CFLAGS-e_hypotl.c += -fno-builtin-fabsl
|
2006-11-22 15:13:11 +00:00
|
|
|
CFLAGS-e_powl.c += -fno-builtin-fabsl
|
2022-03-07 18:09:53 +00:00
|
|
|
CFLAGS-s_cacosl.c += $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_cacoshl.c += $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_casinhl.c += $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_catanl.c += $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_catanhl.c += $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_ccoshl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_cexpl.c += $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_csinhl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_clogl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_clog10l.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_csinl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
|
|
|
CFLAGS-s_csqrtl.c += -fno-builtin-fabsl $(config-cflags-signaling-nans)
|
2016-12-14 00:42:51 +00:00
|
|
|
CFLAGS-w_acosl_compat.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-w_asinl_compat.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-w_atanhl_compat.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-w_j0l_compat.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-w_j1l_compat.c += -fno-builtin-fabsl
|
2017-09-29 17:54:24 +00:00
|
|
|
CFLAGS-e_lgammal_r.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-e_log10l.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-e_log2l.c += -fno-builtin-fabsl
|
2018-01-09 23:14:45 +00:00
|
|
|
CFLAGS-e_remainderl.c += -fno-builtin-fabsl
|
2018-01-10 00:38:12 +00:00
|
|
|
CFLAGS-s_fmaxmagl.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-s_fminmagl.c += -fno-builtin-fabsl
|
Add fmaximum, fminimum functions
C2X adds new <math.h> functions for floating-point maximum and
minimum, corresponding to the new operations that were added in IEEE
754-2019 because of concerns about the old operations not being
associative in the presence of signaling NaNs. fmaximum and fminimum
handle NaNs like most <math.h> functions (any NaN argument means the
result is a quiet NaN). fmaximum_num and fminimum_num handle both
quiet and signaling NaNs the way fmax and fmin handle quiet NaNs (if
one argument is a number and the other is a NaN, return the number),
but still raise "invalid" for a signaling NaN argument, making them
exceptions to the normal rule that a function with a floating-point
result raising "invalid" also returns a quiet NaN. fmaximum_mag,
fminimum_mag, fmaximum_mag_num and fminimum_mag_num are corresponding
functions returning the argument with greatest or least absolute
value. All these functions also treat +0 as greater than -0. There
are also corresponding <tgmath.h> type-generic macros.
Add these functions to glibc. The implementations use type-generic
templates based on those for fmax, fmin, fmaxmag and fminmag, and test
inputs are based on those for those functions with appropriate
adjustments to the expected results. The RISC-V maintainers might
wish to add optimized versions of fmaximum_num and fminimum_num (for
float and double), since RISC-V (F extension version 2.2 and later)
provides instructions corresponding to those functions - though it
might be at least as useful to add architecture-independent built-in
functions to GCC and teach the RISC-V back end to expand those
functions inline, which is what you generally want for functions that
can be implemented with a single instruction.
Tested for x86_64 and x86, and with build-many-glibcs.py.
2021-09-28 23:31:35 +00:00
|
|
|
CFLAGS-s_fmaximum_magl.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-s_fminimum_magl.c += -fno-builtin-fabsl
|
|
|
|
CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fabsl
|
2002-10-19 20:03:40 +00:00
|
|
|
endif
|