From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001
From: Angelos Mouzakitis
+John R. Hauser
+The
+Note that, even if there are no bugs in the source code for SoftFloat (not
+guaranteed), a build of SoftFloat might still fail due to an issue with the
+build process, such as an incompatible compiler option or a compiler bug.
+
+The
+The Berkeley TestFloat Release 3e:
+
+testsoftfloat
+2018 January 20
+Overview
+
+testsoftfloat
program tests that a build of the Berkeley
+SoftFloat library conforms to the IEEE Standard for Binary Floating-Point
+Arithmetic as expected.
+Program testsoftfloat
is part of the Berkeley TestFloat package, a
+small collection of programs for performing such tests.
+For general information about TestFloat, as well as for basics about the
+operation of testsoftfloat
and how to interpret its output, see
+file
+TestFloat-general.html
testsoftfloat
program will ordinarily test a function for all
+five rounding modes defined by the IEEE Floating-Point Standard, one after the
+other, plus possibly a sixth mode, round to odd (depending on the
+options selected when testsoftfloat
was compiled).
+If an operation is not supposed to require rounding, it will by default be
+tested only with the rounding mode set to near_even
+(nearest/even).
+In the same way, if an operation is affected by the way in which underflow
+tininess is detected, testsoftfloat
tests the function with
+tininess detected both before rounding and after rounding.
+For testsoftfloat
also tests the function
+for all three rounding precision modes, one after the other.
+Testing can be limited to a single rounding mode, a single tininess mode,
+and/or a single rounding precision with appropriate command-line options.
+Command Syntax
+
+testsoftfloat
program is executed as a command with this
+syntax:
+
+
+Square brackets (
+testsoftfloat [<option>...] <function>
+
+[ ]
) denote optional arguments,
+<option>
is a supported option, and
+<function>
is the name of either a testable function
+or a function set.
+The available options and function sets are documented below.
+If testsoftfloat
is executed without any arguments, a summary of
+usage is written.
+
+The testsoftfloat
program accepts several command options.
+If mutually contradictory options are given, the last one has priority.
+
-help
+The -help
option causes a summary of program usage to be written,
+after which the program exits.
+
-seed <num>
+The -seed
option sets the seed for the pseudo-random number
+generator used for generating test cases.
+The argument to -seed
is a nonnegative integer.
+Executing the same testsoftfloat
program with the same arguments
+(including the same pseudo-random number seed) should always perform the same
+sequence of tests, whereas changing the pseudo-random number seed should result
+in a different sequence of tests.
+The default seed number
-level <num>
+The -level
option sets the level of testing.
+The argument to -level
can be either 1
-errors <num>
+The -errors
option instructs testsoftfloat
to report
+no more than the specified number of errors for any combination of function,
+rounding mode, etc.
+The argument to -errors
must be a nonnegative decimal integer.
+Once the specified number of error reports has been generated,
+testsoftfloat
ends the current test and begins the next one, if
+any.
+The default is -errors
20
+Against intuition, -errors
0
testsoftfloat
to report every error it finds.
+
-errorstop
+The -errorstop
option causes the program to exit after the first
+function for which any errors are reported.
+
-forever
+The -forever
option causes a single function to be repeatedly
+tested.
+Only one rounding mode and/or rounding precision can be tested in a single
+execution.
+If not specified, the rounding mode defaults to nearest/even.
+For
-precision32, -precision64, -precision80
+For -precision32
option restricts
+testing to only the cases in which the rounding precision is
+-precision64
fixes the rounding precision to
+-precision80
fixes the rounding precision to the full
+
-rnear_even, -rnear_maxMag, -rminMag, -rmin, -rmax, -rodd
+The -rnear_even
option restricts testing to only the cases in
+which the rounding mode is nearest/even.
+The other rounding mode choices are not tested.
+Likewise, -rnear_maxMag
forces rounding to nearest/maximum
+magnitude (nearest-away), -rminMag
forces rounding to minimum
+magnitude (toward zero), -rmin
forces rounding to minimum (down,
+toward negative infinity), -rmax
forces rounding to maximum (up,
+toward positive infinity), and -rodd
, if supported, forces
+rounding to odd.
+These options are ignored for operations that are exact and thus do not round.
+
-tininessbefore, -tininessafter
+The -tininessbefore
option restricts testing to only the cases in
+which tininess on underflow is detected before rounding.
+Likewise, -tininessafter
restricts testing to only the cases in
+which tininess on underflow is detected after rounding.
+
-notexact, -exact
+For functions that round to an integer (conversions to integer types and the
+roundToInt
functions), the -notexact
option restricts
+testing to only the cases for which the exact
operand
+(specifying whether the inexact exception flag may be raised) is
+false
.
+Likewise, the -exact
option restricts testing to only the cases
+for which the exact
operand is true
.
+
+Just as testsoftfloat
can test a function for all five or six
+rounding modes in sequence, multiple functions can be tested with a single
+execution of testsoftfloat
.
+Two sets are recognized: -all1
and -all2
.
+The set -all1
is all one-operand operations, while
+-all2
is all two-operand operations.
+A function set is used in place of a function name in the
+testsoftfloat
command line, such as
+
++ + ++testsoftfloat [<option>...] -all1 ++
+For the purpose of deciding the number of operands of an operation, any
+roundingMode
and exact
arguments are
+ignored.
+(Such arguments specify the rounding mode and whether the inexact
+exception flag may be raised, respectively.)
+Thus, functions that convert to integer type and the roundToInt
+functions are included in the set of one-operand operations tested by
+-all1
.
+