mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			273 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			273 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
 | 
						|
<HTML>
 | 
						|
 | 
						|
<HEAD>
 | 
						|
<TITLE>Berkeley TestFloat History</TITLE>
 | 
						|
</HEAD>
 | 
						|
 | 
						|
<BODY>
 | 
						|
 | 
						|
<H1>History of Berkeley TestFloat, to Release 3e</H1>
 | 
						|
 | 
						|
<P>
 | 
						|
John R. Hauser<BR>
 | 
						|
2018 January 20<BR>
 | 
						|
</P>
 | 
						|
 | 
						|
 | 
						|
<P>
 | 
						|
Releases of Berkeley TestFloat normally parallel those of Berkeley SoftFloat,
 | 
						|
on which TestFloat is based.
 | 
						|
Each TestFloat release necessarily incorporates all bug fixes from the
 | 
						|
corresponding release of SoftFloat.
 | 
						|
</P>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 3e (2018 January)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Fixed a problem with the all-in-one <CODE>testfloat</CODE> program whereby
 | 
						|
function set <CODE>-all1</CODE> incorrectly also tested the three-operand fused
 | 
						|
multiply-add operations.
 | 
						|
 | 
						|
<LI>
 | 
						|
Modified the expected behavior of rounding mode <CODE>odd</CODE> (jamming) when
 | 
						|
rounding to an integer value (either conversion to an integer format or a
 | 
						|
‘<CODE>roundToInt</CODE>’ function).
 | 
						|
Previously, for those cases only, rounding mode <CODE>odd</CODE> was expected
 | 
						|
to act the same as rounding to minimum magnitude.
 | 
						|
Now, when rounding to an integer value, the nearest odd integer is expected,
 | 
						|
consistent with the round-to-odd result of other operations.
 | 
						|
 | 
						|
<LI>
 | 
						|
Added options <CODE>-checkInvInts</CODE> and <CODE>-checkAll</CODE> to programs
 | 
						|
<CODE>testfloat_ver</CODE> and <CODE>testfloat</CODE>.
 | 
						|
 | 
						|
<LI>
 | 
						|
Improved the checking of integer results of invalid operations.
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 3d (2017 August)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
When the all-in-one <CODE>testfloat</CODE> program is compiled to test the C
 | 
						|
language’s arithmetic, added the ability to test library functions
 | 
						|
<CODE>sqrtf</CODE>, <CODE>sqrtl</CODE>, <CODE>fmaf</CODE>, <CODE>fma</CODE>,
 | 
						|
and <CODE>fmal</CODE>, which were added to the <NOBR>C Standard</NOBR> in 1999.
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 3c (2017 February)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Added support for testing rounding mode <CODE>odd</CODE> (jamming).
 | 
						|
 | 
						|
<LI>
 | 
						|
Made support for testing <NOBR>64-bit</NOBR> double-precistion floating-point
 | 
						|
be subject to macro <CODE>FLOAT64</CODE> (akin to macros <CODE>FLOAT16</CODE>,
 | 
						|
<CODE>EXTFLOAT80</CODE>, and <CODE>FLOAT128</CODE> from before).
 | 
						|
 | 
						|
<LI>
 | 
						|
Fixed some bugs that caused compilation to fail with certain combinations of
 | 
						|
option macro settings.
 | 
						|
 | 
						|
<LI>
 | 
						|
Corrected the types of two internal variables to be <CODE>sig_atomic_t</CODE>
 | 
						|
instead of <CODE>bool</CODE>.
 | 
						|
 | 
						|
<LI>
 | 
						|
Improved the formatting of some error reports (concerning where lines are
 | 
						|
broken when they exceed 79 characters in length).
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 3b (2016 July)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Added the ability to test the common <NOBR>16-bit</NOBR>
 | 
						|
“half-precision” floating-point format.
 | 
						|
 | 
						|
<LI>
 | 
						|
Added a <CODE>-seed</CODE> option to programs <CODE>testfloat_gen</CODE>,
 | 
						|
<CODE>testfloat</CODE>, and <CODE>testsoftfloat</CODE> for setting the seed for
 | 
						|
the pseudo-random number generator used to generate test cases.
 | 
						|
 | 
						|
<LI>
 | 
						|
Where a specific choice is needed for how tininess is detected on underflow,
 | 
						|
changed the default to be the detection of tininess after rounding
 | 
						|
(<CODE>-tininessafter</CODE>) instead of before rounding
 | 
						|
(<CODE>-tininessbefore</CODE>).
 | 
						|
 | 
						|
<LI>
 | 
						|
Modified the format of reported discrepancies to show the signs of
 | 
						|
floating-point values using <CODE>+</CODE> and <CODE>-</CODE> characters.
 | 
						|
 | 
						|
<LI>
 | 
						|
Documented the use of the <CODE>INLINE</CODE> macro, and fixed the sources for
 | 
						|
the case that function inlining is not supported by the C compiler.
 | 
						|
 | 
						|
<LI>
 | 
						|
Documented the possible need to define macro <CODE>THREAD_LOCAL</CODE> to match
 | 
						|
how the SoftFloat library was built.
 | 
						|
 | 
						|
<LI>
 | 
						|
Modified the provided Makefiles to allow some options to be overridden from the
 | 
						|
<CODE>make</CODE> command.
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 3a (2015 October)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Replaced the license text supplied by the University of California, Berkeley,
 | 
						|
and fixed some minor build problems.
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 3 (2015 February)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Complete rewrite, funded by the University of California, Berkeley, and
 | 
						|
consequently having a different use license than earlier releases.
 | 
						|
Visible changes included different names for testable functions and command
 | 
						|
options.
 | 
						|
 | 
						|
<LI>
 | 
						|
Reinstated separate programs for generating test cases
 | 
						|
(<CODE>testfloat_ver</CODE>) and verifying test results
 | 
						|
(<CODE>testfloat_gen</CODE>), as alternatives to the all-in-one
 | 
						|
<CODE>testfloat</CODE> program (which remained supported).
 | 
						|
 | 
						|
<LI>
 | 
						|
Added support for testing conversions between floating-point and unsigned
 | 
						|
integers, both <NOBR>32-bit</NOBR> and <NOBR>64-bit</NOBR>.
 | 
						|
 | 
						|
<LI>
 | 
						|
Added support for testing a fused multiply-add operation, for all testable
 | 
						|
floating-point formats except <NOBR>80-bit</NOBR> double-extended-precision.
 | 
						|
 | 
						|
<LI>
 | 
						|
Added support for testing a fifth rounding mode, <CODE>near_maxMag</CODE>
 | 
						|
(round to nearest, with ties to maximum magnitude, away from zero).
 | 
						|
 | 
						|
<LI>
 | 
						|
Added <CODE>timesoftfloat</CODE> (previously found in the Berkeley SoftFloat
 | 
						|
package).
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 2c (2015 January)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Fixed mistakes affecting some <NOBR>64-bit</NOBR> processors.
 | 
						|
 | 
						|
<LI>
 | 
						|
Made minor updates to the documentation, including improved wording for the
 | 
						|
legal restrictions on using TestFloat releases <NOBR>through 2c</NOBR> (not
 | 
						|
applicable to <NOBR>Release 3</NOBR> or later).
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<P>
 | 
						|
There was never a <NOBR>Release 2b</NOBR>.
 | 
						|
</P>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 2a (1998 December)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Added support for testing conversions between floating-point and
 | 
						|
<NOBR>64-bit</NOBR> signed integers.
 | 
						|
 | 
						|
<LI>
 | 
						|
Improved the Makefiles.
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 2 (1997 June)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Integrated the generation of test cases and the checking of system results into
 | 
						|
a single program.
 | 
						|
(Before they were separate programs, normally joined by explicit command-line
 | 
						|
pipes.)
 | 
						|
 | 
						|
<LI>
 | 
						|
Improved the sequence of test cases.
 | 
						|
 | 
						|
<LI>
 | 
						|
Added support for testing <NOBR>80-bit</NOBR> double-extended-precision and
 | 
						|
<NOBR>128-bit</NOBR> quadruple precision.
 | 
						|
 | 
						|
<LI>
 | 
						|
Made program output more readable, and added new command arguments.
 | 
						|
 | 
						|
<LI>
 | 
						|
Reduced dependence on the quality of the standard <CODE>rand</CODE> function
 | 
						|
for generating test cases.
 | 
						|
(Previously naively expected <CODE>rand</CODE> to be able to generate good
 | 
						|
random bits for the entire machine word width.)
 | 
						|
 | 
						|
<LI>
 | 
						|
Created <CODE>testsoftfloat</CODE>, with its own simpler complete software
 | 
						|
floating-point (“slowfloat”) for comparison purposes.
 | 
						|
 | 
						|
<LI>
 | 
						|
Made some changes to the source file structure, including renaming
 | 
						|
<CODE>environment.h</CODE> to <CODE>milieu.h</CODE> (to avoid confusion with
 | 
						|
environment variables).
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 1a (1996 July)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Added the <CODE>-tininessbefore</CODE> and <CODE>-tininessafter</CODE> options
 | 
						|
to control whether tininess should be detected before or after rounding.
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
<H3>Release 1 (1996 July)</H3>
 | 
						|
 | 
						|
<UL>
 | 
						|
 | 
						|
<LI>
 | 
						|
Original release.
 | 
						|
 | 
						|
</UL>
 | 
						|
 | 
						|
 | 
						|
</BODY>
 | 
						|
 |