diff options
author | ghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-08-28 19:41:16 +0000 |
---|---|---|
committer | ghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-08-28 19:41:16 +0000 |
commit | e88e2794c37bad34749b07206579608e99e6c027 (patch) | |
tree | 6ed737b2b94c4bea8b505ad8d68bea8c93ce1ecf /gcc/testsuite/gcc.dg/builtins-1.c | |
parent | 094b8faefcf06c4569bd120c1ef67960a3a8d076 (diff) | |
download | gcc-e88e2794c37bad34749b07206579608e99e6c027.tar.gz |
* builtin-types.def (BT_FN_INT_FLOAT, BT_FN_INT_DOUBLE,
BT_FN_INT_LONGDOUBLE, BT_FN_LONG_FLOAT, BT_FN_LONG_DOUBLE,
BT_FN_LONG_LONGDOUBLE, BT_FN_LONGLONG_FLOAT,
BT_FN_LONGLONG_DOUBLE, BT_FN_LONGLONG_LONGDOUBLE,
BT_FN_FLOAT_FLOAT_LONGDOUBLE, BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
BT_FN_FLOAT_FLOAT_INT, BT_FN_DOUBLE_DOUBLE_INT,
BT_FN_LONGDOUBLE_LONGDOUBLE_INT, BT_FN_FLOAT_FLOAT_LONG,
BT_FN_DOUBLE_DOUBLE_LONG, BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
BT_FN_FLOAT_FLOAT_FLOAT_FLOAT, BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE): New.
* builtins.def (BUILT_IN_ACOS, BUILT_IN_ACOSF, BUILT_IN_ACOSH,
BUILT_IN_ACOSHF, BUILT_IN_ACOSHL, BUILT_IN_ACOSL, BUILT_IN_ASIN,
BUILT_IN_ASINF, BUILT_IN_ASINH, BUILT_IN_ASINHF, BUILT_IN_ASINHL,
BUILT_IN_ASINL, BUILT_IN_ATANH, BUILT_IN_ATANHF, BUILT_IN_ATANHL,
BUILT_IN_CBRT, BUILT_IN_CBRTF, BUILT_IN_CBRTL, BUILT_IN_COPYSIGN,
BUILT_IN_COPYSIGNF, BUILT_IN_COPYSIGNL, BUILT_IN_COSH,
BUILT_IN_COSHF, BUILT_IN_COSHL, BUILT_IN_DREM, BUILT_IN_DREMF,
BUILT_IN_DREML, BUILT_IN_EXP10, BUILT_IN_EXP10F, BUILT_IN_EXP10L,
BUILT_IN_EXP2, BUILT_IN_EXP2F, BUILT_IN_EXP2L, BUILT_IN_EXPM1,
BUILT_IN_EXPM1F, BUILT_IN_EXPM1L, BUILT_IN_FDIM, BUILT_IN_FDIMF,
BUILT_IN_FDIML, BUILT_IN_FMA, BUILT_IN_FMAF, BUILT_IN_FMAL,
BUILT_IN_FMAX, BUILT_IN_FMAXF, BUILT_IN_FMAXL, BUILT_IN_FMIN,
BUILT_IN_FMINF, BUILT_IN_FMINL, BUILT_IN_HYPOT, BUILT_IN_HYPOTF,
BUILT_IN_HYPOTL, BUILT_IN_ILOGB, BUILT_IN_ILOGBF, BUILT_IN_ILOGBL,
BUILT_IN_LDEXP, BUILT_IN_LDEXPF, BUILT_IN_LDEXPL, BUILT_IN_LLRINT,
BUILT_IN_LLRINTF, BUILT_IN_LLRINTL, BUILT_IN_LLROUND,
BUILT_IN_LLROUNDF, BUILT_IN_LLROUNDL, BUILT_IN_LOG10,
BUILT_IN_LOG10F, BUILT_IN_LOG10L, BUILT_IN_LOG1P, BUILT_IN_LOG1PF,
BUILT_IN_LOG1PL, BUILT_IN_LOG2, BUILT_IN_LOG2F, BUILT_IN_LOG2L,
BUILT_IN_LOGB, BUILT_IN_LOGBF, BUILT_IN_LOGBL, BUILT_IN_LRINT,
BUILT_IN_LRINTF, BUILT_IN_LRINTL, BUILT_IN_LROUND,
BUILT_IN_LROUNDF, BUILT_IN_LROUNDL, BUILT_IN_NEXTAFTER,
BUILT_IN_NEXTAFTERF, BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD,
BUILT_IN_NEXTTOWARDF, BUILT_IN_NEXTTOWARDL, BUILT_IN_POW10,
BUILT_IN_POW10F, BUILT_IN_POW10L, BUILT_IN_REMAINDER,
BUILT_IN_REMAINDERF, BUILT_IN_REMAINDERL, BUILT_IN_RINT,
BUILT_IN_RINTF, BUILT_IN_RINTL, BUILT_IN_SCALB, BUILT_IN_SCALBF,
BUILT_IN_SCALBL, BUILT_IN_SCALBLN, BUILT_IN_SCALBLNF,
BUILT_IN_SCALBLNL, BUILT_IN_SCALBN, BUILT_IN_SCALBNF,
BUILT_IN_SCALBNL, BUILT_IN_SINH, BUILT_IN_SINHF, BUILT_IN_SINHL,
BUILT_IN_TANH, BUILT_IN_TANHF, BUILT_IN_TANHL): New.
* doc/extend.texi: Document new builtins.
testsuite:
* gcc.dg/builtins-1.c: Add more math builtin tests.
* gcc.dg/torture/builtin-attr-1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70886 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg/builtins-1.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/builtins-1.c | 64 |
1 files changed, 61 insertions, 3 deletions
diff --git a/gcc/testsuite/gcc.dg/builtins-1.c b/gcc/testsuite/gcc.dg/builtins-1.c index ae00082e0d4..82a066dad86 100644 --- a/gcc/testsuite/gcc.dg/builtins-1.c +++ b/gcc/testsuite/gcc.dg/builtins-1.c @@ -6,6 +6,7 @@ Written by Roger Sayle, 11th July 2002. */ /* { dg-do compile } */ +/* { dg-options "" } */ /* { dg-final { scan-assembler-not "__builtin_" } } */ /* These helper macros ensure we also check the float and long double @@ -24,35 +25,92 @@ float test_##FN##f(float x) { return __builtin_##FN##f(x); } \ long double test_##FN##l(long double x) { return __builtin_##FN##l(x); } /* Test FP functions taking one argument of a supplied type. */ -#define FPTEST1TYPE(FN, TYPE) \ +#define FPTEST1ARG(FN, TYPE) \ double test_##FN(TYPE x) { return __builtin_##FN(x); } \ float test_##FN##f(TYPE x) { return __builtin_##FN##f(x); } \ long double test_##FN##l(TYPE x) { return __builtin_##FN##l(x); } +/* Test FP functions taking two arguments, the second argument is of a + supplied type. */ +#define FPTEST2ARG(FN, TYPE) \ +double test_##FN(double x, TYPE y) { return __builtin_##FN(x, y); } \ +float test_##FN##f(float x, TYPE y) { return __builtin_##FN##f(x, y); } \ +long double test_##FN##l(long double x, TYPE y) { return __builtin_##FN##l(x, y); } + +/* Test FP functions taking one FP argument and a supplied return + type. */ +#define FPTEST1RET(FN, TYPE) \ +TYPE test_##FN(double x) { return __builtin_##FN(x); } \ +TYPE test_##FN##f(float x) { return __builtin_##FN##f(x); } \ +TYPE test_##FN##l(long double x) { return __builtin_##FN##l(x); } + /* Test FP functions taking two FP arguments. */ #define FPTEST2(FN) \ double test_##FN(double x, double y) { return __builtin_##FN(x, y); } \ float test_##FN##f(float x, float y) { return __builtin_##FN##f(x, y); } \ long double test_##FN##l(long double x, long double y) { return __builtin_##FN##l(x, y); } +/* Test FP functions taking three FP arguments. */ +#define FPTEST3(FN) \ +double test_##FN(double x, double y, double z) { return __builtin_##FN(x, y, z); } \ +float test_##FN##f(float x, float y, float z) { return __builtin_##FN##f(x, y, z); } \ +long double test_##FN##l(long double x, long double y, long double z) { return __builtin_##FN##l(x, y, z); } + /* Keep this list sorted alphabetically by function name. */ +FPTEST1 (acos) +FPTEST1 (acosh) +FPTEST1 (asin) +FPTEST1 (asinh) FPTEST1 (atan) FPTEST2 (atan2) +FPTEST1 (atanh) +FPTEST1 (cbrt) FPTEST1 (ceil) +FPTEST2 (copysign) FPTEST1 (cos) +FPTEST1 (cosh) +FPTEST2 (drem) FPTEST1 (exp) +FPTEST1 (exp10) +FPTEST1 (exp2) +FPTEST1 (expm1) FPTEST1 (fabs) +FPTEST2 (fdim) FPTEST1 (floor) +FPTEST3 (fma) +FPTEST2 (fmax) +FPTEST2 (fmin) FPTEST2 (fmod) FPTEST0 (huge_val) +FPTEST2 (hypot) +FPTEST1 (ilogb) FPTEST0 (inf) +FPTEST2ARG (ldexp, int) +FPTEST1RET (llrint, long long) +FPTEST1RET (llround, long long) FPTEST1 (log) -FPTEST1TYPE (nan, char *) -FPTEST1TYPE (nans, char *) +FPTEST1 (log10) +FPTEST1 (log1p) +FPTEST1 (log2) +FPTEST1 (logb) +FPTEST1RET (lrint, long) +FPTEST1RET (lround, long) +FPTEST1ARG (nan, char *) +FPTEST1ARG (nans, char *) FPTEST1 (nearbyint) +FPTEST2 (nextafter) +FPTEST2 (nexttoward) FPTEST2 (pow) +FPTEST1 (pow10) +FPTEST2 (remainder) +FPTEST1 (rint) FPTEST1 (round) +FPTEST2 (scalb) +FPTEST2ARG (scalbln, int) +FPTEST2ARG (scalbn, int) FPTEST1 (sin) +FPTEST1 (sinh) FPTEST1 (sqrt) FPTEST1 (tan) +FPTEST1 (tanh) FPTEST1 (trunc) |