diff options
Diffstat (limited to 'tools/test/testfloat/systemBugs.txt')
-rw-r--r-- | tools/test/testfloat/systemBugs.txt | 323 |
1 files changed, 0 insertions, 323 deletions
diff --git a/tools/test/testfloat/systemBugs.txt b/tools/test/testfloat/systemBugs.txt deleted file mode 100644 index ec95894a2849..000000000000 --- a/tools/test/testfloat/systemBugs.txt +++ /dev/null @@ -1,323 +0,0 @@ - -Known Floating-point Bugs Detected by TestFloat - -John R. Hauser -1997 December 15 - - -------------------------------------------------------------------------------- -Introduction - -Several popular systems have bugs that TestFloat is very likely to run -across. The ones I know of are documented here. First off, TestFloat finds -no errors in the following processors/machines: - - AMD 486 DX4's - Sun UltraSPARC 1's and 2's - -On the other hand, bugs are found in these processors/machines: - - Older Intel Pentiums (with the divide bug) - Intel Pentium Pros - Sun SPARCstation 1's and IPX's - Sun SPARCstation 10's - HP Precision Architecture processors, with HP-UX prior to version 10.10 - -For some reason, most of the bugs found involve conversions from floating- -point to integer formats. - -The bugs are shown as actual TestFloat error lines, along with a brief -explanation. The error lines given are not necessarily exhaustive and were -not necessarily output in the order shown. - -This document does not pretend to be an authoritative bug listing for all -commercial processors. The vast majority of processors are absent from this -list because I have never run TestFloat on such machines and I thus have no -knowledge of what bugs TestFloat might find in them. - -The latest version of this file can be found at the Web page `http:// -http.cs.berkeley.edu/~jhauser/arithmetic/testfloat.html'. - - -------------------------------------------------------------------------------- -Older Intel Pentiums (with the divide bug) - -The following conversion problems are found on Pentiums that also suffer -from the infamous floating-point divide bug. These bugs have been fixed on -newer Pentiums. (TestFloat does not find the divide bug.) - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -floatx80_to_int32 - --- A few small fractions are treated as though they were zero. - - Errors found in floatx80_to_int32, rounding nearest_even: - 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 ..... - BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - Errors found in floatx80_to_int32, rounding to_zero: - 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 ..... - BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - BFFC.C000000000000000 soft: 00000000 ....x syst: 00000000 ..... - Errors found in floatx80_to_int32, rounding down: - 3FFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - 3FFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - 3FFC.C000000000000000 soft: 00000000 ....x syst: 00000000 ..... - BFFB.8000000000000000 soft: FFFFFFFF ....x syst: 00000000 ..... - BFFC.8000000000000000 soft: FFFFFFFF ....x syst: 00000000 ..... - BFFC.C000000000000000 soft: FFFFFFFF ....x syst: 00000000 ..... - Errors found in floatx80_to_int32, rounding up: - 3FFB.8000000000000000 soft: 00000001 ....x syst: 00000000 ..... - 3FFC.8000000000000000 soft: 00000001 ....x syst: 00000000 ..... - 3FFC.C000000000000000 soft: 00000001 ....x syst: 00000000 ..... - BFFB.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - BFFC.8000000000000000 soft: 00000000 ....x syst: 00000000 ..... - - 3FFB.8000000000000000 is the fraction 1/16; 3FFC.8000000000000000 is 1/8; - and 3FFC.C000000000000000 is 3/16. Both positive and negative inputs are - affected. - --- Some (all?) positive floating-point values between 2^32 - 1/2 - (401E.FFFFFFFF00000000) and 2^32 (401F.0000000000000000) are rounded to - zero when the rounding mode is nearest/even or up. - - Errors found in floatx80_to_int32, rounding nearest_even: - 401E.FFFFFFFF80000000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFC00001FE soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFF8000000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFEC00000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFF002000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFC00000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFE00000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFFD7FFE soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFFFFFFE soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFFFFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x - Errors found in floatx80_to_int32, rounding up: - 401E.FFFFFFFF00800000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFF80000000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFEFFFC000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFC000000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFE7FFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFF00000 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFFE0800 soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFFF7FFB soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFFFFFFE soft: 7FFFFFFF v.... syst: 00000000 ....x - 401E.FFFFFFFFFFFFFFFF soft: 7FFFFFFF v.... syst: 00000000 ....x - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -------------------------------------------------------------------------------- -Intel Pentium Pros - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -floatx80_to_int32 - --- The inexact flag is sometimes raised instead of the invalid flag for - floating-point inputs under -(2^32) (C01F.0000000000000000). This bug is - sporadic. It appears to be deterministic but dependent on the sequence - of operations executed. - - Errors found in floatx80_to_int32, rounding nearest_even: - C01F.C000000000000002 soft: 80000000 v.... syst: 80000000 ....x - C021.F00000000000003F soft: 80000000 v.... syst: 80000000 ....x - Errors found in floatx80_to_int32, rounding to_zero: - C021.F00000000000003F soft: 80000000 v.... syst: 80000000 ....x - Errors found in floatx80_to_int32, rounding up: - C01F.C000000000000007 soft: 80000000 v.... syst: 80000000 ....x - C01F.C000000000001000 soft: 80000000 v.... syst: 80000000 ....x - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -------------------------------------------------------------------------------- -Sun SPARCstation 1's and IPX's - -Some older SPARCstations appear confused about whether underflow tininess is -detected before or after rounding. For conversions from double precision -to single precision, tininess is detected after rounding, while for all -quadruple-precision operations it is detected before rounding. Single- and -double-precision multipies go both ways: - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -float32_mul, float64_mul - --- For multiplies, underflow tininess is detected _before_ rounding if one - of the inputs is subnormal, and _after_ rounding otherwise. If tininess - is assumed to be detected before rounding, the following errors are - generated: - - Errors found in float32_mul, rounding nearest_even: - 001.000001 07E.7FFFFE soft: 001.000000 ...ux syst: 001.000000 ....x - 001.000001 87E.7FFFFE soft: 801.000000 ...ux syst: 801.000000 ....x - 001.000002 07E.7FFFFC soft: 001.000000 ...ux syst: 001.000000 ....x - 001.000002 87E.7FFFFC soft: 801.000000 ...ux syst: 801.000000 ....x - 001.000004 07E.7FFFF8 soft: 001.000000 ...ux syst: 001.000000 ....x - Errors found in float32_mul, rounding down: - 001.000001 87E.7FFFFE soft: 801.000000 ...ux syst: 801.000000 ....x - 001.000002 87E.7FFFFC soft: 801.000000 ...ux syst: 801.000000 ....x - 001.000004 87E.7FFFF8 soft: 801.000000 ...ux syst: 801.000000 ....x - 001.000008 87E.7FFFF0 soft: 801.000000 ...ux syst: 801.000000 ....x - 001.000010 87E.7FFFE0 soft: 801.000000 ...ux syst: 801.000000 ....x - Errors found in float32_mul, rounding up: - 001.000001 07E.7FFFFE soft: 001.000000 ...ux syst: 001.000000 ....x - 001.000002 07E.7FFFFC soft: 001.000000 ...ux syst: 001.000000 ....x - 001.000004 07E.7FFFF8 soft: 001.000000 ...ux syst: 001.000000 ....x - 001.000008 07E.7FFFF0 soft: 001.000000 ...ux syst: 001.000000 ....x - 001.000010 07E.7FFFE0 soft: 001.000000 ...ux syst: 001.000000 ....x - Errors found in float64_mul, rounding nearest_even: - 001.0000000000001 3FE.FFFFFFFFFFFFE - soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x - 001.0000000000001 BFE.FFFFFFFFFFFFE - soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x - 001.0000000000002 3FE.FFFFFFFFFFFFC - soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x - 001.0000000000002 BFE.FFFFFFFFFFFFC - soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x - 001.0000000000004 3FE.FFFFFFFFFFFF8 - soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x - Errors found in float64_mul, rounding down: - 001.0000000000001 BFE.FFFFFFFFFFFFE - soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x - 001.0000000000002 BFE.FFFFFFFFFFFFC - soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x - 001.0000000000004 BFE.FFFFFFFFFFFF8 - soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x - 001.0000000000008 BFE.FFFFFFFFFFFF0 - soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x - 001.0000000000010 BFE.FFFFFFFFFFFE0 - soft: 801.0000000000000 ...ux syst: 801.0000000000000 ....x - Errors found in float64_mul, rounding up: - 001.0000000000001 3FE.FFFFFFFFFFFFE - soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x - 001.0000000000002 3FE.FFFFFFFFFFFFC - soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x - 001.0000000000004 3FE.FFFFFFFFFFFF8 - soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x - 001.0000000000008 3FE.FFFFFFFFFFFF0 - soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x - 001.0000000000010 3FE.FFFFFFFFFFFE0 - soft: 001.0000000000000 ...ux syst: 001.0000000000000 ....x - - If we assume tininess should be detected after rounding, we get the - following errors: - - Errors found in float32_mul, rounding nearest_even: - 000.7FFC00 07F.000400 soft: 001.000000 ....x syst: 001.000000 ...ux - 000.7FFC00 87F.000400 soft: 801.000000 ....x syst: 801.000000 ...ux - 000.7FFE00 07F.000200 soft: 001.000000 ....x syst: 001.000000 ...ux - 000.7FFE00 87F.000200 soft: 801.000000 ....x syst: 801.000000 ...ux - 000.7FFF00 07F.000100 soft: 001.000000 ....x syst: 001.000000 ...ux - Errors found in float32_mul, rounding down: - 000.7FFC00 87F.000400 soft: 801.000000 ....x syst: 801.000000 ...ux - 000.7FFE00 87F.000200 soft: 801.000000 ....x syst: 801.000000 ...ux - 000.7FFF00 87F.000100 soft: 801.000000 ....x syst: 801.000000 ...ux - 000.7FFF80 87F.000080 soft: 801.000000 ....x syst: 801.000000 ...ux - 000.7FFFC0 87F.000040 soft: 801.000000 ....x syst: 801.000000 ...ux - Errors found in float32_mul, rounding up: - 000.7FFC00 07F.000400 soft: 001.000000 ....x syst: 001.000000 ...ux - 000.7FFE00 07F.000200 soft: 001.000000 ....x syst: 001.000000 ...ux - 000.7FFF00 07F.000100 soft: 001.000000 ....x syst: 001.000000 ...ux - 000.7FFF80 07F.000080 soft: 001.000000 ....x syst: 001.000000 ...ux - 000.7FFFC0 07F.000040 soft: 001.000000 ....x syst: 001.000000 ...ux - Errors found in float64_mul, rounding nearest_even: - 000.FFFFFFE000000 3FF.0000002000000 - soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux - 000.FFFFFFE000000 BFF.0000002000000 - soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux - 000.FFFFFFF000000 3FF.0000001000000 - soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux - 000.FFFFFFF000000 BFF.0000001000000 - soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux - 000.FFFFFFF800000 3FF.0000000800000 - soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux - Errors found in float64_mul, rounding down: - 000.FFFFFFE000000 BFF.0000002000000 - soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux - 000.FFFFFFF000000 BFF.0000001000000 - soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux - 000.FFFFFFF800000 BFF.0000000800000 - soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux - 000.FFFFFFFC00000 BFF.0000000400000 - soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux - 000.FFFFFFFE00000 BFF.0000000200000 - soft: 801.0000000000000 ....x syst: 801.0000000000000 ...ux - Errors found in float64_mul, rounding up: - 000.FFFFFFE000000 3FF.0000002000000 - soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux - 000.FFFFFFF000000 3FF.0000001000000 - soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux - 000.FFFFFFF800000 3FF.0000000800000 - soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux - 000.FFFFFFFC00000 3FF.0000000400000 - soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux - 000.FFFFFFFE00000 3FF.0000000200000 - soft: 001.0000000000000 ....x syst: 001.0000000000000 ...ux - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -------------------------------------------------------------------------------- -Sun SPARCstation 10's - -Like other SPARCstations, some SPARCstation 10's are inconsistent regarding -underflow tininess, detecting it after rounding for single- and double- -precision operations and before rounding for quadruple-precision operations. -The following bug has also been observed. - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -float32_to_int32_round_to_zero, float64_to_int32_round_to_zero - --- Single- and double-precision NaNs are converted to the integer zero. - (The invalid exception flag is raised correctly.) - - Errors found in float32_to_int32_round_to_zero: - 8FF.5D36AC soft: 7FFFFFFF v.... syst: 00000000 v.... - 0FF.7FFFC0 soft: 7FFFFFFF v.... syst: 00000000 v.... - 8FF.7C0000 soft: 7FFFFFFF v.... syst: 00000000 v.... - 0FF.2AB7ED soft: 7FFFFFFF v.... syst: 00000000 v.... - 0FF.03FFFF soft: 7FFFFFFF v.... syst: 00000000 v.... - Errors found in float64_to_int32_round_to_zero: - 7FF.45AD84DB2524A soft: 7FFFFFFF v.... syst: 00000000 v.... - 7FF.CFEE063EE0512 soft: 7FFFFFFF v.... syst: 00000000 v.... - 7FF.89FF03AB7DBA2 soft: 7FFFFFFF v.... syst: 00000000 v.... - 7FF.FFFFFFFFFF800 soft: 7FFFFFFF v.... syst: 00000000 v.... - FFF.68A6410E91BF6 soft: 7FFFFFFF v.... syst: 00000000 v.... - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -------------------------------------------------------------------------------- -HP Precision Architecture processors, with HP-UX prior to version 10.10 - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -float32_to_int32_round_to_zero, float64_to_int32_round_to_zero - --- When the floating-point value is too large, the overflow and inexact - exception flags are raised instead of the invalid flag. - - Errors found in float32_to_int32_round_to_zero: - 89E.000007 soft: 80000000 v.... syst: 80000000 ..o.x - 0A2.000020 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x - 8FA.7C0000 soft: 80000000 v.... syst: 80000000 ..o.x - Errors found in float64_to_int32_round_to_zero: - 7FD.0448700002F1C soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x - DAA.F000000000000 soft: 80000000 v.... syst: 80000000 ..o.x - 41E.063DA00005E65 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x - 47E.FFFF800000000 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x - 51F.0000000000004 soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x - DDA.0000001FFFFFF soft: 80000000 v.... syst: 80000000 ..o.x - D70.00000000003FF soft: 80000000 v.... syst: 80000000 ..o.x - C7E.0000100000000 soft: 80000000 v.... syst: 80000000 ..o.x - 47E.000000000007F soft: 7FFFFFFF v.... syst: 7FFFFFFF ..o.x - D57.000000000FFFF soft: 80000000 v.... syst: 80000000 ..o.x - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |