PR middle-end/77357 - strlen of constant strings not folded
[official-gcc.git] / gcc / testsuite / gcc.dg / dfp / convert-dfp-round.c
blobecae7dd7948a4f198540ddbf1c791ccdd1c468e6
1 /* { dg-options "-O0" } */
2 /* { dg-skip-if "test is for emulation" { hard_dfp } } */
4 /* N1150 5.2: Conversions among decimal floating types and between
5 decimal floating types and generic floating types.
6 C99 6.3.1.5(3) New.
8 Perform conversions between DFP types in which the assigned value
9 cannot be represented exactly in the result and must be rounded
10 correctly according to the current rounding mode.
12 Normally this would not be part of compiler testing, but conversions
13 are currently handled in libgcc via decNumber. */
15 #include "dfp-dbg.h"
16 #include "dfp-round.h"
18 _Decimal32 d32;
19 _Decimal64 d64;
20 _Decimal128 d128;
22 _Decimal32 d64_to_d32 (_Decimal64 d) { return d; }
23 _Decimal64 d128_to_d64 (_Decimal128 d) { return d; }
24 _Decimal32 d128_to_d32 (_Decimal128 d) { return d; }
26 int
27 do_d64_to_d32 (_Decimal64 orig, _Decimal32 exp)
29 d64 = orig;
30 d32 = d64_to_d32 (d64);
31 return (d32 == exp);
34 int
35 do_d128_to_d32 (_Decimal128 orig, _Decimal32 exp)
37 d128 = orig;
38 d32 = d128_to_d32 (d128);
39 return (d32 == exp);
42 int
43 do_d128_to_d64 (_Decimal128 orig, _Decimal64 exp)
45 d128 = orig;
46 d64 = d128_to_d64 (d128);
47 return (d64 == exp);
50 int
51 main ()
53 DFP_SETROUND (FE_DEC_DOWNWARD);
54 if (!do_d64_to_d32 (1.1111125dd, 1.111112df)) FAILURE
55 if (!do_d64_to_d32 (1.1111135dd, 1.111113df)) FAILURE
56 if (!do_d64_to_d32 (-1.1111125dd, -1.111113df)) FAILURE
57 if (!do_d64_to_d32 (-1.1111135dd, -1.111114df)) FAILURE
58 if (!do_d128_to_d32 (1.1111125dl, 1.111112df)) FAILURE
59 if (!do_d128_to_d32 (1.1111135dl, 1.111113df)) FAILURE
60 if (!do_d128_to_d32 (-1.1111125dl, -1.111113df)) FAILURE
61 if (!do_d128_to_d32 (-1.1111135dl, -1.111114df)) FAILURE
62 if (!do_d128_to_d64 (1.1111111111111125dl, 1.111111111111112dd)) FAILURE
63 if (!do_d128_to_d64 (1.1111111111111135dl, 1.111111111111113dd)) FAILURE
64 if (!do_d128_to_d64 (-1.1111111111111125dl, -1.111111111111113dd)) FAILURE
65 if (!do_d128_to_d64 (-1.1111111111111135dl, -1.111111111111114dd)) FAILURE
67 DFP_SETROUND (FE_DEC_TONEAREST);
68 if (!do_d64_to_d32 (1.1111125dd, 1.111112df)) FAILURE
69 if (!do_d64_to_d32 (1.1111135dd, 1.111114df)) FAILURE
70 if (!do_d64_to_d32 (-1.1111125dd, -1.111112df)) FAILURE
71 if (!do_d64_to_d32 (-1.1111135dd, -1.111114df)) FAILURE
72 if (!do_d128_to_d32 (1.1111125dl, 1.111112df)) FAILURE
73 if (!do_d128_to_d32 (1.1111135dl, 1.111114df)) FAILURE
74 if (!do_d128_to_d32 (-1.1111125dl, -1.111112df)) FAILURE
75 if (!do_d128_to_d32 (-1.1111135dl, -1.111114df)) FAILURE
76 if (!do_d128_to_d64 (1.1111111111111125dl, 1.111111111111112dd)) FAILURE
77 if (!do_d128_to_d64 (1.1111111111111135dl, 1.111111111111114dd)) FAILURE
78 if (!do_d128_to_d64 (-1.1111111111111125dl, -1.111111111111112dd)) FAILURE
79 if (!do_d128_to_d64 (-1.1111111111111135dl, -1.111111111111114dd)) FAILURE
81 DFP_SETROUND (FE_DEC_TONEARESTFROMZERO);
82 if (!do_d64_to_d32 (1.1111125dd, 1.111113df)) FAILURE
83 if (!do_d64_to_d32 (1.1111135dd, 1.111114df)) FAILURE
84 if (!do_d64_to_d32 (-1.1111125dd, -1.111113df)) FAILURE
85 if (!do_d64_to_d32 (-1.1111135dd, -1.111114df)) FAILURE
86 if (!do_d128_to_d32 (1.1111125dl, 1.111113df)) FAILURE
87 if (!do_d128_to_d32 (1.1111135dl, 1.111114df)) FAILURE
88 if (!do_d128_to_d32 (-1.1111125dl, -1.111113df)) FAILURE
89 if (!do_d128_to_d32 (-1.1111135dl, -1.111114df)) FAILURE
90 if (!do_d128_to_d64 (1.1111111111111125dl, 1.111111111111113dd)) FAILURE
91 if (!do_d128_to_d64 (1.1111111111111135dl, 1.111111111111114dd)) FAILURE
92 if (!do_d128_to_d64 (-1.1111111111111125dl, -1.111111111111113dd)) FAILURE
93 if (!do_d128_to_d64 (-1.1111111111111135dl, -1.111111111111114dd)) FAILURE
95 DFP_SETROUND (FE_DEC_TOWARDZERO);
96 if (!do_d64_to_d32 (1.1111125dd, 1.111112df)) FAILURE
97 if (!do_d64_to_d32 (1.1111135dd, 1.111113df)) FAILURE
98 if (!do_d64_to_d32 (-1.1111125dd, -1.111112df)) FAILURE
99 if (!do_d64_to_d32 (-1.1111135dd, -1.111113df)) FAILURE
100 if (!do_d128_to_d32 (1.1111125dl, 1.111112df)) FAILURE
101 if (!do_d128_to_d32 (1.1111135dl, 1.111113df)) FAILURE
102 if (!do_d128_to_d32 (-1.1111125dl, -1.111112df)) FAILURE
103 if (!do_d128_to_d32 (-1.1111135dl, -1.111113df)) FAILURE
104 if (!do_d128_to_d64 (1.1111111111111125dl, 1.111111111111112dd)) FAILURE
105 if (!do_d128_to_d64 (1.1111111111111135dl, 1.111111111111113dd)) FAILURE
106 if (!do_d128_to_d64 (-1.1111111111111125dl, -1.111111111111112dd)) FAILURE
107 if (!do_d128_to_d64 (-1.1111111111111135dl, -1.111111111111113dd)) FAILURE
109 DFP_SETROUND (FE_DEC_UPWARD);
110 if (!do_d64_to_d32 (1.1111125dd, 1.111113df)) FAILURE
111 if (!do_d64_to_d32 (1.1111135dd, 1.111114df)) FAILURE
112 if (!do_d64_to_d32 (-1.1111125dd, -1.111112df)) FAILURE
113 if (!do_d64_to_d32 (-1.1111135dd, -1.111113df)) FAILURE
114 if (!do_d128_to_d32 (1.1111125dl, 1.111113df)) FAILURE
115 if (!do_d128_to_d32 (1.1111135dl, 1.111114df)) FAILURE
116 if (!do_d128_to_d32 (-1.1111125dl, -1.111112df)) FAILURE
117 if (!do_d128_to_d32 (-1.1111135dl, -1.111113df)) FAILURE
118 if (!do_d128_to_d64 (1.1111111111111125dl, 1.111111111111113dd)) FAILURE
119 if (!do_d128_to_d64 (1.1111111111111135dl, 1.111111111111114dd)) FAILURE
120 if (!do_d128_to_d64 (-1.1111111111111125dl, -1.111111111111112dd)) FAILURE
121 if (!do_d128_to_d64 (-1.1111111111111135dl, -1.111111111111113dd)) FAILURE
123 FINISH