removing x87 register support from native code gen
authorCarter Schonwald <carter.schonwald@gmail.com>
Thu, 11 Apr 2019 00:28:41 +0000 (20:28 -0400)
committerCarter Schonwald <carter.schonwald@gmail.com>
Thu, 11 Apr 2019 00:28:41 +0000 (20:28 -0400)
commit42504f4a575395a35eec5c3fd7c9ef6e2b54e68e
treedc68a9ce346a6dd88203b2e70a0eb727082045a3
parentbe0dde8e3c27ca56477d1d1801bb77621f3618e1
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.
27 files changed:
compiler/cmm/CmmCallConv.hs
compiler/cmm/CmmExpr.hs
compiler/cmm/CmmType.hs
compiler/codeGen/StgCmmPrim.hs
compiler/llvmGen/LlvmCodeGen/Base.hs
compiler/main/DynFlags.hs
compiler/nativeGen/AsmCodeGen.hs
compiler/nativeGen/Format.hs
compiler/nativeGen/NCGMonad.hs
compiler/nativeGen/PPC/CodeGen.hs
compiler/nativeGen/PPC/Ppr.hs
compiler/nativeGen/PPC/Regs.hs
compiler/nativeGen/Reg.hs
compiler/nativeGen/RegAlloc/Graph/TrivColorable.hs
compiler/nativeGen/RegClass.hs
compiler/nativeGen/SPARC/Instr.hs
compiler/nativeGen/SPARC/Ppr.hs
compiler/nativeGen/SPARC/Regs.hs
compiler/nativeGen/X86/CodeGen.hs
compiler/nativeGen/X86/Instr.hs
compiler/nativeGen/X86/Ppr.hs
compiler/nativeGen/X86/RegInfo.hs
compiler/nativeGen/X86/Regs.hs
compiler/types/TyCon.hs
includes/CodeGen.Platform.hs
libraries/base/tests/Numeric/all.T
libraries/base/tests/Numeric/num009.hs