(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
builtin-issignaling-1.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O2 -fsignaling-nans" } */
       3  
       4  #if __LDBL_MANT_DIG__ == 64
       5  union U { struct { unsigned long long m; unsigned short e; } p; long double l; };
       6  union U zero = { { 0, 0 } };
       7  union U mzero = { { 0, 0x8000 } };
       8  union U denorm = { { 42, 0 } };
       9  union U mdenorm = { { 42, 0x8000 } };
      10  union U pseudodenorm = { { 0x8000000000000000ULL, 0 } };
      11  union U mpseudodenorm = { { 0x8000000000000000ULL, 0x8000 } };
      12  union U pseudodenorm1 = { { 0x8000000000000042ULL, 0 } };
      13  union U mpseudodenorm1 = { { 0x8000000000000042ULL, 0x8000 } };
      14  union U pseudoinf = { { 0, 0x7fff } };
      15  union U mpseudoinf = { { 0, 0xffff } };
      16  union U pseudonan = { { 42, 0x7fff } };
      17  union U mpseudonan = { { 42, 0xffff } };
      18  union U pseudonan1 = { { 0x4000000000000000ULL, 0x7fff } };
      19  union U mpseudonan1 = { { 0x4000000000000000ULL, 0xffff } };
      20  union U pseudonan2 = { { 0x4000000000000042ULL, 0x7fff } };
      21  union U mpseudonan2 = { { 0x4000000000000042ULL, 0xffff } };
      22  union U inf = { { 0x8000000000000000ULL, 0x7fff } };
      23  union U minf = { { 0x8000000000000000ULL, 0xffff } };
      24  union U snan = { { 0x8000000000000042ULL, 0x7fff } };
      25  union U msnan = { { 0x8000000000000042ULL, 0xffff } };
      26  union U indefinite = { { 0xc000000000000000ULL, 0x7fff } };
      27  union U mindefinite = { { 0xc000000000000000ULL, 0xffff } };
      28  union U qnan = { { 0xc000000000000042ULL, 0x7fff } };
      29  union U mqnan = { { 0xc000000000000042ULL, 0xffff } };
      30  union U unnormal = { { 0, 0x42 } };
      31  union U munnormal = { { 0, 0x8042 } };
      32  union U unnormal1 = { { 42, 0x42 } };
      33  union U munnormal1 = { { 42, 0x8042 } };
      34  union U normal = { { 0x8000000000000000ULL, 0x42 } };
      35  union U mnormal = { { 0x8000000000000000ULL, 0x8042 } };
      36  union U normal1 = { { 0x8000000000000042ULL, 0x42 } };
      37  union U mnormal1 = { { 0x8000000000000042ULL, 0x8042 } };
      38  #endif
      39  
      40  int
      41  main ()
      42  {
      43  #if __LDBL_MANT_DIG__ == 64
      44    asm volatile ("" : : : "memory");
      45    if (__builtin_issignaling (zero.l)
      46        || __builtin_issignaling (mzero.l)
      47        || __builtin_issignaling (denorm.l)
      48        || __builtin_issignaling (mdenorm.l)
      49        || __builtin_issignaling (pseudodenorm.l)
      50        || __builtin_issignaling (mpseudodenorm.l)
      51        || __builtin_issignaling (pseudodenorm1.l)
      52        || __builtin_issignaling (mpseudodenorm1.l)
      53        || !__builtin_issignaling (pseudoinf.l)
      54        || !__builtin_issignaling (mpseudoinf.l)
      55        || !__builtin_issignaling (pseudonan.l)
      56        || !__builtin_issignaling (mpseudonan.l)
      57        || !__builtin_issignaling (pseudonan1.l)
      58        || !__builtin_issignaling (mpseudonan1.l)
      59        || !__builtin_issignaling (pseudonan2.l)
      60        || !__builtin_issignaling (mpseudonan2.l)
      61        || __builtin_issignaling (inf.l)
      62        || __builtin_issignaling (minf.l)
      63        || !__builtin_issignaling (snan.l)
      64        || !__builtin_issignaling (msnan.l)
      65        || __builtin_issignaling (indefinite.l)
      66        || __builtin_issignaling (mindefinite.l)
      67        || __builtin_issignaling (qnan.l)
      68        || __builtin_issignaling (mqnan.l)
      69        || !__builtin_issignaling (unnormal.l)
      70        || !__builtin_issignaling (munnormal.l)
      71        || !__builtin_issignaling (unnormal1.l)
      72        || !__builtin_issignaling (munnormal1.l)
      73        || __builtin_issignaling (normal.l)
      74        || __builtin_issignaling (mnormal.l)
      75        || __builtin_issignaling (normal1.l)
      76        || __builtin_issignaling (mnormal1.l))
      77      __builtin_abort ();
      78  #endif
      79    return 0;
      80  }