Skip to content

Commit

Permalink
Last part of changes regarding to libm-test.inc: addition
Browse files Browse the repository at this point in the history
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-05-14  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.
  • Loading branch information
Andrew Senkevich committed May 14, 2015
1 parent a6cdcd7 commit 58c50f0
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 5 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
2015-05-14 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/libm-test.inc: START refactored.
* math/test-double.c (TEST_MATHVEC): Add define.
* math/test-float.c: Likewise.
Expand Down
5 changes: 3 additions & 2 deletions math/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
47 changes: 47 additions & 0 deletions math/gen-libm-have-vector-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/sh
# Copyright (C) 2014-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
11 changes: 8 additions & 3 deletions math/libm-test.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 58c50f0

Please sign in to comment.