VirtualBox

source: vbox/trunk/src/libs/softfloat-3e/doc/SoftFloat-history.html

Last change on this file was 94480, checked in by vboxsync, 2 years ago

libs/softfloat-3e: Copied from vendor branch (SoftFloat-3e.zip, md5: 7dac954ea4aed0697cbfee800ba4f492). bugref:9898

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/html
File size: 5.9 KB
Line 
1
2<HTML>
3
4<HEAD>
5<TITLE>Berkeley SoftFloat History</TITLE>
6</HEAD>
7
8<BODY>
9
10<H1>History of Berkeley SoftFloat, to Release 3e</H1>
11
12<P>
13John R. Hauser<BR>
142018 January 20<BR>
15</P>
16
17
18<H3>Release 3e (2018 January)</H3>
19
20<UL>
21
22<LI>
23Changed the default numeric code for optional rounding mode <CODE>odd</CODE>
24(round to odd, also known as <EM>jamming</EM>) from 5 to 6.
25
26<LI>
27Modified the behavior of rounding mode <CODE>odd</CODE> when rounding to an
28integer value (either conversion to an integer format or a
29&lsquo;<CODE>roundToInt</CODE>&rsquo; function).
30Previously, for those cases only, rounding mode <CODE>odd</CODE> acted the same
31as rounding to minimum magnitude.
32Now all operations are rounded consistently.
33
34<LI>
35Fixed some errors in the specialization code modeling Intel x86 floating-point,
36specifically the integers returned on invalid operations and the propagation of
37NaN payloads in a few rare cases.
38
39<LI>
40Added specialization code modeling ARM floating-point, conforming to VFPv2 or
41later.
42
43<LI>
44Added an example target for ARM processors.
45
46<LI>
47Fixed a minor bug whereby function <CODE>f16_to_ui64</CODE> might return a
48different integer than expected in the case that the floating-point operand is
49negative.
50
51<LI>
52Added example target-specific optimization for GCC, employing GCC instrinsics
53and support for <NOBR>128-bit</NOBR> integer arithmetic.
54
55<LI>
56Made other minor improvements.
57
58</UL>
59
60
61<H3>Release 3d (2017 August)</H3>
62
63<UL>
64
65<LI>
66Fixed bugs in the square root functions for <NOBR>64-bit</NOBR>
67double-precision, <NOBR>80-bit</NOBR> double-extended-precision, and
68<NOBR>128-bit</NOBR> quadruple-precision.
69For <NOBR>64-bit</NOBR> double-precision (<CODE>f64_sqrt</CODE>), the result
70could sometimes be off by <NOBR>1 unit</NOBR> in the last place
71(<NOBR>1 ulp</NOBR>) from what it should be.
72For the larger formats, the square root could be wrong in a large portion of
73the less-significant bits.
74(A bug in <CODE>f128_sqrt</CODE> was first reported by Alexei Sibidanov.)
75
76</UL>
77
78
79<H3>Release 3c (2017 February)</H3>
80
81<UL>
82
83<LI>
84Added optional rounding mode <CODE>odd</CODE> (round to odd, also known as
85<EM>jamming</EM>).
86
87<LI>
88Corrected the documentation concerning non-canonical representations in
89<NOBR>80-bit</NOBR> double-extended-precision.
90
91</UL>
92
93
94<H3>Release 3b (2016 July)</H3>
95
96<UL>
97
98<LI>
99Implemented the common <NOBR>16-bit</NOBR> &ldquo;half-precision&rdquo;
100floating-point format (<CODE>float16_t</CODE>).
101
102<LI>
103Made the integer values returned on invalid conversions to integer formats
104be determined by the port-specific specialization instead of being the same for
105all ports.
106
107<LI>
108Added preprocessor macro <CODE>THREAD_LOCAL</CODE> to allow the floating-point
109state (modes and exception flags) to be made per-thread.
110
111<LI>
112Modified the provided Makefiles to allow some options to be overridden from the
113<CODE>make</CODE> command.
114
115<LI>
116Made other minor improvements.
117
118</UL>
119
120
121<H3>Release 3a (2015 October)</H3>
122
123<UL>
124
125<LI>
126Replaced the license text supplied by the University of California, Berkeley.
127
128</UL>
129
130
131<H3>Release 3 (2015 February)</H3>
132
133<UL>
134
135<LI>
136Complete rewrite, funded by the University of California, Berkeley, and
137consequently having a different use license than earlier releases.
138Major changes included renaming most types and functions, upgrading some
139algorithms, restructuring the source files, and making SoftFloat into a true
140library.
141
142<LI>
143Added functions to convert between floating-point and unsigned integers, both
144<NOBR>32-bit</NOBR> and <NOBR>64-bit</NOBR> (<CODE>uint32_t</CODE> and
145<CODE>uint64_t</CODE>).
146
147<LI>
148Added functions for fused multiply-add, for all supported floating-point
149formats except <NOBR>80-bit</NOBR> double-extended-precision.
150
151<LI>
152Added support for a fifth rounding mode, <CODE>near_maxMag</CODE> (round to
153nearest, with ties to maximum magnitude, away from zero).
154
155<LI>
156Dropped the <CODE>timesoftfloat</CODE> program (now part of the Berkeley
157TestFloat package).
158
159</UL>
160
161
162<H3>Release 2c (2015 January)</H3>
163
164<UL>
165
166<LI>
167Fixed mistakes affecting some <NOBR>64-bit</NOBR> processors.
168
169<LI>
170Further improved the documentation and the wording for the legal restrictions
171on using SoftFloat releases <NOBR>through 2c</NOBR> (not applicable to
172<NOBR>Release 3</NOBR> or later).
173
174</UL>
175
176
177<H3>Release 2b (2002 May)</H3>
178
179<UL>
180
181<LI>
182Made minor updates to the documentation, including improved wording for the
183legal restrictions on using SoftFloat.
184
185</UL>
186
187
188<H3>Release 2a (1998 December)</H3>
189
190<UL>
191
192<LI>
193Added functions to convert between <NOBR>64-bit</NOBR> integers
194(<CODE>int64</CODE>) and all supported floating-point formats.
195
196<LI>
197Fixed a bug in all <NOBR>64-bit</NOBR>-version square root functions except
198<CODE>float32_sqrt</CODE> that caused the result sometimes to be off by
199<NOBR>1 unit</NOBR> in the last place (<NOBR>1 ulp</NOBR>) from what it should
200be.
201(Bug discovered by Paul Donahue.)
202
203<LI>
204Improved the Makefiles.
205</UL>
206
207
208<H3>Release 2 (1997 June)</H3>
209
210<UL>
211
212<LI>
213Created the <NOBR>64-bit</NOBR> (<CODE>bits64</CODE>) version, adding the
214<CODE>floatx80</CODE> and <CODE>float128</CODE> formats.
215
216<LI>
217Changed the source directory structure, splitting the sources into a
218<CODE>bits32</CODE> and a <CODE>bits64</CODE> version.
219Renamed <CODE>environment.h</CODE> to <CODE>milieu.h</CODE> to avoid confusion
220with environment variables.
221
222<LI>
223Fixed a small error that caused <CODE>float64_round_to_int</CODE> often to
224round the wrong way in nearest/even mode when the operand was between
2252<SUP>20</SUP> and 2<SUP>21</SUP> and halfway between two integers.
226
227</UL>
228
229
230<H3>Release 1a (1996 July)</H3>
231
232<UL>
233
234<LI>
235Corrected a mistake that caused borderline underflow cases not to raise the
236underflow flag when they should have.
237(Problem reported by Doug Priest.)
238
239<LI>
240Added the <CODE>float_detect_tininess</CODE> variable to control whether
241tininess is detected before or after rounding.
242
243</UL>
244
245
246<H3>Release 1 (1996 July)</H3>
247
248<UL>
249
250<LI>
251Original release, based on work done for the International Computer Science
252Institute (ICSI) in Berkeley, California.
253
254</UL>
255
256
257</BODY>
258
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use