1
/* Test of conversion float --> signed long long.
2
$Id: flt2llng-01.c,v 1.1 2007/02/05 21:35:58 dmix Exp $
13
volatile long long v = 1;
15
PROGMEM const struct { /* Table of test cases. */
21
{ { 0x00000000 }, 0 },
22
{ { 0x80000000 }, 0 },
25
{ { 0x00000001 }, 0 },
26
{ { 0x007fffff }, 0 },
27
{ { 0x00800000 }, 0 },
28
{ { 0x3f7fffff }, 0 },
29
{ { 0x80000001 }, 0 },
30
{ { 0x807fffff }, 0 },
31
{ { 0x80800000 }, 0 },
32
{ { 0xbf7fffff }, 0 },
34
/* rounding (trunc to zero) */
35
{ { 0x3f7fffff }, 0 },
36
{ { 0x3f800000 }, 1 },
37
{ { 0x3fffffff }, 1 },
38
{ { 0x40000000 }, 2 },
39
{ { 0x403fffff }, 2 },
40
{ { 0x40400000 }, 3 },
41
{ { 0x407fffff }, 3 },
42
{ { .fl = 0x1.000000p+22 }, 0x00400000 },
43
{ { .fl = 0x1.000002p+22 }, 0x00400000 },
45
/* all shift values */
46
{ { .fl = 0x1p00 }, 0x0000000000000001LL },
47
{ { .fl = 0x1p01 }, 0x0000000000000002LL },
48
{ { .fl = 0x1p02 }, 0x0000000000000004LL },
49
{ { .fl = 0x1p03 }, 0x0000000000000008LL },
50
{ { .fl = 0x1p04 }, 0x0000000000000010LL },
51
{ { .fl = 0x1p05 }, 0x0000000000000020LL },
52
{ { .fl = 0x1p06 }, 0x0000000000000040LL },
53
{ { .fl = 0x1p07 }, 0x0000000000000080LL },
54
{ { .fl = 0x1p08 }, 0x0000000000000100LL },
55
{ { .fl = 0x1p09 }, 0x0000000000000200LL },
56
{ { .fl = 0x1p10 }, 0x0000000000000400LL },
57
{ { .fl = 0x1p11 }, 0x0000000000000800LL },
58
{ { .fl = 0x1p12 }, 0x0000000000001000LL },
59
{ { .fl = 0x1p13 }, 0x0000000000002000LL },
60
{ { .fl = 0x1p14 }, 0x0000000000004000LL },
61
{ { .fl = 0x1p15 }, 0x0000000000008000LL },
62
{ { .fl = 0x1p16 }, 0x0000000000010000LL },
63
{ { .fl = 0x1p17 }, 0x0000000000020000LL },
64
{ { .fl = 0x1p18 }, 0x0000000000040000LL },
65
{ { .fl = 0x1p19 }, 0x0000000000080000LL },
66
{ { .fl = 0x1p20 }, 0x0000000000100000LL },
67
{ { .fl = 0x1p21 }, 0x0000000000200000LL },
68
{ { .fl = 0x1p22 }, 0x0000000000400000LL },
69
{ { .fl = 0x1p23 }, 0x0000000000800000LL },
70
{ { .fl = 0x1p24 }, 0x0000000001000000LL },
71
{ { .fl = 0x1p25 }, 0x0000000002000000LL },
72
{ { .fl = 0x1p26 }, 0x0000000004000000LL },
73
{ { .fl = 0x1p27 }, 0x0000000008000000LL },
74
{ { .fl = 0x1p28 }, 0x0000000010000000LL },
75
{ { .fl = 0x1p29 }, 0x0000000020000000LL },
76
{ { .fl = 0x1p30 }, 0x0000000040000000LL },
77
{ { .fl = 0x1p31 }, 0x0000000080000000LL },
78
{ { .fl = 0x1p32 }, 0x0000000100000000LL },
79
{ { .fl = 0x1p33 }, 0x0000000200000000LL },
80
{ { .fl = 0x1p34 }, 0x0000000400000000LL },
81
{ { .fl = 0x1p35 }, 0x0000000800000000LL },
82
{ { .fl = 0x1p36 }, 0x0000001000000000LL },
83
{ { .fl = 0x1p37 }, 0x0000002000000000LL },
84
{ { .fl = 0x1p38 }, 0x0000004000000000LL },
85
{ { .fl = 0x1p39 }, 0x0000008000000000LL },
86
{ { .fl = 0x1p40 }, 0x0000010000000000LL },
87
{ { .fl = 0x1p41 }, 0x0000020000000000LL },
88
{ { .fl = 0x1p42 }, 0x0000040000000000LL },
89
{ { .fl = 0x1p43 }, 0x0000080000000000LL },
90
{ { .fl = 0x1p44 }, 0x0000100000000000LL },
91
{ { .fl = 0x1p45 }, 0x0000200000000000LL },
92
{ { .fl = 0x1p46 }, 0x0000400000000000LL },
93
{ { .fl = 0x1p47 }, 0x0000800000000000LL },
94
{ { .fl = 0x1p48 }, 0x0001000000000000LL },
95
{ { .fl = 0x1p49 }, 0x0002000000000000LL },
96
{ { .fl = 0x1p50 }, 0x0004000000000000LL },
97
{ { .fl = 0x1p51 }, 0x0008000000000000LL },
98
{ { .fl = 0x1p52 }, 0x0010000000000000LL },
99
{ { .fl = 0x1p53 }, 0x0020000000000000LL },
100
{ { .fl = 0x1p54 }, 0x0040000000000000LL },
101
{ { .fl = 0x1p55 }, 0x0080000000000000LL },
102
{ { .fl = 0x1p56 }, 0x0100000000000000LL },
103
{ { .fl = 0x1p57 }, 0x0200000000000000LL },
104
{ { .fl = 0x1p58 }, 0x0400000000000000LL },
105
{ { .fl = 0x1p59 }, 0x0800000000000000LL },
106
{ { .fl = 0x1p60 }, 0x1000000000000000LL },
107
{ { .fl = 0x1p61 }, 0x2000000000000000LL },
108
{ { .fl = 0x1p62 }, 0x4000000000000000LL },
109
{ { .fl = 0x1p63 }, 0x8000000000000000LL },
112
{ { .fl = -0x1p00 }, -1 },
113
{ { .fl = -0x3p00 }, -0x0000000000000003LL },
114
{ { .fl = -0xffp00 }, -0x00000000000000ffLL },
115
{ { .fl = -0x100p00 }, -0x0000000000000100LL },
116
{ { .fl = -0xffffp00 }, -0x000000000000ffffLL },
117
{ { .fl = -0x10000p00 }, -0x0000000000010000LL },
118
{ { .fl = -0xffffffp00 }, -0x0000000000ffffffLL },
119
{ { .fl = -0xffffffp07 }, -0x000000007fffff80LL },
120
{ { .fl = -0x1000000p07 }, -0x0000000080000000LL },
121
{ { .fl = -0xffffffp08 }, -0x00000000ffffff00LL },
122
{ { .fl = -0x1000000p08 }, -0x0000000100000000LL },
123
{ { .fl = -0xffffffp39 }, -0x7fffff8000000000LL },
126
{ { .fl = 0x0.fffffep+63 }, 0x7fffff0000000000LL },
127
{ { .fl = 0x0.ffffffp+63 }, 0x7fffff8000000000LL },
128
{ { .fl = -0x0.fffffep+63 }, -0x7fffff0000000000LL },
129
{ { .fl = -0x0.ffffffp+63 }, -0x7fffff8000000000LL },
130
{ { .fl = -0x1.000000p+63 }, 0x8000000000000000LL },
133
{ { .fl = 0x1.000000p+63 }, 0x8000000000000000LL },
134
{ { .fl = -0x1.000002p+63 }, 0x8000000000000000LL },
135
{ { 0x7f7fffff }, 0x8000000000000000LL },
136
{ { 0xff7fffff }, 0x8000000000000000LL },
139
{ { 0x7f800000 }, 0x8000000000000000LL },
140
{ { 0xff800000 }, 0x8000000000000000LL },
143
{ { 0x7f800001 }, 0x8000000000000000LL },
144
{ { 0x7fc00000 }, 0x8000000000000000LL },
145
{ { 0x7fffffff }, 0x8000000000000000LL },
146
{ { 0xff800001 }, 0x8000000000000000LL },
147
{ { 0xffc00000 }, 0x8000000000000000LL },
148
{ { 0xffffffff }, 0x8000000000000000LL },
151
void x_exit (int index)
154
fprintf (stderr, "t[%d]: %lld (%#llx)\n", index - 1, v, v);
156
exit (index ? index : -1);
165
for (i = 0; i < (int) (sizeof(t) / sizeof(t[0])); i++) {
166
x.lo = pgm_read_dword (& t[i].x);
167
z = pgm_read_qword (& t[i].z);
168
v = x.fl; /* __fixsfdi() */