(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
nan128-1.c
       1  /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */
       2  /* { dg-options "-mfloat128 -mvsx" } */
       3  
       4  #include <stdio.h>
       5  
       6  void abort ();
       7  
       8  typedef unsigned long long int uint64_t;
       9  
      10  typedef union
      11  {
      12    __float128 value;
      13  
      14    struct
      15    {
      16  #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
      17      unsigned negative:1;
      18      unsigned exponent:15;
      19      unsigned quiet_nan:1;
      20      uint64_t mant_high:47;
      21      uint64_t mant_low:64;
      22  #else
      23      uint64_t mant_low:64;
      24      uint64_t mant_high:47;
      25      unsigned quiet_nan:1;
      26      unsigned exponent:15;
      27      unsigned negative:1;
      28  #endif
      29    } nan;
      30  
      31  } ieee854_float128;
      32  
      33  int
      34  main (int argc, int *argv[])
      35  {
      36    ieee854_float128 y;
      37  
      38    y.value = __builtin_nanq ("1");
      39  
      40    if (y.nan.negative != 0
      41        || y.nan.exponent != 0x7fff
      42        || y.nan.quiet_nan != 1
      43        || y.nan.mant_high != 0
      44        || y.nan.mant_low != 1)
      45      abort ();
      46  
      47    y.value = __builtin_nanq ("0x2ab3c");
      48  
      49    if (y.nan.negative != 0
      50        || y.nan.exponent != 0x7fff
      51        || y.nan.quiet_nan != 1
      52        || y.nan.mant_high != 0
      53        || y.nan.mant_low != 0x2ab3c)
      54      abort ();
      55  
      56    y.value = __builtin_nansq ("1");
      57  
      58    if (
      59        y.nan.negative != 0
      60        || y.nan.exponent != 0x7fff
      61        || y.nan.quiet_nan != 0
      62        || y.nan.mant_high != 0
      63        || y.nan.mant_low != 1
      64        )
      65      abort ();
      66  
      67    y.value = __builtin_nansq ("0x2ab3c");
      68  
      69    if (y.nan.negative != 0
      70        || y.nan.exponent != 0x7fff
      71        || y.nan.quiet_nan != 0
      72        || y.nan.mant_high != 0
      73        || y.nan.mant_low != 0x2ab3c)
      74      abort ();
      75  
      76    return 0;
      77  }