annotate gcc/testsuite/gcc.dg/torture/floatn-convert.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Tests for _FloatN / _FloatNx types: test conversions. */
kono
parents:
diff changeset
2 /* { dg-do run } */
kono
parents:
diff changeset
3 /* { dg-options "" } */
kono
parents:
diff changeset
4 /* { dg-add-options float16 } */
kono
parents:
diff changeset
5 /* { dg-add-options float32 } */
kono
parents:
diff changeset
6 /* { dg-add-options float64 } */
kono
parents:
diff changeset
7 /* { dg-add-options float128 } */
kono
parents:
diff changeset
8 /* { dg-add-options float32x } */
kono
parents:
diff changeset
9 /* { dg-add-options float64x } */
kono
parents:
diff changeset
10 /* { dg-add-options float128x } */
kono
parents:
diff changeset
11 /* { dg-require-effective-target float32 } */
kono
parents:
diff changeset
12 /* { dg-require-effective-target floatn_nx_runtime } */
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 #define __STDC_WANT_IEC_60559_TYPES_EXT__
kono
parents:
diff changeset
15 #include <float.h>
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 #ifndef FLT16_MAX
kono
parents:
diff changeset
18 # define _Float16 _Float32
kono
parents:
diff changeset
19 # define FLT16_MAX FLT32_MAX
kono
parents:
diff changeset
20 # define FLT16_MANT_DIG FLT32_MANT_DIG
kono
parents:
diff changeset
21 # define FLT16_EPSILON FLT32_EPSILON
kono
parents:
diff changeset
22 #endif
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 #ifndef FLT64_MAX
kono
parents:
diff changeset
25 # define _Float64 _Float32
kono
parents:
diff changeset
26 # define FLT64_MAX FLT32_MAX
kono
parents:
diff changeset
27 # define FLT64_MANT_DIG FLT32_MANT_DIG
kono
parents:
diff changeset
28 # define FLT64_EPSILON FLT32_EPSILON
kono
parents:
diff changeset
29 #endif
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 #ifndef FLT128_MAX
kono
parents:
diff changeset
32 # define _Float128 _Float32
kono
parents:
diff changeset
33 # define FLT128_MAX FLT32_MAX
kono
parents:
diff changeset
34 # define FLT128_MANT_DIG FLT32_MANT_DIG
kono
parents:
diff changeset
35 # define FLT128_EPSILON FLT32_EPSILON
kono
parents:
diff changeset
36 #endif
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 #ifndef FLT32X_MAX
kono
parents:
diff changeset
39 # define _Float32x _Float32
kono
parents:
diff changeset
40 # define FLT32X_MAX FLT32_MAX
kono
parents:
diff changeset
41 # define FLT32X_MANT_DIG FLT32_MANT_DIG
kono
parents:
diff changeset
42 # define FLT32X_EPSILON FLT32_EPSILON
kono
parents:
diff changeset
43 #endif
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 #ifndef FLT64X_MAX
kono
parents:
diff changeset
46 # define _Float64x _Float32
kono
parents:
diff changeset
47 # define FLT64X_MAX FLT32_MAX
kono
parents:
diff changeset
48 # define FLT64X_MANT_DIG FLT32_MANT_DIG
kono
parents:
diff changeset
49 # define FLT64X_EPSILON FLT32_EPSILON
kono
parents:
diff changeset
50 #endif
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 #ifndef FLT128X_MAX
kono
parents:
diff changeset
53 # define _Float128x _Float32
kono
parents:
diff changeset
54 # define FLT128X_MAX FLT32_MAX
kono
parents:
diff changeset
55 # define FLT128X_MANT_DIG FLT32_MANT_DIG
kono
parents:
diff changeset
56 # define FLT128X_EPSILON FLT32_EPSILON
kono
parents:
diff changeset
57 #endif
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 #define CONCATX(X, Y) X ## Y
kono
parents:
diff changeset
60 #define CONCAT(X, Y) CONCATX (X, Y)
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 extern void exit (int);
kono
parents:
diff changeset
63 extern void abort (void);
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 #define DO_TEST(TYPE1, PFX1, TYPE2, PFX2) \
kono
parents:
diff changeset
66 do \
kono
parents:
diff changeset
67 { \
kono
parents:
diff changeset
68 volatile TYPE1 a = (TYPE1) 1 + CONCAT (PFX1, _EPSILON); \
kono
parents:
diff changeset
69 volatile TYPE2 b = (TYPE2) a; \
kono
parents:
diff changeset
70 volatile TYPE2 expected; \
kono
parents:
diff changeset
71 if (CONCAT (PFX2, _MANT_DIG) < CONCAT (PFX1, _MANT_DIG)) \
kono
parents:
diff changeset
72 expected = (TYPE2) 1; \
kono
parents:
diff changeset
73 else \
kono
parents:
diff changeset
74 expected = (TYPE2) 1 + (TYPE2) CONCAT (PFX1, _EPSILON); \
kono
parents:
diff changeset
75 if (b != expected) \
kono
parents:
diff changeset
76 abort (); \
kono
parents:
diff changeset
77 } \
kono
parents:
diff changeset
78 while (0)
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80 #define DO_TEST1(TYPE1, PFX1) \
kono
parents:
diff changeset
81 do \
kono
parents:
diff changeset
82 { \
kono
parents:
diff changeset
83 DO_TEST (TYPE1, PFX1, _Float16, FLT16); \
kono
parents:
diff changeset
84 DO_TEST (TYPE1, PFX1, _Float32, FLT32); \
kono
parents:
diff changeset
85 DO_TEST (TYPE1, PFX1, _Float64, FLT64); \
kono
parents:
diff changeset
86 DO_TEST (TYPE1, PFX1, _Float128, FLT128); \
kono
parents:
diff changeset
87 DO_TEST (TYPE1, PFX1, _Float32x, FLT32X); \
kono
parents:
diff changeset
88 DO_TEST (TYPE1, PFX1, _Float64x, FLT64X); \
kono
parents:
diff changeset
89 DO_TEST (TYPE1, PFX1, _Float128x, FLT128X); \
kono
parents:
diff changeset
90 } \
kono
parents:
diff changeset
91 while (0)
kono
parents:
diff changeset
92
kono
parents:
diff changeset
93 int
kono
parents:
diff changeset
94 main (void)
kono
parents:
diff changeset
95 {
kono
parents:
diff changeset
96 DO_TEST1 (_Float16, FLT16);
kono
parents:
diff changeset
97 DO_TEST1 (_Float32, FLT32);
kono
parents:
diff changeset
98 DO_TEST1 (_Float64, FLT64);
kono
parents:
diff changeset
99 DO_TEST1 (_Float128, FLT128);
kono
parents:
diff changeset
100 DO_TEST1 (_Float32x, FLT32X);
kono
parents:
diff changeset
101 DO_TEST1 (_Float64x, FLT64X);
kono
parents:
diff changeset
102 DO_TEST1 (_Float128x, FLT128X);
kono
parents:
diff changeset
103 exit (0);
kono
parents:
diff changeset
104 }