diff options
author | Carter Schonwald <carter.schonwald@gmail.com> | 2019-04-10 20:28:41 -0400 |
---|---|---|
committer | Carter Schonwald <carter.schonwald@gmail.com> | 2019-04-10 20:28:41 -0400 |
commit | 42504f4a575395a35eec5c3fd7c9ef6e2b54e68e (patch) | |
tree | dc68a9ce346a6dd88203b2e70a0eb727082045a3 /libraries/base/tests | |
parent | be0dde8e3c27ca56477d1d1801bb77621f3618e1 (diff) | |
download | haskell-42504f4a575395a35eec5c3fd7c9ef6e2b54e68e.tar.gz |
removing x87 register support from native code gen
* simplifies registers to have GPR, Float and Double, by removing the SSE2 and X87 Constructors
* makes -msse2 assumed/default for x86 platforms, fixing a long standing nondeterminism in rounding
behavior in 32bit haskell code
* removes the 80bit floating point representation from the supported float sizes
* theres still 1 tiny bit of x87 support needed,
for handling float and double return values in FFI calls wrt the C ABI on x86_32,
but this one piece does not leak into the rest of NCG.
* Lots of code thats not been touched in a long time got deleted as a
consequence of all of this
all in all, this change paves the way towards a lot of future further
improvements in how GHC handles floating point computations, along with
making the native code gen more accessible to a larger pool of contributors.
Diffstat (limited to 'libraries/base/tests')
-rw-r--r-- | libraries/base/tests/Numeric/all.T | 17 | ||||
-rw-r--r-- | libraries/base/tests/Numeric/num009.hs | 4 |
2 files changed, 4 insertions, 17 deletions
diff --git a/libraries/base/tests/Numeric/all.T b/libraries/base/tests/Numeric/all.T index c4c9bb4646..9969a5552a 100644 --- a/libraries/base/tests/Numeric/all.T +++ b/libraries/base/tests/Numeric/all.T @@ -7,21 +7,10 @@ test('num006', normal, compile_and_run, ['']) test('num007', normal, compile_and_run, ['']) test('num008', normal, compile_and_run, ['']) -# On i386, we need -msse2 to get reliable floating point results -if config.arch == 'i386': - opts = '-msse2' -else: - opts = '' + test('num009', [ when(fast(), skip) - , when(wordsize(32), expect_broken(15062)) - , when(platform('i386-apple-darwin'), expect_broken(2370)) - , when(platform('powerpc64le-unknown-linux'), expect_broken(13634)) - , when(opsys('mingw32'), omit_ways(['ghci'])) ], - # We get different results at 1e20 on x86/Windows, so there is - # a special output file for that. I (SDM) don't think these are - # serious, since the results for lower numbers are all fine. - # We also get another set of results for 1e02 with GHCi, so - # I'm skipping that way altogether. + # , when(wordsize(32), expect_broken(15062)) + , when(platform('powerpc64le-unknown-linux'), expect_broken(13634))], compile_and_run, [opts]) test('num010', when(platform('i386-apple-darwin'), expect_broken_for(7043, 'ghci')), diff --git a/libraries/base/tests/Numeric/num009.hs b/libraries/base/tests/Numeric/num009.hs index e405ddf050..5133d43920 100644 --- a/libraries/base/tests/Numeric/num009.hs +++ b/libraries/base/tests/Numeric/num009.hs @@ -1,8 +1,6 @@ -- trac #2059 -- --- Note that this test fails miserably when compiled to use X87 floating point. --- For instance, in the case of (sin 1e20) the X86 FSIN instruction doesn't even --- get the sign right on my machine. + module Main(main) where |