@@ -103,7 +103,7 @@ libm-tests = test-float test-double
$(test-longdouble-$(long-double-fcts)) \
libm-tests.o = $(addsuffix .o,$(libm-tests))
tests += $(libm-tests)
-libm-tests-generated = libm-test-ulps.h libm-test.c
+libm-tests-generated = libm-test-ulps.h libm-have-vector-test.h libm-test.c
generated += $(libm-tests-generated) libm-test.stmp
# This is needed for dependencies
@@ -114,9 +114,10 @@ ulps-file = $(firstword $(wildcard
$(sysdirs:%=%/libm-test-ulps)))
$(addprefix $(objpfx), $(libm-tests-generated)): $(objpfx)libm-test.stmp
$(objpfx)libm-test.stmp: $(ulps-file) libm-test.inc gen-libm-test.pl \
- auto-libm-test-out
+ gen-libm-have-vector-test.sh auto-libm-test-out
$(make-target-directory)
$(PERL) gen-libm-test.pl -u $< -o "$(objpfx)"
+ $(SHELL) gen-libm-have-vector-test.sh > $(objpfx)libm-have-vector-test.h
@echo > $@
$(objpfx)test-float.o: $(objpfx)libm-test.stmp
b/math/gen-libm-have-vector-test.sh
new file mode 100644
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Copyright (C) 1999-2015 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+# Generate series of definitions used for vector math functions tests.
+# TEST_VECTOR_* and WRAPPER_NAME are defined in vector math functions tests.
+# *_VEC_SUFF is used in individual tests, as result of FUNC_TEST unfolding
+# to avoid warnings / errors about undeclared functions.
+print_defs()
+{
+ echo "#if defined TEST_VECTOR_$1 && TEST_VECTOR_$1"
+ echo "# define HAVE_VECTOR_$1 1"
+ echo "# define ${1}_VEC_SUFF WRAPPER_NAME ($1)"
+ echo "#else"
+ echo "# define HAVE_VECTOR_$1 0"
+ echo "# define ${1}_VEC_SUFF $1"
+ echo "#endif"
+ echo
+}
+
+for func in $(grep ALL_RM_TEST libm-test.inc | grep -v define | sed
-r "s/.*\(//; s/,.*//"); do
+ print_defs ${func}
+ print_defs ${func}f
+ print_defs ${func}l
+done
+
+# When all functions will use ALL_RM_TEST instead of using START directly,
+# this code can be removed.
+for func in $(grep 'START.*;$' libm-test.inc | sed -r "s/.*\(//; s/,.*//"); do
+ print_defs ${func}
+ print_defs ${func}f
+ print_defs ${func}l
+done
@@ -1699,11 +1699,16 @@ struct test_fFF_11_data
#define STR_CONCAT(a, b, c) __STRING (a##b##c)
#define STR_CON3(a, b, c) STR_CONCAT (a, b, c)
+/* This generated header defines series of macros started with HAVE_VECTOR_. */
+#include "libm-have-vector-test.h"
+
+#define HAVE_VECTOR(func) __CONCAT (HAVE_VECTOR_, func)
+
/* Start and end the tests for a given function. */
-#define START(FUNC, SUFF, EXACT) \
+#define START(FUN, SUFF, EXACT) \
CHECK_ARCH_EXT; \
- if (TEST_MATHVEC) return; \
- const char *this_func = STR_CON3 (FUNC, SUFF, VEC_SUFF); \
+ if (TEST_MATHVEC && !HAVE_VECTOR (FUNC (FUN))) return; \
+ const char *this_func = STR_CON3 (FUN, SUFF, VEC_SUFF); \
init_max_error (this_func, EXACT)
#define END \
print_max_error (this_func)
Here is the last part of changes regarding to libm-test.inc: addition of method for separation which exactly testing function needed to run with help of generated during make check header with series of conditional definitions. End of previous discussion is https://sourceware.org/ml/libc-alpha/2014-12/msg00062.html Ok for trunk? 2015-04-27 Andrew Senkevich <andrew.senkevich@intel.com> * math/gen-libm-have-vector-test.sh: Script generates series of macros for conditions in testing functions. * math/Makefile: Added call of libm-have-vector-test.sh. * math/libm-test.inc (HAVE_VECTOR): New macros. From be046dfec809a3777a3b52ef22926b7b2016e542 Mon Sep 17 00:00:00 2001 From: Andrew Senkevich <andrew.senkevich@intel.com> Date: Mon, 27 Apr 2015 15:36:37 +0300 Subject: [PATCH 3/5] Last part of changes regarding to libm-test.inc: addition of method for separation which exactly testing function needed to run with help of generated during make check header with series of conditional definitions. 2015-04-27 Andrew Senkevich <andrew.senkevich@intel.com> * math/gen-libm-have-vector-test.sh: Script generates series of macros for conditions in testing functions. * math/Makefile: Added call of libm-have-vector-test.sh. * math/libm-test.inc (HAVE_VECTOR): New macros. --- math/Makefile | 5 +++-- math/gen-libm-have-vector-test.sh | 47 +++++++++++++++++++++++++++++++++++++++ math/libm-test.inc | 11 ++++++--- 3 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 math/gen-libm-have-vector-test.sh