[testsuite] require sqrt_insn effective target where needed
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / abs128-1.c
blobfe5206daff8c997526ae51c064657e99d5151ec8
1 /* { dg-do run { target { powerpc64*-*-* && vsx_hw } } } */
2 /* { dg-options "-mfloat128 -mvsx" } */
4 void abort ();
6 typedef unsigned long long int uint64_t;
8 typedef union
10 __float128 value;
12 struct
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;
29 } ieee854_float128;
31 int
32 main (int argc, int *argv[])
34 ieee854_float128 x, z;
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;
42 z.value = __builtin_fabsf128 (x.value);
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 ();
51 z.value = __builtin_fabsf128 (z.value);
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 ();
60 return 0;