diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | math/test-tgmath2.c | 131 |
2 files changed, 126 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog index 7f2493bc57..f737fa6b71 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-11-04 Steve Ellcey <sellcey@caviumnetworks.com> + + * math/test-tgmath2.c: Split up test function. + 2016-11-04 Joseph Myers <joseph@codesourcery.com> * Rules (tests-expected): New variable, depending on diff --git a/math/test-tgmath2.c b/math/test-tgmath2.c index b376fd6a4e..5919159792 100644 --- a/math/test-tgmath2.c +++ b/math/test-tgmath2.c @@ -89,12 +89,6 @@ enum int count; int counts[Tlast][C_last]; -int -test (const int Vint4, const long long int Vllong4) -{ - int result = 0; - int quo = 0; - #define FAIL(str) \ do \ { \ @@ -138,6 +132,11 @@ test (const int Vint4, const long long int Vllong4) while (0) #define TEST(expr, type, fn) TEST2(expr, type, type, fn) +int +test_cos (const int Vint4, const long long int Vllong4) +{ + int result = 0; + TEST (cos (vfloat1), float, cos); TEST (cos (vdouble1), double, cos); TEST (cos (vldouble1), ldouble, cos); @@ -155,6 +154,14 @@ test (const int Vint4, const long long int Vllong4) TEST (cos (Vcdouble1), cdouble, cos); TEST (cos (Vcldouble1), cldouble, cos); + return result; +} + +int +test_fabs (const int Vint4, const long long int Vllong4) +{ + int result = 0; + TEST (fabs (vfloat1), float, fabs); TEST (fabs (vdouble1), double, fabs); TEST (fabs (vldouble1), ldouble, fabs); @@ -180,6 +187,13 @@ test (const int Vint4, const long long int Vllong4) TEST (fabs (Vcdouble1), double, cabs); TEST (fabs (Vcldouble1), ldouble, cabs); + return result; +} + +int +test_conj (const int Vint4, const long long int Vllong4) +{ + int result = 0; TEST (conj (vfloat1), cfloat, conj); TEST (conj (vdouble1), cdouble, conj); TEST (conj (vldouble1), cldouble, conj); @@ -197,6 +211,14 @@ test (const int Vint4, const long long int Vllong4) TEST (conj (Vcdouble1), cdouble, conj); TEST (conj (Vcldouble1), cldouble, conj); + return result; +} + +int +test_expm1 (const int Vint4, const long long int Vllong4) +{ + int result = 0; + TEST (expm1 (vfloat1), float, expm1); TEST (expm1 (vdouble1), double, expm1); TEST (expm1 (vldouble1), ldouble, expm1); @@ -208,6 +230,13 @@ test (const int Vint4, const long long int Vllong4) TEST (expm1 (Vint1), double, expm1); TEST (expm1 (Vllong1), double, expm1); + return result; +} + +int +test_lrint (const int Vint4, const long long int Vllong4) +{ + int result = 0; TEST2 (lrint (vfloat1), float, long int, lrint); TEST2 (lrint (vdouble1), double, long int, lrint); TEST2 (lrint (vldouble1), ldouble, long int, lrint); @@ -219,6 +248,14 @@ test (const int Vint4, const long long int Vllong4) TEST2 (lrint (Vint1), double, long int, lrint); TEST2 (lrint (Vllong1), double, long int, lrint); + return result; +} + +int +test_ldexp (const int Vint4, const long long int Vllong4) +{ + int result = 0; + TEST (ldexp (vfloat1, 6), float, ldexp); TEST (ldexp (vdouble1, 6), double, ldexp); TEST (ldexp (vldouble1, 6), ldouble, ldexp); @@ -230,6 +267,9 @@ test (const int Vint4, const long long int Vllong4) TEST (ldexp (Vint1, 6), double, ldexp); TEST (ldexp (Vllong1, 6), double, ldexp); + return result; +} + #define FIRST(x, y) (y, x) #define SECOND(x, y) (x, y) #define NON_LDBL_TEST(fn, argm, arg, type, fnt) \ @@ -307,25 +347,82 @@ test (const int Vint4, const long long int Vllong4) NON_LDBL_CTEST (fn, FIRST, Vcdouble2, cdouble, fnt); \ NON_LDBL_CTEST (fn, SECOND, Vcdouble2, cdouble, fnt); +int +test_atan2 (const int Vint4, const long long int Vllong4) +{ + int result = 0; + BINARY_TEST (atan2, atan2); + return result; +} + +int +test_remquo (const int Vint4, const long long int Vllong4) +{ + int result = 0; + int quo = 0; + #define my_remquo(x, y) remquo (x, y, &quo) BINARY_TEST (my_remquo, remquo); #undef my_remquo + return result; +} + +int +test_pow (const int Vint4, const long long int Vllong4) +{ + int result = 0; + BINARY_CTEST (pow, pow); - /* Testing all arguments of fma would be just too expensive, - so test just some. */ + return result; +} + +/* Testing all arguments of fma would be just too expensive, + so test just some. */ + +int +test_fma_1 (const int Vint4, const long long int Vllong4) +{ + int result = 0; + #define my_fma(x, y) fma (x, y, vfloat3) BINARY_TEST (my_fma, fma); #undef my_fma + + return result; +} + +int +test_fma_2 (const int Vint4, const long long int Vllong4) +{ + int result = 0; + #define my_fma(x, y) fma (x, vfloat3, y) BINARY_TEST (my_fma, fma); #undef my_fma + + return result; +} + +int +test_fma_3 (const int Vint4, const long long int Vllong4) +{ + int result = 0; + #define my_fma(x, y) fma (Vfloat3, x, y) BINARY_TEST (my_fma, fma); #undef my_fma + + return result; +} + +int +test_fma_4 (const int Vint4, const long long int Vllong4) +{ + int result = 0; TEST (fma (vdouble1, Vdouble2, vllong3), double, fma); TEST (fma (vint1, Vint2, vint3), double, fma); TEST (fma (Vldouble1, vldouble2, Vldouble3), ldouble, fma); @@ -337,7 +434,23 @@ test (const int Vint4, const long long int Vllong4) static int do_test (void) { - return test (vint1, vllong1); + int result; + + result = test_cos (vint1, vllong1); + result |= test_fabs (vint1, vllong1); + result |= test_conj (vint1, vllong1); + result |= test_expm1 (vint1, vllong1); + result |= test_lrint (vint1, vllong1); + result |= test_ldexp (vint1, vllong1); + result |= test_atan2 (vint1, vllong1); + result |= test_remquo (vint1, vllong1); + result |= test_pow (vint1, vllong1); + result |= test_fma_1 (vint1, vllong1); + result |= test_fma_2 (vint1, vllong1); + result |= test_fma_3 (vint1, vllong1); + result |= test_fma_4 (vint1, vllong1); + + return result; } /* Now generate the three functions. */ |