diff options
Diffstat (limited to 'doc/TestFloat-source.html')
-rw-r--r-- | doc/TestFloat-source.html | 73 |
1 files changed, 52 insertions, 21 deletions
diff --git a/doc/TestFloat-source.html b/doc/TestFloat-source.html index 7d68a5f..42dc050 100644 --- a/doc/TestFloat-source.html +++ b/doc/TestFloat-source.html @@ -7,11 +7,11 @@ <BODY> -<H1>Berkeley TestFloat Release 3a: Source Documentation</H1> +<H1>Berkeley TestFloat Release 3b: Source Documentation</H1> <P> John R. Hauser<BR> -2015 October 23<BR> +2016 July 22<BR> </P> @@ -49,7 +49,7 @@ TestFloat, a small collection of programs for testing that an implementation of binary floating-point conforms to the IEEE Standard for Floating-Point Arithmetic. For basic documentation about TestFloat refer to -<A HREF="TestFloat-general.html"><CODE>TestFloat-general.html</CODE></A>. +<A HREF="TestFloat-general.html"><NOBR><CODE>TestFloat-general.html</CODE></NOBR></A>. </P> <P> @@ -66,7 +66,7 @@ TestFloat has been successfully compiled with the GNU C Compiler <P> <NOBR>Release 3</NOBR> of TestFloat was a complete rewrite relative to <NOBR>Release 2</NOBR> or earlier. -The current version of TestFloat is <NOBR>Release 3a</NOBR>. +The current version of TestFloat is <NOBR>Release 3b</NOBR>. </P> <P> @@ -75,7 +75,7 @@ binary floating-point that conforms to the IEEE Standard for Floating-Point Arithmetic. SoftFloat is not included with the TestFloat sources. It can be obtained from the Web page -<A HREF="http://www.jhauser.us/arithmetic/SoftFloat.html"><CODE>http://www.jhauser.us/arithmetic/SoftFloat.html</CODE></A>. +<A HREF="http://www.jhauser.us/arithmetic/SoftFloat.html"><NOBR><CODE>http://www.jhauser.us/arithmetic/SoftFloat.html</CODE></NOBR></A>. </P> @@ -120,10 +120,10 @@ and <CODE><stdint.h></CODE></I>. The TestFloat package was written by me, <NOBR>John R.</NOBR> Hauser. <NOBR>Release 3</NOBR> of TestFloat was a completely new implementation supplanting earlier releases. -The project to create <NOBR>Release 3</NOBR> (and <NOBR>now 3a</NOBR>) was done -in the employ of the University of California, Berkeley, within the Department -of Electrical Engineering and Computer Sciences, first for the Parallel -Computing Laboratory (Par Lab) and then for the ASPIRE Lab. +The project to create <NOBR>Release 3</NOBR> (now <NOBR>through 3b</NOBR>) was +done in the employ of the University of California, Berkeley, within the +Department of Electrical Engineering and Computer Sciences, first for the +Parallel Computing Laboratory (Par Lab) and then for the ASPIRE Lab. The work was officially overseen by Prof. Krste Asanovic, with funding provided by these sources: <BLOCKQUOTE> @@ -154,12 +154,12 @@ Oracle, and Samsung. </P> <P> -The following applies to the whole of TestFloat <NOBR>Release 3a</NOBR> as well +The following applies to the whole of TestFloat <NOBR>Release 3b</NOBR> as well as to each source file individually. </P> <P> -Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of +Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of California. All rights reserved. </P> @@ -315,7 +315,7 @@ In addition to the distributed sources, TestFloat depends on the existence of a compatible Berkeley SoftFloat library and the corresponding header file <CODE>softfloat.h</CODE>. As mentioned earlier, SoftFloat is a separate package available at Web page -<A HREF="http://www.jhauser.us/arithmetic/SoftFloat.html"><CODE>http://www.jhauser.us/arithmetic/SoftFloat.html</CODE></A>. +<A HREF="http://www.jhauser.us/arithmetic/SoftFloat.html"><NOBR><CODE>http://www.jhauser.us/arithmetic/SoftFloat.html</CODE></NOBR></A>. The SoftFloat library must be compiled before the TestFloat programs can be built. In the example Makefiles, the locations of the SoftFloat header files and @@ -425,6 +425,35 @@ The TestFloat source files are affected by a few C preprocessor macros: <DD> Must be defined for little-endian machines; must not be defined for big-endian machines. +<DT><CODE>INLINE</CODE> +<DD> +Can be defined to a sequence of tokens used to indicate that a C function +should be inlined. +If the compiler does not support the inlining of functions, this macro must not +be defined. +For compilers that conform to the C Standard’s rules for inline +functions, this macro can be defined as the single keyword <CODE>inline</CODE>. +For other compilers that follow a convention pre-dating the standardization of +<CODE>inline</CODE>, this macro may need to be defined to <CODE>extern</CODE> +<CODE>inline</CODE>. +<DT><CODE>THREAD_LOCAL</CODE> +<DD> +Can be defined to a sequence of tokens that, when appearing at the start of a +variable declaration, indicates to the C compiler that the variable is +<I>per-thread</I>, meaning that each execution thread gets its own separate +instance of the variable. +This macro is used in the supplied version of SoftFloat’s header +<CODE>softfloat.h</CODE>, in the declarations of variables +<CODE>softfloat_roundingMode</CODE>, <CODE>softfloat_detectTininess</CODE>, +<CODE>extF80_roundingPrecision</CODE>, and +<CODE>softfloat_exceptionFlags</CODE>. +To use the supplied, unmodified header <CODE>softfloat.h</CODE>, this macro +must be defined (or not defined) the same as when the SoftFloat library was +built. +<DT><CODE>FLOAT16</CODE> +<DD> +Must be defined if the TestFloat programs are to support the +<NOBR>16-bit</NOBR> half-precision floating-point format. <DT><CODE>EXTFLOAT80</CODE> <DD> Must be defined if the TestFloat programs are to support the @@ -435,18 +464,20 @@ Must be defined if the TestFloat programs are to support the <NOBR>128-bit</NOBR> quadruple-precision floating-point format. </DL> </BLOCKQUOTE> -Following the usual custom <NOBR>for C</NOBR>, the content of a macro’s -definition is irrelevant; +Following the usual custom <NOBR>for C</NOBR>, for all the macros except +<CODE>INLINE</CODE> and <CODE>THREAD_LOCAL</CODE>, the content of a +macro’s definition is irrelevant; what matters is a macro’s effect on <CODE>#ifdef</CODE> directives. </P> <P> -It is recommended that any definition of macro <CODE>LITTLEENDIAN</CODE> be -made in a build target’s <CODE>platform.h</CODE> header file, because -endianness is expected to be determined inflexibly by the target machine. -On the other hand, the <CODE>EXTFLOAT80</CODE> and <CODE>FLOAT128</CODE> macros -are not dictated by the target and hence might be better located in the -target’s Makefile (or its equivalent). +It is recommended that any definition of macros <CODE>LITTLEENDIAN</CODE>, +<CODE>INLINE</CODE>, and <CODE>THREAD_LOCAL</CODE> be made in a build +target’s <CODE>platform.h</CODE> header file, because these macros are +expected to be determined inflexibly by the target machine and compiler. +On the other hand, the <CODE>FLOAT16</CODE>, <CODE>EXTFLOAT80</CODE>, and +<CODE>FLOAT128</CODE> macros are not dictated by the target and hence might be +better located in the target’s Makefile (or its equivalent). </P> @@ -572,7 +603,7 @@ target’s Makefile be modified to refer to that alternate file in place of <P> At the time of this writing, the most up-to-date information about TestFloat and the latest release can be found at the Web page -<A HREF="http://www.jhauser.us/arithmetic/TestFloat.html"><CODE>http://www.jhauser.us/arithmetic/TestFloat.html</CODE></A>. +<A HREF="http://www.jhauser.us/arithmetic/TestFloat.html"><NOBR><CODE>http://www.jhauser.us/arithmetic/TestFloat.html</CODE></NOBR></A>. </P> |