diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/SoftFloat-history.html | 14 | ||||
-rw-r--r-- | doc/SoftFloat-source.html | 72 | ||||
-rw-r--r-- | doc/SoftFloat.html | 164 |
3 files changed, 147 insertions, 103 deletions
diff --git a/doc/SoftFloat-history.html b/doc/SoftFloat-history.html index a0ce556..08cab39 100644 --- a/doc/SoftFloat-history.html +++ b/doc/SoftFloat-history.html @@ -7,14 +7,24 @@ <BODY> -<H1>History of Berkeley SoftFloat, to Release 3</H1> +<H1>History of Berkeley SoftFloat, to Release 3a</H1> <P> John R. Hauser<BR> -2015 February 16<BR> +2015 October 23<BR> </P> +<H3>Release 3a (2015 October)</H3> + +<UL> + +<LI> +Replaced the license text supplied by the University of California, Berkeley. + +</UL> + + <H3>Release 3 (2015 February)</H3> <UL> diff --git a/doc/SoftFloat-source.html b/doc/SoftFloat-source.html index 87e6c1a..dff77aa 100644 --- a/doc/SoftFloat-source.html +++ b/doc/SoftFloat-source.html @@ -7,11 +7,11 @@ <BODY> -<H1>Berkeley SoftFloat Release 3: Source Documentation</H1> +<H1>Berkeley SoftFloat Release 3a: Source Documentation</H1> <P> John R. Hauser<BR> -2015 February 16<BR> +2015 October 23<BR> </P> @@ -65,10 +65,11 @@ SoftFloat has been successfully compiled with the GNU C Compiler </P> <P> -<NOBR>Release 3</NOBR> of SoftFloat is a complete rewrite relative to +<NOBR>Release 3</NOBR> of SoftFloat was a complete rewrite relative to <NOBR>Release 2</NOBR> or earlier. Changes to the interface of SoftFloat functions are documented in <A HREF="SoftFloat.html"><CODE>SoftFloat.html</CODE></A>. +The current version of SoftFloat is <NOBR>Release 3a</NOBR>. </P> @@ -88,7 +89,7 @@ arithmetic on <NOBR>64-bit</NOBR> integers. Earlier releases of SoftFloat included implementations of <NOBR>32-bit</NOBR> single-precision and <NOBR>64-bit</NOBR> double-precision floating-point that did not require <NOBR>64-bit</NOBR> integers, but this option is not supported -with <NOBR>Release 3</NOBR>. +starting with <NOBR>Release 3</NOBR>. Since 1999, ISO standards for C have mandated compiler support for <NOBR>64-bit</NOBR> integers. A compiler conforming to the 1999 C Standard or later is recommended but not @@ -111,12 +112,12 @@ SoftFloat’s dependence on these headers is detailed later in <P> The SoftFloat package was written by me, <NOBR>John R.</NOBR> Hauser. -<NOBR>Release 3</NOBR> of SoftFloat is a completely new implementation +<NOBR>Release 3</NOBR> of SoftFloat was a completely new implementation supplanting earlier releases. -This project (<NOBR>Release 3</NOBR> only, not earlier releases) 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> (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 work was officially overseen by Prof. Krste Asanovic, with funding provided by these sources: <BLOCKQUOTE> @@ -147,43 +148,56 @@ Oracle, and Samsung. </P> <P> -The following applies to the whole of SoftFloat <NOBR>Release 3</NOBR> as well +The following applies to the whole of SoftFloat <NOBR>Release 3a</NOBR> as well as to each source file individually. </P> <P> Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of -California (Regents). -All Rights Reserved. +California. +All rights reserved. +</P> + +<P> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -</P> +<OL> +<LI> <P> Redistributions of source code must retain the above copyright notice, this -list of conditions, and the following two paragraphs of disclaimer. +list of conditions, and the following disclaimer. +</P> + +<LI> +<P> Redistributions in binary form must reproduce the above copyright notice, this -list of conditions, and the following two paragraphs of disclaimer in the -documentation and/or other materials provided with the distribution. -Neither the name of the Regents nor the names of its contributors may be used -to endorse or promote products derived from this software without specific -prior written permission. +list of conditions, and the following disclaimer in the documentation and/or +other materials provided with the distribution. </P> +<LI> <P> -IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF -THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS BEEN -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Neither the name of the University nor the names of its contributors may be +used to endorse or promote products derived from this software without specific +prior written permission. +</P> + +</OL> </P> <P> -REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS -PROVIDED "<NOBR>AS IS</NOBR>". -REGENTS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, -ENHANCEMENTS, OR MODIFICATIONS. +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS “AS IS”, +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE +DISCLAIMED. +IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </P> diff --git a/doc/SoftFloat.html b/doc/SoftFloat.html index 747046e..19176dc 100644 --- a/doc/SoftFloat.html +++ b/doc/SoftFloat.html @@ -7,11 +7,11 @@ <BODY> -<H1>Berkeley SoftFloat Release 3: Library Interface</H1> +<H1>Berkeley SoftFloat Release 3a: Library Interface</H1> <P> John R. Hauser<BR> -2015 February 16<BR> +2015 October 23<BR> </P> @@ -105,9 +105,15 @@ Information about the standard is available elsewhere. </P> <P> -The current version of SoftFloat is <NOBR>Release 3</NOBR>. -The functional interface of this version differs in many details from that of -earlier SoftFloat releases. +The current version of SoftFloat is <NOBR>Release 3a</NOBR>. +The only difference between this version and the previous +<NOBR>Release 3</NOBR> is the replacement of the license text supplied by the +University of California. +</P> + +<P> +The functional interface of SoftFloat <NOBR>Release 3</NOBR> and afterward +differs in many details from that of earlier releases. For specifics of these differences, see <NOBR>section 9</NOBR> below, <I>Changes from SoftFloat <NOBR>Release 2</NOBR></I>. </P> @@ -129,7 +135,7 @@ arithmetic on <NOBR>64-bit</NOBR> integers. Earlier releases of SoftFloat included implementations of <NOBR>32-bit</NOBR> single-precision and <NOBR>64-bit</NOBR> double-precision floating-point that did not require <NOBR>64-bit</NOBR> integers, but this option is not supported -with <NOBR>Release 3</NOBR>. +starting with <NOBR>Release 3</NOBR>. Since 1999, ISO standards for C have mandated compiler support for <NOBR>64-bit</NOBR> integers. A compiler conforming to the 1999 C Standard or later is recommended but not @@ -139,7 +145,7 @@ strictly required. <P> Most operations not required by the original 1985 version of the IEEE Floating-Point Standard but added in the 2008 version are not yet supported in -SoftFloat <NOBR>Release 3</NOBR>. +SoftFloat <NOBR>Release 3a</NOBR>. </P> @@ -147,12 +153,12 @@ SoftFloat <NOBR>Release 3</NOBR>. <P> The SoftFloat package was written by me, <NOBR>John R.</NOBR> Hauser. -<NOBR>Release 3</NOBR> of SoftFloat is a completely new implementation +<NOBR>Release 3</NOBR> of SoftFloat was a completely new implementation supplanting earlier releases. -This project (<NOBR>Release 3</NOBR> only, not earlier releases) 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> (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 work was officially overseen by Prof. Krste Asanovic, with funding provided by these sources: <BLOCKQUOTE> @@ -183,43 +189,56 @@ Oracle, and Samsung. </P> <P> -The following applies to the whole of SoftFloat <NOBR>Release 3</NOBR> as well +The following applies to the whole of SoftFloat <NOBR>Release 3a</NOBR> as well as to each source file individually. </P> <P> Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of -California (Regents). -All Rights Reserved. +California. +All rights reserved. +</P> + +<P> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -</P> +<OL> +<LI> <P> Redistributions of source code must retain the above copyright notice, this -list of conditions, and the following two paragraphs of disclaimer. +list of conditions, and the following disclaimer. +</P> + +<LI> +<P> Redistributions in binary form must reproduce the above copyright notice, this -list of conditions, and the following two paragraphs of disclaimer in the -documentation and/or other materials provided with the distribution. -Neither the name of the Regents nor the names of its contributors may be used -to endorse or promote products derived from this software without specific -prior written permission. +list of conditions, and the following disclaimer in the documentation and/or +other materials provided with the distribution. </P> +<LI> <P> -IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, -INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF -THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS BEEN -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Neither the name of the University nor the names of its contributors may be +used to endorse or promote products derived from this software without specific +prior written permission. +</P> + +</OL> </P> <P> -REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS -PROVIDED "<NOBR>AS IS</NOBR>". -REGENTS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, -ENHANCEMENTS, OR MODIFICATIONS. +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS “AS IS”, +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE +DISCLAIMED. +IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </P> @@ -345,7 +364,7 @@ comparisons between two values in the same floating-point format. <P> The following operations required by the 2008 IEEE Floating-Point Standard are -not supported in SoftFloat <NOBR>Release 3</NOBR>: +not supported in SoftFloat <NOBR>Release 3a</NOBR>: <UL> <LI> <B>nextUp</B>, <B>nextDown</B>, <B>minNum</B>, <B>maxNum</B>, <B>minNumMag</B>, @@ -387,9 +406,8 @@ leading significand bit must <NOBR>be 1</NOBR> unless it is required to </P> <P> -For <NOBR>Release 3</NOBR> of SoftFloat, functions are not guaranteed to -operate as expected when inputs of type <CODE>extFloat80_t</CODE> are -non-canonical. +Functions are not guaranteed to operate as expected when inputs of type +<CODE>extFloat80_t</CODE> are non-canonical. Assuming all of a function’s <CODE>extFloat80_t</CODE> inputs (if any) are canonical, function outputs of type <CODE>extFloat80_t</CODE> will always be canonical. @@ -1100,15 +1118,16 @@ function may cause a trap or abort appropriate for the current system. <H2>9. Changes from SoftFloat <NOBR>Release 2</NOBR></H2> <P> -Apart from the change in the legal use license, there are numerous technical -differences between <NOBR>Release 3</NOBR> of SoftFloat and earlier releases. +Apart from a change in the legal use license, <NOBR>Release 3</NOBR> of +SoftFloat introduced numerous technical differences compared to earlier +releases. </P> <H3>9.1. Name Changes</H3> <P> -The most obvious and pervasive difference compared to <NOBR>Release 2</NOBR> is -that the names of most functions and variables have changed, even when the +The most obvious and pervasive difference compared to <NOBR>Release 2</NOBR> +is that the names of most functions and variables have changed, even when the behavior has not. First, the floating-point types, the mode variables, the exception flags variable, the function to raise exceptions, and various associated constants @@ -1204,8 +1223,8 @@ have been renamed as follows: </P> <P> -Furthermore, <NOBR>Release 3</NOBR> has adopted the following new abbreviations -for function names: +Furthermore, <NOBR>Release 3</NOBR> adopted the following new abbreviations for +function names: <BLOCKQUOTE> <TABLE> <TR> @@ -1223,7 +1242,7 @@ for function names: Thus, for example, the function to add two <NOBR>32-bit</NOBR> floating-point numbers, previously called <CODE>float32_add</CODE> in <NOBR>Release 2</NOBR>, is now <CODE>f32_add</CODE>. -Lastly, there are a few other changes to function names: +Lastly, there have been a few other changes to function names: <BLOCKQUOTE> <TABLE> <TR> @@ -1253,29 +1272,30 @@ Lastly, there are a few other changes to function names: <H3>9.2. Changes to Function Arguments</H3> <P> -Besides simple name changes, some operations have a different interface in -<NOBR>Release 3</NOBR> than they had in <NOBR>Release 2</NOBR>: +Besides simple name changes, some operations were given a different interface +in <NOBR>Release 3</NOBR> than they had in <NOBR>Release 2</NOBR>: <UL> <LI> <P> -In <NOBR>Release 3</NOBR>, integer arguments and results of functions have +Since <NOBR>Release 3</NOBR>, integer arguments and results of functions have standard types from header <CODE><stdint.h></CODE>, such as <CODE>uint32_t</CODE>, whereas previously their types could be defined differently for each port of SoftFloat, usually using traditional C types such as <CODE>unsigned</CODE> <CODE>int</CODE>. -Likewise, functions in <NOBR>Release 3</NOBR> pass Booleans as standard type -<CODE>bool</CODE> from <CODE><stdbool.h></CODE>, whereas previously these -were again passed as a port-specific type (usually <CODE>int</CODE>). +Likewise, functions in <NOBR>Release 3</NOBR> and later pass Booleans as +standard type <CODE>bool</CODE> from <CODE><stdbool.h></CODE>, whereas +previously these were again passed as a port-specific type (usually +<CODE>int</CODE>). </P> <LI> <P> As explained earlier in <NOBR>section 4.5</NOBR>, <I>Conventions for Passing -Arguments and Results</I>, SoftFloat functions in <NOBR>Release 3</NOBR> may -pass <NOBR>80-bit</NOBR> and <NOBR>128-bit</NOBR> floating-point values through -pointers, meaning that functions take pointer arguments and then read or write -floating-point values at the locations indicated by the pointers. +Arguments and Results</I>, SoftFloat functions in <NOBR>Release 3</NOBR> and +later may pass <NOBR>80-bit</NOBR> and <NOBR>128-bit</NOBR> floating-point +values through pointers, meaning that functions take pointer arguments and then +read or write floating-point values at the locations indicated by the pointers. In <NOBR>Release 2</NOBR>, floating-point arguments and results were always passed by value, regardless of their size. </P> @@ -1286,7 +1306,7 @@ Functions that round to an integer have additional <CODE><I>roundingMode</I></CODE> and <CODE><I>exact</I></CODE> arguments that they did not have in <NOBR>Release 2</NOBR>. Refer to sections 8.2 <NOBR>and 8.7</NOBR> for descriptions of these functions -in <NOBR>Release 3</NOBR>. +since <NOBR>Release 3</NOBR>. For <NOBR>Release 2</NOBR>, the rounding mode, when needed, was taken from the same global variable that affects the basic arithmetic operations (now called <CODE>softfloat_roundingMode</CODE> but previously known as @@ -1296,10 +1316,11 @@ an exact integer value, and if the <I>invalid</I> exception was not raised by the function, the <I>inexact</I> exception was always raised. <NOBR>Release 2</NOBR> had no option to suppress raising <I>inexact</I> in this case. -Applications using SoftFloat <NOBR>Release 3</NOBR> can get the same effect as -<NOBR>Release 2</NOBR> by passing variable <CODE>softfloat_roundingMode</CODE> -for argument <CODE><I>roundingMode</I></CODE> and <CODE>true</CODE> for -argument <CODE><I>exact</I></CODE>. +Applications using SoftFloat <NOBR>Release 3</NOBR> or later can get the same +effect as <NOBR>Release 2</NOBR> by passing variable +<CODE>softfloat_roundingMode</CODE> for argument +<CODE><I>roundingMode</I></CODE> and <CODE>true</CODE> for argument +<CODE><I>exact</I></CODE>. </P> </UL> @@ -1308,18 +1329,17 @@ argument <CODE><I>exact</I></CODE>. <H3>9.3. Added Capabilities</H3> <P> -<NOBR>Release 3</NOBR> adds some new features not present in -<NOBR>Release 2</NOBR>: +With <NOBR>Release 3</NOBR>, some new features have been added that were not +present in <NOBR>Release 2</NOBR>: <UL> <LI> <P> -With <NOBR>Release 3</NOBR>, a port of SoftFloat can now define any of the -floating-point types <CODE>float32_t</CODE>, <CODE>float64_t</CODE>, -<CODE>extFloat80_t</CODE>, and <CODE>float128_t</CODE> as aliases for C’s -standard floating-point types <CODE>float</CODE>, <CODE>double</CODE>, and -<CODE>long</CODE> <CODE>double</CODE>, using either <CODE>#define</CODE> or -<CODE>typedef</CODE>. +A port of SoftFloat can now define any of the floating-point types +<CODE>float32_t</CODE>, <CODE>float64_t</CODE>, <CODE>extFloat80_t</CODE>, and +<CODE>float128_t</CODE> as aliases for C’s standard floating-point types +<CODE>float</CODE>, <CODE>double</CODE>, and <CODE>long</CODE> +<CODE>double</CODE>, using either <CODE>#define</CODE> or <CODE>typedef</CODE>. This potential convenience was not supported under <NOBR>Release 2</NOBR>. </P> @@ -1341,8 +1361,8 @@ unsigned integers. <P> <LI> A new, fifth rounding mode, <CODE>softfloat_round_near_maxMag</CODE> (round to -nearest, with ties to maximum magnitude, away from zero) is supported for all -cases involving rounding. +nearest, with ties to maximum magnitude, away from zero) is now supported for +all cases involving rounding. </P> <P> @@ -1357,7 +1377,7 @@ Fused multiply-add functions have been added for the non-extended formats, <H3>9.4. Better Compatibility with the C Language</H3> <P> -<NOBR>Release 3</NOBR> of SoftFloat is written to conform better to the ISO C +<NOBR>Release 3</NOBR> of SoftFloat was written to conform better to the ISO C Standard’s rules for portability. For example, older releases of SoftFloat employed type conversions in ways that, while commonly practiced, are not fully defined by the C Standard. @@ -1368,7 +1388,7 @@ unions, the behavior around which is more strictly regulated these days. <H3>9.5. New Organization as a Library</H3> <P> -With <NOBR>Release 3</NOBR>, SoftFloat now builds as a library. +Starting with <NOBR>Release 3</NOBR>, SoftFloat now builds as a library. Previously, SoftFloat compiled into a single, monolithic object file containing all the SoftFloat functions, with the consequence that a program linking with SoftFloat would get every SoftFloat function in its binary file even if only a @@ -1381,8 +1401,8 @@ others. <H3>9.6. Optimization Gains (and Losses)</H3> <P> -Individual SoftFloat functions are variously improved in <NOBR>Release 3</NOBR> -compared to earlier releases. +Individual SoftFloat functions have been variously improved in +<NOBR>Release 3</NOBR> compared to earlier releases. In particular, better, faster algorithms have been deployed for the operations of division, square root, and remainder. For functions operating on the larger <NOBR>80-bit</NOBR> and |