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 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 }