aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog25
-rw-r--r--math/Makefile21
-rw-r--r--math/libm-test-support.c7
-rw-r--r--math/test-double.h2
-rw-r--r--math/test-float.h2
-rw-r--r--math/test-float128.h2
-rw-r--r--math/test-ldouble.h12
7 files changed, 60 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 3a1dba9498..e8f8382a5c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2017-10-11 Joseph Myers <joseph@codesourcery.com>
+
+ * math/Makefile (test-types-basic): New variable.
+ (test-types): Likewise.
+ (libm-test-support): Use $(test-types) instead of $(types).
+ (libm-tests-base-normal): Likewise.
+ (libm-tests-base-finite): Likewise.
+ (libm-tests-base-inline): Likewise.
+ (generated): Likewise.
+ ($(objpfx)libm-test-support-$(t).c): Likewise.
+ (libm-tests-for-type iterator): Likewise.
+ (libm-test-support iterator): Likewise.
+ * math/libm-test-support.c (ulp_i_idx): Use ULP_I_IDX.
+ (ulp_idx): Use ULP_IDX.
+ * math/test-ldouble.h: Include <float.h>.
+ (TYPE_STR): Define conditional on [LDBL_MANT_DIG == DBL_MANT_DIG].
+ (ULP_IDX): New macro.
+ (ULP_I_IDX): Likewise.
+ * math/test-double.h (ULP_IDX): Likewise.
+ (ULP_I_IDX): Likewise.
+ * math/test-float.h (ULP_IDX): Likewise.
+ (ULP_I_IDX): Likewise.
+ * math/test-float128.h (ULP_IDX): Likewise.
+ (ULP_I_IDX): Likewise.
+
2017-10-11 Adhemerval Zanella <adhemerval.zanella@linaro.org>
* sysdeps/unix/sysv/linux/aarch64/sysdep-cancel.h: Remove file.
diff --git a/math/Makefile b/math/Makefile
index d4f9e6b6e9..4014471f74 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -102,6 +102,10 @@ libm-compat-calls = \
# after the Rules makefile has been parsed.
types-basic = $(type-ldouble-$(long-double-fcts)) double float
+# Like types, but includes types whose functions alias those for
+# another type.
+test-types-basic = ldouble double float
+
# long double support
type-ldouble-suffix := l
type-ldouble-routines := t_sincosl k_sincosl s_iscanonicall
@@ -123,6 +127,7 @@ type-float128-suffix := f128
type-float128-routines := t_sincosf128 k_sincosf128
type-float128-yes := float128
types = $(types-basic) $(type-float128-$(float128-fcts))
+test-types = $(test-types-basic) $(type-float128-$(float128-fcts))
# For each of the basic types (float, double, long double), replace the
# occurrences of 'F' in arg 1 with the appropriate suffix for the type.
@@ -214,7 +219,7 @@ endif
ifneq (no,$(PERL))
libm-vec-tests = $(addprefix test-,$(libmvec-tests))
-libm-test-support = $(foreach t,$(types),libm-test-support-$(t))
+libm-test-support = $(foreach t,$(test-types),libm-test-support-$(t))
test-extras += $(libm-test-support)
extra-test-objs += $(addsuffix .o, $(libm-test-support))
libm-vec-test-wrappers = $(addsuffix -wrappers, $(libm-vec-tests))
@@ -250,9 +255,9 @@ libm-test-c-auto = $(foreach f,$(libm-test-funcs-auto),libm-test-$(f).c)
libm-test-c-noauto = $(foreach f,$(libm-test-funcs-noauto),libm-test-$(f).c)
generated += libm-test-ulps.h $(libm-test-c-auto) $(libm-test-c-noauto)
-libm-tests-base-normal = $(foreach t,$(types),test-$(t))
-libm-tests-base-finite = $(foreach t,$(types),test-$(t)-finite)
-libm-tests-base-inline = $(foreach t,$(types),test-i$(t))
+libm-tests-base-normal = $(foreach t,$(test-types),test-$(t))
+libm-tests-base-finite = $(foreach t,$(test-types),test-$(t)-finite)
+libm-tests-base-inline = $(foreach t,$(test-types),test-i$(t))
libm-tests-base = $(libm-tests-base-normal) $(libm-tests-base-finite) \
$(libm-tests-base-inline) $(libm-vec-tests)
libm-tests-normal = $(foreach t,$(libm-tests-base-normal),\
@@ -277,7 +282,7 @@ libm-tests.o = $(addsuffix .o,$(libm-tests))
tests += $(libm-tests)
generated += $(addsuffix .c,$(libm-tests)) \
- $(foreach t,$(types),libm-test-support-$(t).c)
+ $(foreach t,$(test-types),libm-test-support-$(t).c)
libm-test-c-auto-obj = $(addprefix $(objpfx),$(libm-test-c-auto))
libm-test-c-noauto-obj = $(addprefix $(objpfx),$(libm-test-c-noauto))
@@ -448,7 +453,7 @@ $(foreach t,$(libm-tests-vector),$(objpfx)$(t).c): $(objpfx)test-%.c:
echo "#include <libm-test-$$func.c>"; \
) > $@
-$(foreach t,$(types),\
+$(foreach t,$(test-types),\
$(objpfx)libm-test-support-$(t).c): $(objpfx)libm-test-support-%.c:
( \
echo "#include <test-$*.h>"; \
@@ -496,13 +501,13 @@ define o-iterator-doit
$(addprefix $(objpfx),\
$(call libm-tests-for-type,$(o))): $(objpfx)libm-test-support-$(o).o
endef
-object-suffixes-left := $(types)
+object-suffixes-left := $(test-types)
include $(o-iterator)
define o-iterator-doit
$(objpfx)libm-test-support-$(o).o: CFLAGS += $(libm-test-no-inline-cflags)
endef
-object-suffixes-left := $(types)
+object-suffixes-left := $(test-types)
include $(o-iterator)
# Run the math programs to automatically generate ULPs files.
diff --git a/math/libm-test-support.c b/math/libm-test-support.c
index 9ce3eb1c04..ede0d161a2 100644
--- a/math/libm-test-support.c
+++ b/math/libm-test-support.c
@@ -45,6 +45,9 @@
TYPE_STR: The name of the type as used in ulps files, as a string.
+ ULP_IDX, ULP_I_IDX: The array indexes for ulps values for this
+ function.
+
LIT: Append the correct suffix to a literal.
LITM: Append the correct suffix to an M_* macro name.
@@ -191,8 +194,8 @@ compare_ulp_data (const void *key, const void *ulp)
return strcmp (keystr, ulpdat->name);
}
-static const int ulp_i_idx = __CONCATX (ULP_I_, PREFIX);
-static const int ulp_idx = __CONCATX (ULP_, PREFIX);
+static const int ulp_i_idx = ULP_I_IDX;
+static const int ulp_idx = ULP_IDX;
/* Return the ulps for NAME in array DATA with NMEMB elements, or 0 if
no ulps listed. */
diff --git a/math/test-double.h b/math/test-double.h
index 3c562e27f5..08138c4478 100644
--- a/math/test-double.h
+++ b/math/test-double.h
@@ -23,6 +23,8 @@
#define PREFIX DBL
#define LIT(x) (x)
#define TYPE_STR "double"
+#define ULP_IDX ULP_DBL
+#define ULP_I_IDX ULP_I_DBL
#define LITM(x) x
#define FTOSTR strfromd
#define snan_value_MACRO SNAN
diff --git a/math/test-float.h b/math/test-float.h
index 97e98c768a..7382d37639 100644
--- a/math/test-float.h
+++ b/math/test-float.h
@@ -22,6 +22,8 @@
#define BUILD_COMPLEX(real, imag) (CMPLXF ((real), (imag)))
#define PREFIX FLT
#define TYPE_STR "float"
+#define ULP_IDX ULP_FLT
+#define ULP_I_IDX ULP_I_FLT
#define LIT(x) (x ## f)
/* Use the double variants of macro constants. */
#define LITM(x) x
diff --git a/math/test-float128.h b/math/test-float128.h
index 17c5928bf6..3132766aa4 100644
--- a/math/test-float128.h
+++ b/math/test-float128.h
@@ -29,6 +29,8 @@
#define BUILD_COMPLEX(real, imag) (CMPLXF128 ((real), (imag)))
#define PREFIX FLT128
#define TYPE_STR "float128"
+#define ULP_IDX ULP_FLT128
+#define ULP_I_IDX ULP_I_FLT128
#define LIT(x) __f128 (x)
#define LITM(x) x ## f128
#define FTOSTR strfromf128
diff --git a/math/test-ldouble.h b/math/test-ldouble.h
index 89d4940117..90a293386c 100644
--- a/math/test-ldouble.h
+++ b/math/test-ldouble.h
@@ -16,12 +16,22 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
+#include <float.h>
+
#define FUNC(function) function##l
#define FLOAT long double
#define CFLOAT __complex__ long double
#define BUILD_COMPLEX(real, imag) (CMPLXL ((real), (imag)))
#define PREFIX LDBL
-#define TYPE_STR "ldouble"
+#if LDBL_MANT_DIG == DBL_MANT_DIG
+# define TYPE_STR "double"
+# define ULP_IDX ULP_DBL
+# define ULP_I_IDX ULP_I_DBL
+#else
+# define TYPE_STR "ldouble"
+# define ULP_IDX ULP_LDBL
+# define ULP_I_IDX ULP_I_LDBL
+#endif
#define LIT(x) (x ## L)
#define LITM(x) x ## l
#define FTOSTR strfroml