(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
abs128-1.c
       1  /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */
       2  /* { dg-options "-mfloat128 -mvsx" } */
       3  
       4  void abort ();
       5  
       6  typedef unsigned long long int uint64_t;
       7  
       8  typedef union
       9  {
      10    __float128 value;
      11  
      12    struct
      13    {
      14  #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
      15      unsigned negative:1;
      16      unsigned exponent:15;
      17      unsigned quiet_nan:1;
      18      uint64_t mant_high:47;
      19      uint64_t mant_low:64;
      20  #else
      21      uint64_t mant_low:64;
      22      uint64_t mant_high:47;
      23      unsigned quiet_nan:1;
      24      unsigned exponent:15;
      25      unsigned negative:1;
      26  #endif
      27    } nan;
      28  
      29  } ieee854_float128;
      30  
      31  int
      32  main (int argc, int *argv[])
      33  {
      34    ieee854_float128 x, z;
      35  
      36    x.nan.negative = 1;
      37    x.nan.exponent = 0x22;
      38    x.nan.quiet_nan = 0;
      39    x.nan.mant_high = 0x1234;
      40    x.nan.mant_low = 0xabcdef;
      41  
      42    z.value = __builtin_fabsf128 (x.value);
      43  
      44    if (z.nan.negative != 0
      45        || z.nan.exponent != 0x22
      46        || z.nan.quiet_nan != 0
      47        || z.nan.mant_high != 0x1234
      48        || z.nan.mant_low != 0xabcdef)
      49      abort ();
      50  
      51    z.value = __builtin_fabsf128 (z.value);
      52  
      53    if (z.nan.negative != 0
      54        || z.nan.exponent != 0x22
      55        || z.nan.quiet_nan != 0
      56        || z.nan.mant_high != 0x1234
      57        || z.nan.mant_low != 0xabcdef)
      58      abort ();
      59  
      60    return 0;
      61  }