(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
floatn-builtin.h
       1  /* Tests for _FloatN / _FloatNx types: compile and execution tests for
       2     built-in functions.  Before including this file, define WIDTH as
       3     the value N; define EXT to 1 for _FloatNx and 0 for _FloatN.  */
       4  
       5  #define CONCATX(X, Y) X ## Y
       6  #define CONCAT(X, Y) CONCATX (X, Y)
       7  #define CONCAT3(X, Y, Z) CONCAT (CONCAT (X, Y), Z)
       8  #define CONCAT4(W, X, Y, Z) CONCAT (CONCAT (CONCAT (W, X), Y), Z)
       9  
      10  #if EXT
      11  # define TYPE CONCAT3 (_Float, WIDTH, x)
      12  # define CST(C) CONCAT4 (C, f, WIDTH, x)
      13  # define FN(F) CONCAT4 (F, f, WIDTH, x)
      14  #else
      15  # define TYPE CONCAT (_Float, WIDTH)
      16  # define CST(C) CONCAT3 (C, f, WIDTH)
      17  # define FN(F) CONCAT3 (F, f, WIDTH)
      18  #endif
      19  
      20  extern void exit (int);
      21  extern void abort (void);
      22  
      23  extern int test_i;
      24  extern long int test_l;
      25  extern long long int test_ll;
      26  extern TYPE test_type;
      27  extern __typeof (FN (__builtin_inf) ()) test_type;
      28  extern __typeof (FN (__builtin_huge_val) ()) test_type;
      29  extern __typeof (FN (__builtin_nan) ("")) test_type;
      30  extern __typeof (FN (__builtin_nans) ("")) test_type;
      31  extern __typeof (FN (__builtin_fabs) (0)) test_type;
      32  extern __typeof (FN (__builtin_copysign) (0, 0)) test_type;
      33  extern __typeof (FN (__builtin_acosh) (0)) test_type;
      34  extern __typeof (FN (__builtin_acos) (0)) test_type;
      35  extern __typeof (FN (__builtin_asinh) (0)) test_type;
      36  extern __typeof (FN (__builtin_asin) (0)) test_type;
      37  extern __typeof (FN (__builtin_atanh) (0)) test_type;
      38  extern __typeof (FN (__builtin_atan) (0)) test_type;
      39  extern __typeof (FN (__builtin_cbrt) (0)) test_type;
      40  extern __typeof (FN (__builtin_cosh) (0)) test_type;
      41  extern __typeof (FN (__builtin_cos) (0)) test_type;
      42  extern __typeof (FN (__builtin_erfc) (0)) test_type;
      43  extern __typeof (FN (__builtin_erf) (0)) test_type;
      44  extern __typeof (FN (__builtin_exp2) (0)) test_type;
      45  extern __typeof (FN (__builtin_exp) (0)) test_type;
      46  extern __typeof (FN (__builtin_expm1) (0)) test_type;
      47  extern __typeof (FN (__builtin_lgamma) (0)) test_type;
      48  extern __typeof (FN (__builtin_log10) (0)) test_type;
      49  extern __typeof (FN (__builtin_log1p) (0)) test_type;
      50  extern __typeof (FN (__builtin_log2) (0)) test_type;
      51  extern __typeof (FN (__builtin_logb) (0)) test_type;
      52  extern __typeof (FN (__builtin_log) (0)) test_type;
      53  extern __typeof (FN (__builtin_nextafter) (0, 0)) test_type;
      54  extern __typeof (FN (__builtin_sinh) (0)) test_type;
      55  extern __typeof (FN (__builtin_sin) (0)) test_type;
      56  extern __typeof (FN (__builtin_tanh) (0)) test_type;
      57  extern __typeof (FN (__builtin_tan) (0)) test_type;
      58  extern __typeof (FN (__builtin_tgamma) (0)) test_type;
      59  extern __typeof (FN (__builtin_atan2) (0, 0)) test_type;
      60  extern __typeof (FN (__builtin_fdim) (0, 0)) test_type;
      61  extern __typeof (FN (__builtin_fmod) (0, 0)) test_type;
      62  extern __typeof (FN (__builtin_frexp) (0, &test_i)) test_type;
      63  extern __typeof (FN (__builtin_ldexp) (0, 0)) test_type;
      64  extern __typeof (FN (__builtin_hypot) (0, 0)) test_type;
      65  extern __typeof (FN (__builtin_ilogb) (0)) test_i;
      66  extern __typeof (FN (__builtin_llrint) (0)) test_ll;
      67  extern __typeof (FN (__builtin_llround) (0)) test_ll;
      68  extern __typeof (FN (__builtin_lrint) (0)) test_l;
      69  extern __typeof (FN (__builtin_lround) (0)) test_l;
      70  extern __typeof (FN (__builtin_modf) (0, &test_type)) test_type;
      71  extern __typeof (FN (__builtin_pow) (0, 0)) test_type;
      72  extern __typeof (FN (__builtin_remainder) (0, 0)) test_type;
      73  extern __typeof (FN (__builtin_remquo) (0, 0, &test_i)) test_type;
      74  extern __typeof (FN (__builtin_scalbln) (0, 0L)) test_type;
      75  extern __typeof (FN (__builtin_scalbn) (0, 0)) test_type;
      76  
      77  volatile TYPE inf_cst = FN (__builtin_inf) ();
      78  volatile TYPE huge_val_cst = FN (__builtin_huge_val) ();
      79  volatile TYPE nan_cst = FN (__builtin_nan) ("");
      80  volatile TYPE nans_cst = FN (__builtin_nans) ("");
      81  volatile TYPE neg0 = -CST (0.0), neg1 = -CST (1.0), one = 1.0;
      82  volatile TYPE t1 = FN (__builtin_acosh) (CST (1.0));
      83  volatile TYPE t2 = FN (__builtin_acos) (CST (1.0));
      84  volatile TYPE t3 = FN (__builtin_asinh) (CST (0.0));
      85  volatile TYPE t4 = FN (__builtin_asin) (CST (0.0));
      86  volatile TYPE t5 = FN (__builtin_atanh) (CST (0.0));
      87  volatile TYPE t6 = FN (__builtin_atan) (CST (0.0));
      88  volatile TYPE t7 = FN (__builtin_cbrt) (CST (27.0));
      89  volatile TYPE t8 = FN (__builtin_cosh) (CST (0.0));
      90  volatile TYPE t9 = FN (__builtin_cos) (CST (0.0));
      91  volatile TYPE t10 = FN (__builtin_erfc) (CST (0.0));
      92  volatile TYPE t11 = FN (__builtin_erf) (CST (0.0));
      93  volatile TYPE t12 = FN (__builtin_exp2) (CST (1.0));
      94  volatile TYPE t13 = FN (__builtin_exp) (CST (0.0));
      95  volatile TYPE t14 = FN (__builtin_expm1) (CST (0.0));
      96  volatile TYPE t15 = FN (__builtin_log10) (CST (1.0));
      97  volatile TYPE t16 = FN (__builtin_log1p) (CST (0.0));
      98  volatile TYPE t17 = FN (__builtin_log2) (CST (1.0));
      99  volatile TYPE t18 = FN (__builtin_logb) (CST (1.0));
     100  volatile TYPE t19 = FN (__builtin_log) (CST (1.0));
     101  volatile TYPE t20 = FN (__builtin_nextafter) (CST (0.0), CST (0.0));
     102  volatile TYPE t21 = FN (__builtin_sinh) (CST (0.0));
     103  volatile TYPE t22 = FN (__builtin_sin) (CST (0.0));
     104  volatile TYPE t23 = FN (__builtin_tanh) (CST (0.0));
     105  volatile TYPE t24 = FN (__builtin_tan) (CST (0.0));
     106  volatile TYPE t25 = FN (__builtin_atan2) (CST (0.0), CST (1.0));
     107  volatile TYPE t26 = FN (__builtin_fdim) (CST (0.0), CST (0.0));
     108  volatile TYPE t27 = FN (__builtin_fmod) (CST (0.0), CST (1.0));
     109  volatile TYPE t28 = FN (__builtin_ldexp) (CST (1.0), 1);
     110  volatile TYPE t29 = FN (__builtin_hypot) (CST (3.0), CST (4.0));
     111  volatile int t30 = FN (__builtin_ilogb) (CST (1.0));
     112  volatile long long int t31 = FN (__builtin_llround) (CST (42.25));
     113  volatile long int t32 = FN (__builtin_lround) (CST (42.25));
     114  volatile TYPE t33 = FN (__builtin_pow) (CST (1.0), CST (2.0));
     115  volatile TYPE t34 = FN (__builtin_remainder) (CST (7.0), CST (4.0));
     116  volatile TYPE t35 = FN (__builtin_scalbln) (CST (1.0), 1L);
     117  volatile TYPE t36 = FN (__builtin_scalbn) (CST (1.0), 1);
     118  
     119  int
     120  main (void)
     121  {
     122    volatile TYPE r;
     123    if (!__builtin_isinf (inf_cst))
     124      abort ();
     125    if (!__builtin_isinf (huge_val_cst))
     126      abort ();
     127    if (inf_cst != huge_val_cst)
     128      abort ();
     129    if (!__builtin_isnan (nan_cst))
     130      abort ();
     131    if (!__builtin_isnan (nans_cst))
     132      abort ();
     133    r = FN (__builtin_fabs) (neg1);
     134    if (r != CST (1.0))
     135      abort ();
     136    r = FN (__builtin_copysign) (one, neg0);
     137    if (r != neg1)
     138      abort ();
     139    r = FN (__builtin_copysign) (inf_cst, neg1);
     140    if (r != -huge_val_cst)
     141      abort ();
     142    r = FN (__builtin_copysign) (-inf_cst, one);
     143    if (r != huge_val_cst)
     144      abort ();
     145    if (t1 != CST (0.0))
     146      abort ();
     147    if (t2 != CST (0.0))
     148      abort ();
     149    if (t3 != CST (0.0))
     150      abort ();
     151    if (t4 != CST (0.0))
     152      abort ();
     153    if (t5 != CST (0.0))
     154      abort ();
     155    if (t6 != CST (0.0))
     156      abort ();
     157    if (t7 != CST (3.0))
     158      abort ();
     159    if (t8 != CST (1.0))
     160      abort ();
     161    if (t9 != CST (1.0))
     162      abort ();
     163    if (t10 != CST (1.0))
     164      abort ();
     165    if (t11 != CST (0.0))
     166      abort ();
     167    if (t12 != CST (2.0))
     168      abort ();
     169    if (t13 != CST (1.0))
     170      abort ();
     171    if (t14 != CST (0.0))
     172      abort ();
     173    if (t15 != CST (0.0))
     174      abort ();
     175    if (t16 != CST (0.0))
     176      abort ();
     177    if (t17 != CST (0.0))
     178      abort ();
     179    if (t18 != CST (0.0))
     180      abort ();
     181    if (t19 != CST (0.0))
     182      abort ();
     183    if (t20 != CST (0.0))
     184      abort ();
     185    if (t21 != CST (0.0))
     186      abort ();
     187    if (t22 != CST (0.0))
     188      abort ();
     189    if (t23 != CST (0.0))
     190      abort ();
     191    if (t24 != CST (0.0))
     192      abort ();
     193    if (t25 != CST (0.0))
     194      abort ();
     195    if (t26 != CST (0.0))
     196      abort ();
     197    if (t27 != CST (0.0))
     198      abort ();
     199    if (t28 != CST (2.0))
     200      abort ();
     201    if (t29 != CST (5.0))
     202      abort ();
     203    if (t30 != 0)
     204      abort ();
     205    if (t31 != 42)
     206      abort ();
     207    if (t32 != 42)
     208      abort ();
     209    if (t33 != CST (1.0))
     210      abort ();
     211    if (t34 != -CST (1.0))
     212      abort ();
     213    if (t35 != CST (2.0))
     214      abort ();
     215    if (t36 != CST (2.0))
     216      abort ();
     217    exit (0);
     218  }