]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Refactor libm tests.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 24 Jun 2015 23:27:18 +0000 (23:27 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 24 Jun 2015 23:27:18 +0000 (23:27 +0000)
This patch refactors the libm tests using libm-test.inc to reduce the
level of duplicate definitions.  New headers are created for the
definitions shared by tests for a particular type; by tests of inline
functions; by tests of non-inline functions; by scalar tests; and by
vector tests.  The unused MATHCONST macro is removed.  A new macro
VEC_LEN is added to the vector headers to allow the macros defining
wrappers for vector functions to be defined once, instead of six times
each (differing only in vector length) as before.  There is still
scope for further refactoring, but this seems a useful start.

Tested for x86_64.

* math/test-double.h: New file.
* math/test-float.h: Likewise.
* math/test-ldouble.h: Likewise.
* math/test-math-inline.h: Likewise.
* math/test-math-no-inline.h: Likewise.
* math/test-math-scalar.h: Likewise.
* math/test-math-vector.h: Likewise.
* math/test-vec-loop.h: Remove file.  Contents moved into
test-math-vector.h.
* math/libm-test.inc (MATHCONST): Do not document macro.
* math/test-double.c: Include test-double.h, test-math-no-inline.h
and test-math-scalar.h.
(FUNC): Remove macro.
(FUNC_TEST): Likewise.
(FLOAT): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_DOUBLE): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
* math/test-float.c: Include test-float.h, test-math-no-inline.h
and test-math-scalar.h.
(FUNC): Remove macro.
(FUNC_TEST): Likewise.
(FLOAT): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_FLOAT): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
* math/test-idouble.c: Include test-double.h, test-math-inline.h
and test-math-scalar.h.
(FUNC): Remove macro.
(FUNC_TEST): Likewise.
(FLOAT): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_DOUBLE): Likewise.
(TEST_MATHVEC): Likewise.
(TEST_INLINE): Likewise.
(__NO_MATH_INLINES): Likewise.
* math/test-ifloat.c: Include test-float.h, test-math-inline.h and
test-math-scalar.h.
(FUNC): Remove macro.
(FUNC_TEST): Likewise.
(FLOAT): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_FLOAT): Likewise.
(TEST_MATHVEC): Likewise.
(TEST_INLINE): Likewise.
(__NO_MATH_INLINES): Likewise.
* math/test-ildoubl.c: Include test-ldouble.h, test-math-inline.h
and test-math-scalar.h.
(FUNC): Remove macro.
(FUNC_TEST): Likewise.
(FLOAT): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_LDOUBLE): Likewise.
(TEST_MATHVEC): Likewise.
(TEST_INLINE): Likewise.
(__NO_MATH_INLINES): Likewise.
* math/test-ldouble.c: Include test-ldouble.h,
test-math-no-inline.h and test-math-scalar.h.
(FUNC): Remove macro.
(FUNC_TEST): Likewise.
(FLOAT): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_LDOUBLE): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
* math/test-double-vlen2.h: Include test-double.h,
test-math-no-inline.h and test-math-vector.h.
(FLOAT): Remove macro.
(FUNC): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_DOUBLE): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
(CNCT): Likewise.
(CONCAT): Likewise.
(WRAPPER_NAME): Likewise.
(WRAPPER_DECL): Likewise.
(WRAPPER_DECL_ff): Likewise.
(WRAPPER_DECL_fFF): Likewise.
(VECTOR_WRAPPER): Likewise.
(VECTOR_WRAPPER_ff): Likewise.
(VECTOR_WRAPPER_fFF): Likewise.
(VEC_LEN): New macro.
* math/test-double-vlen4.h: Include test-double.h,
test-math-no-inline.h and test-math-vector.h.
(FLOAT): Remove macro.
(FUNC): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_DOUBLE): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
(CNCT): Likewise.
(CONCAT): Likewise.
(WRAPPER_NAME): Likewise.
(WRAPPER_DECL): Likewise.
(WRAPPER_DECL_ff): Likewise.
(WRAPPER_DECL_fFF): Likewise.
(VECTOR_WRAPPER): Likewise.
(VECTOR_WRAPPER_ff): Likewise.
(VECTOR_WRAPPER_fFF): Likewise.
(VEC_LEN): New macro.
* math/test-double-vlen8.h: Include test-double.h,
test-math-no-inline.h and test-math-vector.h.
(FLOAT): Remove macro.
(FUNC): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_DOUBLE): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
(CNCT): Likewise.
(CONCAT): Likewise.
(WRAPPER_NAME): Likewise.
(WRAPPER_DECL): Likewise.
(WRAPPER_DECL_ff): Likewise.
(WRAPPER_DECL_fFF): Likewise.
(VECTOR_WRAPPER): Likewise.
(VECTOR_WRAPPER_ff): Likewise.
(VECTOR_WRAPPER_fFF): Likewise.
(VEC_LEN): New macro.
* math/test-float-vlen4.h: Include test-float.h,
test-math-no-inline.h and test-math-vector.h.
(FLOAT): Remove macro.
(FUNC): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_FLOAT): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
(CNCT): Likewise.
(CONCAT): Likewise.
(WRAPPER_NAME): Likewise.
(WRAPPER_DECL): Likewise.
(WRAPPER_DECL_ff): Likewise.
(WRAPPER_DECL_fFF): Likewise.
(VECTOR_WRAPPER): Likewise.
(VECTOR_WRAPPER_ff): Likewise.
(VECTOR_WRAPPER_fFF): Likewise.
(VEC_LEN): New macro.
* math/test-float-vlen8.h: Include test-float.h,
test-math-no-inline.h and test-math-vector.h.
(FLOAT): Remove macro.
(FUNC): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_FLOAT): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
(CNCT): Likewise.
(CONCAT): Likewise.
(WRAPPER_NAME): Likewise.
(WRAPPER_DECL): Likewise.
(WRAPPER_DECL_ff): Likewise.
(WRAPPER_DECL_fFF): Likewise.
(VECTOR_WRAPPER): Likewise.
(VECTOR_WRAPPER_ff): Likewise.
(VECTOR_WRAPPER_fFF): Likewise.
(VEC_LEN): New macro.
* math/test-float-vlen16.h: Include test-float.h,
test-math-no-inline.h and test-math-vector.h.
(FLOAT): Remove macro.
(FUNC): Likewise.
(MATHCONST): Likewise.
(PRINTF_EXPR): Likewise.
(PRINTF_XEXPR): Likewise.
(PRINTF_NEXPR): Likewise.
(TEST_FLOAT): Likewise.
(TEST_MATHVEC): Likewise.
(__NO_MATH_INLINES): Likewise.
(CNCT): Likewise.
(CONCAT): Likewise.
(WRAPPER_NAME): Likewise.
(WRAPPER_DECL): Likewise.
(WRAPPER_DECL_ff): Likewise.
(WRAPPER_DECL_fFF): Likewise.
(VECTOR_WRAPPER): Likewise.
(VECTOR_WRAPPER_ff): Likewise.
(VECTOR_WRAPPER_fFF): Likewise.
(VEC_LEN): New macro.
* sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c: Do not include
test-vec-loop.h.
* sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c: Likewise.
* sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c: Likewise.
* sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c: Likewise.
* sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c: Likewise.

29 files changed:
ChangeLog
math/libm-test.inc
math/test-double-vlen2.h
math/test-double-vlen4.h
math/test-double-vlen8.h
math/test-double.c
math/test-double.h [new file with mode: 0644]
math/test-float-vlen16.h
math/test-float-vlen4.h
math/test-float-vlen8.h
math/test-float.c
math/test-float.h [new file with mode: 0644]
math/test-idouble.c
math/test-ifloat.c
math/test-ildoubl.c
math/test-ldouble.c
math/test-ldouble.h [new file with mode: 0644]
math/test-math-inline.h [moved from math/test-vec-loop.h with 50% similarity]
math/test-math-no-inline.h [new file with mode: 0644]
math/test-math-scalar.h [new file with mode: 0644]
math/test-math-vector.h [new file with mode: 0644]
sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c
sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c
sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c
sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c
sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c
sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c
sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c
sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c

index 333b69048c4f2e64156a7ce752bd37c45d65e7cf..97fbe48627b5d99896e1d05e4f01fc85526f1e1b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,226 @@
+2015-06-24  Joseph Myers  <joseph@codesourcery.com>
+
+       * math/test-double.h: New file.
+       * math/test-float.h: Likewise.
+       * math/test-ldouble.h: Likewise.
+       * math/test-math-inline.h: Likewise.
+       * math/test-math-no-inline.h: Likewise.
+       * math/test-math-scalar.h: Likewise.
+       * math/test-math-vector.h: Likewise.
+       * math/test-vec-loop.h: Remove file.  Contents moved into
+       test-math-vector.h.
+       * math/libm-test.inc (MATHCONST): Do not document macro.
+       * math/test-double.c: Include test-double.h, test-math-no-inline.h
+       and test-math-scalar.h.
+       (FUNC): Remove macro.
+       (FUNC_TEST): Likewise.
+       (FLOAT): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_DOUBLE): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       * math/test-float.c: Include test-float.h, test-math-no-inline.h
+       and test-math-scalar.h.
+       (FUNC): Remove macro.
+       (FUNC_TEST): Likewise.
+       (FLOAT): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_FLOAT): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       * math/test-idouble.c: Include test-double.h, test-math-inline.h
+       and test-math-scalar.h.
+       (FUNC): Remove macro.
+       (FUNC_TEST): Likewise.
+       (FLOAT): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_DOUBLE): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (TEST_INLINE): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       * math/test-ifloat.c: Include test-float.h, test-math-inline.h and
+       test-math-scalar.h.
+       (FUNC): Remove macro.
+       (FUNC_TEST): Likewise.
+       (FLOAT): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_FLOAT): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (TEST_INLINE): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       * math/test-ildoubl.c: Include test-ldouble.h, test-math-inline.h
+       and test-math-scalar.h.
+       (FUNC): Remove macro.
+       (FUNC_TEST): Likewise.
+       (FLOAT): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_LDOUBLE): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (TEST_INLINE): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       * math/test-ldouble.c: Include test-ldouble.h,
+       test-math-no-inline.h and test-math-scalar.h.
+       (FUNC): Remove macro.
+       (FUNC_TEST): Likewise.
+       (FLOAT): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_LDOUBLE): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       * math/test-double-vlen2.h: Include test-double.h,
+       test-math-no-inline.h and test-math-vector.h.
+       (FLOAT): Remove macro.
+       (FUNC): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_DOUBLE): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       (CNCT): Likewise.
+       (CONCAT): Likewise.
+       (WRAPPER_NAME): Likewise.
+       (WRAPPER_DECL): Likewise.
+       (WRAPPER_DECL_ff): Likewise.
+       (WRAPPER_DECL_fFF): Likewise.
+       (VECTOR_WRAPPER): Likewise.
+       (VECTOR_WRAPPER_ff): Likewise.
+       (VECTOR_WRAPPER_fFF): Likewise.
+       (VEC_LEN): New macro.
+       * math/test-double-vlen4.h: Include test-double.h,
+       test-math-no-inline.h and test-math-vector.h.
+       (FLOAT): Remove macro.
+       (FUNC): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_DOUBLE): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       (CNCT): Likewise.
+       (CONCAT): Likewise.
+       (WRAPPER_NAME): Likewise.
+       (WRAPPER_DECL): Likewise.
+       (WRAPPER_DECL_ff): Likewise.
+       (WRAPPER_DECL_fFF): Likewise.
+       (VECTOR_WRAPPER): Likewise.
+       (VECTOR_WRAPPER_ff): Likewise.
+       (VECTOR_WRAPPER_fFF): Likewise.
+       (VEC_LEN): New macro.
+       * math/test-double-vlen8.h: Include test-double.h,
+       test-math-no-inline.h and test-math-vector.h.
+       (FLOAT): Remove macro.
+       (FUNC): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_DOUBLE): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       (CNCT): Likewise.
+       (CONCAT): Likewise.
+       (WRAPPER_NAME): Likewise.
+       (WRAPPER_DECL): Likewise.
+       (WRAPPER_DECL_ff): Likewise.
+       (WRAPPER_DECL_fFF): Likewise.
+       (VECTOR_WRAPPER): Likewise.
+       (VECTOR_WRAPPER_ff): Likewise.
+       (VECTOR_WRAPPER_fFF): Likewise.
+       (VEC_LEN): New macro.
+       * math/test-float-vlen4.h: Include test-float.h,
+       test-math-no-inline.h and test-math-vector.h.
+       (FLOAT): Remove macro.
+       (FUNC): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_FLOAT): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       (CNCT): Likewise.
+       (CONCAT): Likewise.
+       (WRAPPER_NAME): Likewise.
+       (WRAPPER_DECL): Likewise.
+       (WRAPPER_DECL_ff): Likewise.
+       (WRAPPER_DECL_fFF): Likewise.
+       (VECTOR_WRAPPER): Likewise.
+       (VECTOR_WRAPPER_ff): Likewise.
+       (VECTOR_WRAPPER_fFF): Likewise.
+       (VEC_LEN): New macro.
+       * math/test-float-vlen8.h: Include test-float.h,
+       test-math-no-inline.h and test-math-vector.h.
+       (FLOAT): Remove macro.
+       (FUNC): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_FLOAT): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       (CNCT): Likewise.
+       (CONCAT): Likewise.
+       (WRAPPER_NAME): Likewise.
+       (WRAPPER_DECL): Likewise.
+       (WRAPPER_DECL_ff): Likewise.
+       (WRAPPER_DECL_fFF): Likewise.
+       (VECTOR_WRAPPER): Likewise.
+       (VECTOR_WRAPPER_ff): Likewise.
+       (VECTOR_WRAPPER_fFF): Likewise.
+       (VEC_LEN): New macro.
+       * math/test-float-vlen16.h: Include test-float.h,
+       test-math-no-inline.h and test-math-vector.h.
+       (FLOAT): Remove macro.
+       (FUNC): Likewise.
+       (MATHCONST): Likewise.
+       (PRINTF_EXPR): Likewise.
+       (PRINTF_XEXPR): Likewise.
+       (PRINTF_NEXPR): Likewise.
+       (TEST_FLOAT): Likewise.
+       (TEST_MATHVEC): Likewise.
+       (__NO_MATH_INLINES): Likewise.
+       (CNCT): Likewise.
+       (CONCAT): Likewise.
+       (WRAPPER_NAME): Likewise.
+       (WRAPPER_DECL): Likewise.
+       (WRAPPER_DECL_ff): Likewise.
+       (WRAPPER_DECL_fFF): Likewise.
+       (VECTOR_WRAPPER): Likewise.
+       (VECTOR_WRAPPER_ff): Likewise.
+       (VECTOR_WRAPPER_fFF): Likewise.
+       (VEC_LEN): New macro.
+       * sysdeps/x86_64/fpu/test-double-vlen2-wrappers.c: Do not include
+       test-vec-loop.h.
+       * sysdeps/x86_64/fpu/test-double-vlen4-wrappers.c: Likewise.
+       * sysdeps/x86_64/fpu/test-double-vlen4-avx2-wrappers.c: Likewise.
+       * sysdeps/x86_64/fpu/test-double-vlen8-wrappers.c: Likewise.
+       * sysdeps/x86_64/fpu/test-float-vlen4-wrappers.c: Likewise.
+       * sysdeps/x86_64/fpu/test-float-vlen8-wrappers.c: Likewise.
+       * sysdeps/x86_64/fpu/test-float-vlen8-avx2-wrappers.c: Likewise.
+       * sysdeps/x86_64/fpu/test-float-vlen16-wrappers.c: Likewise.
+
 2015-06-24  Roland McGrath  <roland@hack.frob.com>
 
        * sysdeps/nacl/glob.c (getlogin_r): Macro renamed to ...
index 49871618f07aaccafe4e7f2b07d14037690854a1..da8f8caec48a981ed30c0991f763396356eaeb00 100644 (file)
@@ -24,7 +24,6 @@
    Macros:
    FUNC(function): converts general function name (like cos) to
    name with correct suffix (e.g. cosl or cosf)
-   MATHCONST(x):   like FUNC but for constants (e.g convert 0.0 to 0.0L)
    FLOAT:         floating point type to test
    - TEST_MSG:    informal message to be displayed
    CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat):
index 3f117e510f3d578acdccdc57e887ebc5444533b3..47d1fddc57d45abb411b0136f454a6cd88a6e94d 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FLOAT double
-#define FUNC(function) function
+#include "test-double.h"
+#include "test-math-no-inline.h"
+#include "test-math-vector.h"
+
 #define TEST_MSG "testing double vector math (without inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cdouble
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_DOUBLE 1
-#define TEST_MATHVEC 1
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #define EXCEPTION_TESTS_double 0
 #define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST)
 
-#define CNCT(x, y) x ## y
-#define CONCAT(a, b) CNCT (a, b)
-
 #define VEC_SUFF _vlen2
-#define WRAPPER_NAME(function) CONCAT (function, VEC_SUFF)
+#define VEC_LEN 2
 
 #define FUNC_TEST(function) function ## _VEC_SUFF
-
-#define WRAPPER_DECL(function) extern FLOAT function (FLOAT);
-#define WRAPPER_DECL_ff(function) extern FLOAT function (FLOAT, FLOAT);
-#define WRAPPER_DECL_fFF(function) extern void function (FLOAT, FLOAT *, FLOAT *);
-
-// Wrapper from scalar to vector function with vector length 2.
-#define VECTOR_WRAPPER(scalar_func, vector_func) \
-extern VEC_TYPE vector_func (VEC_TYPE);                \
-FLOAT scalar_func (FLOAT x)                    \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx;                                 \
-  INIT_VEC_LOOP (mx, x, 2);                    \
-  VEC_TYPE mr = vector_func (mx);              \
-  TEST_VEC_LOOP (mr, 2);                       \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 2 argument function to vector one.
-#define VECTOR_WRAPPER_ff(scalar_func, vector_func)    \
-extern VEC_TYPE vector_func (VEC_TYPE, VEC_TYPE);      \
-FLOAT scalar_func (FLOAT x, FLOAT y)           \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, my;                             \
-  INIT_VEC_LOOP (mx, x, 2);                    \
-  INIT_VEC_LOOP (my, y, 2);                    \
-  VEC_TYPE mr = vector_func (mx, my);          \
-  TEST_VEC_LOOP (mr, 2);                       \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 3 argument function to vector one.
-#define VECTOR_WRAPPER_fFF(scalar_func, vector_func)   \
-extern void vector_func (VEC_TYPE, VEC_TYPE *, VEC_TYPE *);    \
-void scalar_func (FLOAT x, FLOAT * r, FLOAT * r1)              \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, mr, mr1;                                \
-  INIT_VEC_LOOP (mx, x, 2);                    \
-  vector_func (mx, &mr, &mr1);                 \
-  TEST_VEC_LOOP (mr, 2);                       \
-  TEST_VEC_LOOP (mr1, 2);                      \
-  *r = (FLOAT) mr[0];                          \
-  *r1 = (FLOAT) mr1[0];                                \
-  return;                                      \
-}
index ffaba6916ef7b2cc49380df97b5a619a35137ba0..59a374c0ae579d7b8b8b602801f5be390c1e1c50 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FLOAT double
-#define FUNC(function) function
+#include "test-double.h"
+#include "test-math-no-inline.h"
+#include "test-math-vector.h"
+
 #define TEST_MSG "testing double vector math (without inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cdouble
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_DOUBLE 1
-#define TEST_MATHVEC 1
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #define EXCEPTION_TESTS_double 0
 #define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST)
 
-#define CNCT(x, y) x ## y
-#define CONCAT(a, b) CNCT (a, b)
-
 #define VEC_SUFF _vlen4
-#define WRAPPER_NAME(function) CONCAT (function, VEC_SUFF)
+#define VEC_LEN 4
 
 #define FUNC_TEST(function) function ## _VEC_SUFF
-
-#define WRAPPER_DECL(function) extern FLOAT function (FLOAT);
-#define WRAPPER_DECL_ff(function) extern FLOAT function (FLOAT, FLOAT);
-#define WRAPPER_DECL_fFF(function) extern void function (FLOAT, FLOAT *, FLOAT *);
-
-// Wrapper from scalar to vector function with vector length 4.
-#define VECTOR_WRAPPER(scalar_func, vector_func) \
-extern VEC_TYPE vector_func (VEC_TYPE);                \
-FLOAT scalar_func (FLOAT x)                    \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx;                                 \
-  INIT_VEC_LOOP (mx, x, 4);                    \
-  VEC_TYPE mr = vector_func (mx);              \
-  TEST_VEC_LOOP (mr, 4);                       \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 2 argument function to vector one.
-#define VECTOR_WRAPPER_ff(scalar_func, vector_func)    \
-extern VEC_TYPE vector_func (VEC_TYPE, VEC_TYPE);      \
-FLOAT scalar_func (FLOAT x, FLOAT y)           \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, my;                             \
-  INIT_VEC_LOOP (mx, x, 4);                    \
-  INIT_VEC_LOOP (my, y, 4);                    \
-  VEC_TYPE mr = vector_func (mx, my);          \
-  TEST_VEC_LOOP (mr, 4);                       \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 3 argument function to vector one.
-#define VECTOR_WRAPPER_fFF(scalar_func, vector_func)   \
-extern void vector_func (VEC_TYPE, VEC_TYPE *, VEC_TYPE *);    \
-void scalar_func (FLOAT x, FLOAT * r, FLOAT * r1)              \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, mr, mr1;                                \
-  INIT_VEC_LOOP (mx, x, 4);                    \
-  vector_func (mx, &mr, &mr1);                 \
-  TEST_VEC_LOOP (mr, 4);                       \
-  TEST_VEC_LOOP (mr1, 4);                      \
-  *r = (FLOAT) mr[0];                          \
-  *r1 = (FLOAT) mr1[0];                                \
-  return;                                      \
-}
index bdfccbb4ff0980957dd8545c6eac57c8bc66186d..a780aa66580856e542fccc0b9ae85e7b001050f6 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FLOAT double
-#define FUNC(function) function
+#include "test-double.h"
+#include "test-math-no-inline.h"
+#include "test-math-vector.h"
+
 #define TEST_MSG "testing double vector math (without inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cdouble
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_DOUBLE 1
-#define TEST_MATHVEC 1
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #define EXCEPTION_TESTS_double 0
 #define ROUNDING_TESTS_double(MODE) ((MODE) == FE_TONEAREST)
 
-#define CNCT(x, y) x ## y
-#define CONCAT(a, b) CNCT (a, b)
-
 #define VEC_SUFF _vlen8
-#define WRAPPER_NAME(function) CONCAT (function, VEC_SUFF)
+#define VEC_LEN 8
 
 #define FUNC_TEST(function) function ## _VEC_SUFF
-
-#define WRAPPER_DECL(function) extern FLOAT function (FLOAT);
-#define WRAPPER_DECL_ff(function) extern FLOAT function (FLOAT, FLOAT);
-#define WRAPPER_DECL_fFF(function) extern void function (FLOAT, FLOAT *, FLOAT *);
-
-// Wrapper from scalar to vector function with vector length 8.
-#define VECTOR_WRAPPER(scalar_func, vector_func) \
-extern VEC_TYPE vector_func (VEC_TYPE);                \
-FLOAT scalar_func (FLOAT x)                    \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx;                                 \
-  INIT_VEC_LOOP (mx, x, 8);                    \
-  VEC_TYPE mr = vector_func (mx);              \
-  TEST_VEC_LOOP (mr, 8);                       \
-  return ((FLOAT) mr[0]);                       \
-}
-
-// Wrapper from scalar 2 argument function to vector one.
-#define VECTOR_WRAPPER_ff(scalar_func, vector_func)    \
-extern VEC_TYPE vector_func (VEC_TYPE, VEC_TYPE);      \
-FLOAT scalar_func (FLOAT x, FLOAT y)           \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, my;                             \
-  INIT_VEC_LOOP (mx, x, 8);                    \
-  INIT_VEC_LOOP (my, y, 8);                    \
-  VEC_TYPE mr = vector_func (mx, my);          \
-  TEST_VEC_LOOP (mr, 8);                       \
-  return ((FLOAT) mr[0]);                       \
-}
-
-// Wrapper from scalar 3 argument function to vector one.
-#define VECTOR_WRAPPER_fFF(scalar_func, vector_func)   \
-extern void vector_func (VEC_TYPE, VEC_TYPE *, VEC_TYPE *);    \
-void scalar_func (FLOAT x, FLOAT * r, FLOAT * r1)              \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, mr, mr1;                                \
-  INIT_VEC_LOOP (mx, x, 8);                    \
-  vector_func (mx, &mr, &mr1);                 \
-  TEST_VEC_LOOP (mr, 8);                       \
-  TEST_VEC_LOOP (mr1, 8);                      \
-  *r = (FLOAT) mr[0];                          \
-  *r1 = (FLOAT) mr1[0];                                \
-  return;                                      \
-}
index 6c1c11c923240181a82f78bf78a9dbe3c8108ff4..b62e433f17057d57f0d6e6e4faabc87c1039e4c1 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FUNC(function) function
-#define FUNC_TEST(function) FUNC (function)
-#define FLOAT double
+#include "test-double.h"
+#include "test-math-no-inline.h"
+#include "test-math-scalar.h"
+
 #define TEST_MSG "testing double (without inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cdouble
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_DOUBLE 1
-#define TEST_MATHVEC 0
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #include "libm-test.c"
diff --git a/math/test-double.h b/math/test-double.h
new file mode 100644 (file)
index 0000000..3f2c008
--- /dev/null
@@ -0,0 +1,24 @@
+/* Common definitions for libm tests for double.
+   Copyright (C) 1997-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/>.  */
+
+#define FUNC(function) function
+#define FLOAT double
+#define PRINTF_EXPR "e"
+#define PRINTF_XEXPR "a"
+#define PRINTF_NEXPR "f"
+#define TEST_DOUBLE 1
index b1890f3740f3bd5e277d57b1f063bd8597012284..c9c77703153c223f14bd6c7b04bb4047f4a318f2 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FLOAT float
-#define FUNC(function) function ## f
+#include "test-float.h"
+#include "test-math-no-inline.h"
+#include "test-math-vector.h"
+
 #define TEST_MSG "testing float vector math (without inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cfloat
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_FLOAT 1
-#define TEST_MATHVEC 1
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #define EXCEPTION_TESTS_float 0
 #define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST)
 
-#define CNCT(x, y) x ## y
-#define CONCAT(a, b) CNCT (a, b)
-
 #define VEC_SUFF _vlen16
-#define WRAPPER_NAME(function) CONCAT (function, VEC_SUFF)
+#define VEC_LEN 16
 
 #define FUNC_TEST(function) function ## f ## _VEC_SUFF
-
-#define WRAPPER_DECL(func) extern FLOAT func (FLOAT x);
-#define WRAPPER_DECL_ff(func) extern FLOAT func (FLOAT x, FLOAT y);
-#define WRAPPER_DECL_fFF(function) extern void function (FLOAT, FLOAT *, FLOAT *);
-
-// Wrapper from scalar to vector function with vector length 16.
-#define VECTOR_WRAPPER(scalar_func, vector_func) \
-extern VEC_TYPE vector_func (VEC_TYPE);                \
-FLOAT scalar_func (FLOAT x)                    \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx;                                 \
-  INIT_VEC_LOOP (mx, x, 16);                   \
-  VEC_TYPE mr = vector_func (mx);              \
-  TEST_VEC_LOOP (mr, 16);                      \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 2 argument function to vector one.
-#define VECTOR_WRAPPER_ff(scalar_func, vector_func)    \
-extern VEC_TYPE vector_func (VEC_TYPE, VEC_TYPE);      \
-FLOAT scalar_func (FLOAT x, FLOAT y)           \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, my;                             \
-  INIT_VEC_LOOP (mx, x, 16);                   \
-  INIT_VEC_LOOP (my, y, 16);                   \
-  VEC_TYPE mr = vector_func (mx, my);          \
-  TEST_VEC_LOOP (mr, 16);                      \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 3 argument function to vector one.
-#define VECTOR_WRAPPER_fFF(scalar_func, vector_func)   \
-extern void vector_func (VEC_TYPE, VEC_TYPE *, VEC_TYPE *);    \
-void scalar_func (FLOAT x, FLOAT * r, FLOAT * r1)              \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, mr, mr1;                                \
-  INIT_VEC_LOOP (mx, x, 16);                   \
-  vector_func (mx, &mr, &mr1);                 \
-  TEST_VEC_LOOP (mr, 16);                      \
-  TEST_VEC_LOOP (mr1, 16);                     \
-  *r = (FLOAT) mr[0];                          \
-  *r1 = (FLOAT) mr1[0];                                \
-  return;                                      \
-}
index 213ae78e7184f5c6f08771cbe799363c24dd28ed..463e277d3629d978ad653ecb0c11b630624aa8bc 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FLOAT float
-#define FUNC(function) function ## f
+#include "test-float.h"
+#include "test-math-no-inline.h"
+#include "test-math-vector.h"
+
 #define TEST_MSG "testing float vector math (without inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cfloat
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_FLOAT 1
-#define TEST_MATHVEC 1
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #define EXCEPTION_TESTS_float 0
 #define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST)
 
-#define CNCT(x, y) x ## y
-#define CONCAT(a, b) CNCT (a, b)
-
 #define VEC_SUFF _vlen4
-#define WRAPPER_NAME(function) CONCAT (function, VEC_SUFF)
+#define VEC_LEN 4
 
 #define FUNC_TEST(function) function ## f ## _VEC_SUFF
-
-#define WRAPPER_DECL(function) extern FLOAT function (FLOAT);
-#define WRAPPER_DECL_ff(function) extern FLOAT function (FLOAT, FLOAT);
-#define WRAPPER_DECL_fFF(function) extern void function (FLOAT, FLOAT *, FLOAT *);
-
-// Wrapper from scalar to vector function with vector length 4.
-#define VECTOR_WRAPPER(scalar_func, vector_func) \
-extern VEC_TYPE vector_func (VEC_TYPE);                \
-FLOAT scalar_func (FLOAT x)                    \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx;                                 \
-  INIT_VEC_LOOP (mx, x, 4);                    \
-  VEC_TYPE mr = vector_func (mx);              \
-  TEST_VEC_LOOP (mr, 4);                       \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 2 argument function to vector one.
-#define VECTOR_WRAPPER_ff(scalar_func, vector_func)    \
-extern VEC_TYPE vector_func (VEC_TYPE, VEC_TYPE);      \
-FLOAT scalar_func (FLOAT x, FLOAT y)           \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, my;                             \
-  INIT_VEC_LOOP (mx, x, 4);                    \
-  INIT_VEC_LOOP (my, y, 4);                    \
-  VEC_TYPE mr = vector_func (mx, my);          \
-  TEST_VEC_LOOP (mr, 4);                       \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 3 argument function to vector one.
-#define VECTOR_WRAPPER_fFF(scalar_func, vector_func)   \
-extern void vector_func (VEC_TYPE, VEC_TYPE *, VEC_TYPE *);    \
-void scalar_func (FLOAT x, FLOAT * r, FLOAT * r1)              \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, mr, mr1;                                \
-  INIT_VEC_LOOP (mx, x, 4);                    \
-  vector_func (mx, &mr, &mr1);                 \
-  TEST_VEC_LOOP (mr, 4);                       \
-  TEST_VEC_LOOP (mr1, 4);                      \
-  *r = (FLOAT) mr[0];                          \
-  *r1 = (FLOAT) mr1[0];                                \
-  return;                                      \
-}
index dd2fb287adb9d8ba30e3bb6d276285d9ed7694aa..6dd6a9f5e01243651b477caaf5dcc64b0892001d 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FLOAT float
-#define FUNC(function) function ## f
+#include "test-float.h"
+#include "test-math-no-inline.h"
+#include "test-math-vector.h"
+
 #define TEST_MSG "testing float vector math (without inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cfloat
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_FLOAT 1
-#define TEST_MATHVEC 1
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #define EXCEPTION_TESTS_float 0
 #define ROUNDING_TESTS_float(MODE) ((MODE) == FE_TONEAREST)
 
-#define CNCT(x, y) x ## y
-#define CONCAT(a, b) CNCT (a, b)
-
 #define VEC_SUFF _vlen8
-#define WRAPPER_NAME(function) CONCAT (function, VEC_SUFF)
+#define VEC_LEN 8
 
 #define FUNC_TEST(function) function ## f ## _VEC_SUFF
-
-#define WRAPPER_DECL(function) extern FLOAT function (FLOAT);
-#define WRAPPER_DECL_ff(function) extern FLOAT function (FLOAT, FLOAT);
-#define WRAPPER_DECL_fFF(function) extern void function (FLOAT, FLOAT *, FLOAT *);
-
-// Wrapper from scalar to vector function with vector length 8.
-#define VECTOR_WRAPPER(scalar_func, vector_func) \
-extern VEC_TYPE vector_func (VEC_TYPE);                \
-FLOAT scalar_func (FLOAT x)                    \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx;                                 \
-  INIT_VEC_LOOP (mx, x, 8);                    \
-  VEC_TYPE mr = vector_func (mx);              \
-  TEST_VEC_LOOP (mr, 8);                       \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 2 argument function to vector one.
-#define VECTOR_WRAPPER_ff(scalar_func, vector_func)    \
-extern VEC_TYPE vector_func (VEC_TYPE, VEC_TYPE);      \
-FLOAT scalar_func (FLOAT x, FLOAT y)           \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, my;                             \
-  INIT_VEC_LOOP (mx, x, 8);                    \
-  INIT_VEC_LOOP (my, y, 8);                    \
-  VEC_TYPE mr = vector_func (mx, my);          \
-  TEST_VEC_LOOP (mr, 8);                       \
-  return ((FLOAT) mr[0]);                      \
-}
-
-// Wrapper from scalar 3 argument function to vector one.
-#define VECTOR_WRAPPER_fFF(scalar_func, vector_func)   \
-extern void vector_func (VEC_TYPE, VEC_TYPE *, VEC_TYPE *);    \
-void scalar_func (FLOAT x, FLOAT * r, FLOAT * r1)              \
-{                                              \
-  int i;                                       \
-  VEC_TYPE mx, mr, mr1;                                \
-  INIT_VEC_LOOP (mx, x, 8);                    \
-  vector_func (mx, &mr, &mr1);                 \
-  TEST_VEC_LOOP (mr, 8);                       \
-  TEST_VEC_LOOP (mr1, 8);                      \
-  *r = (FLOAT) mr[0];                          \
-  *r1 = (FLOAT) mr1[0];                                \
-  return;                                      \
-}
index 07dc8eacd6cdf3cd16a283bba4094eb6186168a1..b6a41c0e93560e18df0a8a5aaa77fba02f843884 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FUNC(function) function ## f
-#define FUNC_TEST(function) FUNC (function)
-#define FLOAT float
+#include "test-float.h"
+#include "test-math-no-inline.h"
+#include "test-math-scalar.h"
+
 #define TEST_MSG "testing float (without inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cfloat
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_FLOAT 1
-#define TEST_MATHVEC 0
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #include "libm-test.c"
diff --git a/math/test-float.h b/math/test-float.h
new file mode 100644 (file)
index 0000000..7b00cb1
--- /dev/null
@@ -0,0 +1,24 @@
+/* Common definitions for libm tests for float.
+   Copyright (C) 1997-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/>.  */
+
+#define FUNC(function) function ## f
+#define FLOAT float
+#define PRINTF_EXPR "e"
+#define PRINTF_XEXPR "a"
+#define PRINTF_NEXPR "f"
+#define TEST_FLOAT 1
index bb73f9c7c2fe2a13c155ff1e46b163788703e8a0..48e6965ba3b9ec7b98134de580546ffefe2ceaa2 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FUNC(function) function
-#define FUNC_TEST(function) FUNC (function)
-#define FLOAT double
+#include "test-double.h"
+#include "test-math-inline.h"
+#include "test-math-scalar.h"
+
 #define TEST_MSG "testing double (inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinedouble
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_DOUBLE 1
-#define TEST_MATHVEC 0
-#define TEST_INLINE
-
-#ifdef __NO_MATH_INLINES
-# undef __NO_MATH_INLINES
-#endif
 
 #include "libm-test.c"
index 74e8e4b1b8980613d7b1ddf9fbc239711bfc8987..4b1bc405b8f24a41debfb76d22e7a810d2784d74 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FUNC(function) function ## f
-#define FUNC_TEST(function) FUNC (function)
-#define FLOAT float
+#include "test-float.h"
+#include "test-math-inline.h"
+#include "test-math-scalar.h"
+
 #define TEST_MSG "testing float (inline functions)\n"
-#define MATHCONST(x) x
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinefloat
-#define PRINTF_EXPR "e"
-#define PRINTF_XEXPR "a"
-#define PRINTF_NEXPR "f"
-#define TEST_FLOAT 1
-#define TEST_MATHVEC 0
-#define TEST_INLINE 1
-
-#ifdef __NO_MATH_INLINES
-# undef __NO_MATH_INLINES
-#endif
 
 #include "libm-test.c"
index f90a9baff00cda0c44ddd24688167e945bfe16ee..847d8abfaf3bfd49493897826ccfe7fb12e5ce80 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FUNC(function) function##l
-#define FUNC_TEST(function) FUNC (function)
-#define FLOAT long double
+#include "test-ldouble.h"
+#include "test-math-inline.h"
+#include "test-math-scalar.h"
+
 #define TEST_MSG "testing long double (inline functions)\n"
-#define MATHCONST(x) x##L
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Cinlinelongdouble
-#define PRINTF_EXPR "Le"
-#define PRINTF_XEXPR "La"
-#define PRINTF_NEXPR "Lf"
-#define TEST_INLINE
-#define TEST_LDOUBLE 1
-#define TEST_MATHVEC 0
-
-#ifdef __NO_MATH_INLINES
-# undef __NO_MATH_INLINES
-#endif
 
 #include "libm-test.c"
index 97effb69e148a78b79bafdb28db4105453a45bd0..6820c5d1fea3c90ff9298d66af3ea337e8845933 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define FUNC(function) function##l
-#define FUNC_TEST(function) FUNC (function)
-#define FLOAT long double
+#include "test-ldouble.h"
+#include "test-math-no-inline.h"
+#include "test-math-scalar.h"
+
 #define TEST_MSG "testing long double (without inline functions)\n"
-#define MATHCONST(x) x##L
 #define CHOOSE(Clongdouble,Cdouble,Cfloat,Cinlinelongdouble,Cinlinedouble,Cinlinefloat) Clongdouble
-#define PRINTF_EXPR "Le"
-#define PRINTF_XEXPR "La"
-#define PRINTF_NEXPR "Lf"
-#define TEST_LDOUBLE 1
-#define TEST_MATHVEC 0
-
-#ifndef __NO_MATH_INLINES
-# define __NO_MATH_INLINES
-#endif
 
 #include "libm-test.c"
diff --git a/math/test-ldouble.h b/math/test-ldouble.h
new file mode 100644 (file)
index 0000000..e42b2bd
--- /dev/null
@@ -0,0 +1,24 @@
+/* Common definitions for libm tests for long double.
+   Copyright (C) 1997-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/>.  */
+
+#define FUNC(function) function##l
+#define FLOAT long double
+#define PRINTF_EXPR "Le"
+#define PRINTF_XEXPR "La"
+#define PRINTF_NEXPR "Lf"
+#define TEST_LDOUBLE 1
similarity index 50%
rename from math/test-vec-loop.h
rename to math/test-math-inline.h
index 66d7692c2281d5957752317e4aadce678f396af1..d778cc74d9e4b7f1340694cff47fd4dc623350ed 100644 (file)
@@ -1,5 +1,5 @@
-/* Loop macro used in vector math functions tests.
-   Copyright (C) 2014-2015 Free Software Foundation, Inc.
+/* Common definitions for libm tests for inline functions.
+   Copyright (C) 1997-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
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* This macro is used in VECTOR_WRAPPER macros for vector tests.  */
-#define TEST_VEC_LOOP(vec, len)                                \
-  do                                                           \
-    {                                                          \
-      for (i = 1; i < len; i++)                                        \
-        {                                                      \
-          if ((FLOAT) vec[0] != (FLOAT) vec[i])                        \
-            {                                                  \
-              vec[0] = (FLOAT) vec[0] + 0.1;                   \
-             break;                                            \
-            }                                                  \
-        }                                                      \
-    }                                                          \
-  while (0)
+#define TEST_INLINE
 
-#define INIT_VEC_LOOP(vec, val, len)                           \
-  do                                                           \
-    {                                                          \
-      for (i = 0; i < len; i++)                                        \
-        {                                                      \
-          vec[i] = val;                                                \
-        }                                                      \
-    }                                                          \
-  while (0)
+#ifdef __NO_MATH_INLINES
+# undef __NO_MATH_INLINES
+#endif
diff --git a/math/test-math-no-inline.h b/math/test-math-no-inline.h
new file mode 100644 (file)
index 0000000..ad765da
--- /dev/null
@@ -0,0 +1,21 @@
+/* Common definitions for libm tests for non-inline functions.
+   Copyright (C) 1997-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/>.  */
+
+#ifndef __NO_MATH_INLINES
+# define __NO_MATH_INLINES
+#endif
diff --git a/math/test-math-scalar.h b/math/test-math-scalar.h
new file mode 100644 (file)
index 0000000..1e4805a
--- /dev/null
@@ -0,0 +1,20 @@
+/* Common definitions for libm tests for scalar functions.
+   Copyright (C) 1997-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/>.  */
+
+#define FUNC_TEST(function) FUNC (function)
+#define TEST_MATHVEC 0
diff --git a/math/test-math-vector.h b/math/test-math-vector.h
new file mode 100644 (file)
index 0000000..1b74841
--- /dev/null
@@ -0,0 +1,96 @@
+/* Common definitions for libm tests for vector functions.
+   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/>.  */
+
+#define TEST_MATHVEC 1
+
+#define CNCT(x, y) x ## y
+#define CONCAT(a, b) CNCT (a, b)
+
+#define WRAPPER_NAME(function) CONCAT (function, VEC_SUFF)
+
+/* This macro is used in VECTOR_WRAPPER macros for vector tests.  */
+#define TEST_VEC_LOOP(vec, len)                                \
+  do                                                           \
+    {                                                          \
+      for (i = 1; i < len; i++)                                        \
+        {                                                      \
+          if ((FLOAT) vec[0] != (FLOAT) vec[i])                        \
+            {                                                  \
+              vec[0] = (FLOAT) vec[0] + 0.1;                   \
+             break;                                            \
+            }                                                  \
+        }                                                      \
+    }                                                          \
+  while (0)
+
+#define INIT_VEC_LOOP(vec, val, len)                           \
+  do                                                           \
+    {                                                          \
+      for (i = 0; i < len; i++)                                        \
+        {                                                      \
+          vec[i] = val;                                                \
+        }                                                      \
+    }                                                          \
+  while (0)
+
+#define WRAPPER_DECL(function) extern FLOAT function (FLOAT);
+#define WRAPPER_DECL_ff(function) extern FLOAT function (FLOAT, FLOAT);
+#define WRAPPER_DECL_fFF(function) extern void function (FLOAT, FLOAT *, FLOAT *);
+
+/* Wrapper from scalar to vector function.  */
+#define VECTOR_WRAPPER(scalar_func, vector_func) \
+extern VEC_TYPE vector_func (VEC_TYPE);                \
+FLOAT scalar_func (FLOAT x)                    \
+{                                              \
+  int i;                                       \
+  VEC_TYPE mx;                                 \
+  INIT_VEC_LOOP (mx, x, VEC_LEN);              \
+  VEC_TYPE mr = vector_func (mx);              \
+  TEST_VEC_LOOP (mr, VEC_LEN);                 \
+  return ((FLOAT) mr[0]);                      \
+}
+
+/* Wrapper from scalar 2 argument function to vector one.  */
+#define VECTOR_WRAPPER_ff(scalar_func, vector_func)    \
+extern VEC_TYPE vector_func (VEC_TYPE, VEC_TYPE);      \
+FLOAT scalar_func (FLOAT x, FLOAT y)           \
+{                                              \
+  int i;                                       \
+  VEC_TYPE mx, my;                             \
+  INIT_VEC_LOOP (mx, x, VEC_LEN);              \
+  INIT_VEC_LOOP (my, y, VEC_LEN);              \
+  VEC_TYPE mr = vector_func (mx, my);          \
+  TEST_VEC_LOOP (mr, VEC_LEN);                 \
+  return ((FLOAT) mr[0]);                      \
+}
+
+/* Wrapper from scalar 3 argument function to vector one.  */
+#define VECTOR_WRAPPER_fFF(scalar_func, vector_func)   \
+extern void vector_func (VEC_TYPE, VEC_TYPE *, VEC_TYPE *);    \
+void scalar_func (FLOAT x, FLOAT * r, FLOAT * r1)              \
+{                                              \
+  int i;                                       \
+  VEC_TYPE mx, mr, mr1;                                \
+  INIT_VEC_LOOP (mx, x, VEC_LEN);              \
+  vector_func (mx, &mr, &mr1);                 \
+  TEST_VEC_LOOP (mr, VEC_LEN);                 \
+  TEST_VEC_LOOP (mr1, VEC_LEN);                        \
+  *r = (FLOAT) mr[0];                          \
+  *r1 = (FLOAT) mr1[0];                                \
+  return;                                      \
+}
index 806bd99a5dad56a1ec0794864efcda121f3855a1..4e764f2475beafc2b0efcdd6f309905875cd66ac 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "test-double-vlen2.h"
-#include "test-vec-loop.h"
 #include <immintrin.h>
 
 #define VEC_TYPE __m128d
index a12b89748557121d00e25bbc61e4b20e817a9ab8..bc2fd16c5a9284c53d57a0a0978f0fd26d0b66db 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "test-double-vlen4.h"
-#include "test-vec-loop.h"
 #include <immintrin.h>
 
 #undef VEC_SUFF
index 7525af7f9084a2b816f21ef0d34825f02817dd53..a711c9e1c38709e291fc289b7efb5ff95d93d6c7 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "test-double-vlen4.h"
-#include "test-vec-loop.h"
 #include <immintrin.h>
 
 #define VEC_TYPE __m256d
index fcc4fa45a5bacc0a03eb229dd6cd5dc09b812e55..942c42b83b99ab7e29b2c31f864f9e69b1b4ba48 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "test-double-vlen8.h"
-#include "test-vec-loop.h"
 #include <immintrin.h>
 
 #define VEC_TYPE __m512d
index 6cc600830122fb30ea0bf7356c85d9f898866052..bc98e78ff01c7dbcbf42d1e2800ac9bc5f07d3e9 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "test-float-vlen16.h"
-#include "test-vec-loop.h"
 #include <immintrin.h>
 
 #define VEC_TYPE __m512
index ae12a108fc31221e61a59d264ca77898cffcebaf..39254efed48c4db1c2e00d1ec83c8477f5b30ca7 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "test-float-vlen4.h"
-#include "test-vec-loop.h"
 #include <immintrin.h>
 
 #define VEC_TYPE __m128
index f0c7d4a55a776d0d86658657e672ad3a6fcda33b..6bd0d5077908e57e96c3c22f0859d06817daabb5 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "test-float-vlen8.h"
-#include "test-vec-loop.h"
 #include <immintrin.h>
 
 #undef VEC_SUFF
index 6b267de00c76bfb0aaa5fd4f58afb462f34a63f1..2fec906de021a5e2c233a51db7f19cec89901881 100644 (file)
@@ -17,7 +17,6 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include "test-float-vlen8.h"
-#include "test-vec-loop.h"
 #include <immintrin.h>
 
 #define VEC_TYPE __m256