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
main(int argc,int * argv[])32 main (int argc, int *argv[])
33 {
34   ieee854_float128 y;
35 
36   y.value = __builtin_infq ();
37 
38   if (y.nan.negative != 0
39       || y.nan.exponent != 0x7fff
40       || y.nan.quiet_nan != 0
41       || y.nan.mant_high != 0
42       || y.nan.mant_low != 0)
43     abort ();
44 
45   y.value = __builtin_huge_valq ();
46 
47   if (y.nan.negative != 0
48       || y.nan.exponent != 0x7fff
49       || y.nan.quiet_nan != 0
50       || y.nan.mant_high != 0
51       || y.nan.mant_low != 0)
52     abort ();
53 
54   return 0;
55 }
56