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 /compiler/llvmGen | |
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 'compiler/llvmGen')
-rw-r--r-- | compiler/llvmGen/LlvmCodeGen/Base.hs | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/compiler/llvmGen/LlvmCodeGen/Base.hs b/compiler/llvmGen/LlvmCodeGen/Base.hs index e978d6feaf..5ebb7b3830 100644 --- a/compiler/llvmGen/LlvmCodeGen/Base.hs +++ b/compiler/llvmGen/LlvmCodeGen/Base.hs @@ -97,7 +97,6 @@ cmmToLlvmType ty | isVecType ty = LMVector (vecLength ty) (cmmToLlvmType (vecE widthToLlvmFloat :: Width -> LlvmType widthToLlvmFloat W32 = LMFloat widthToLlvmFloat W64 = LMDouble -widthToLlvmFloat W80 = LMFloat80 widthToLlvmFloat W128 = LMFloat128 widthToLlvmFloat w = panic $ "widthToLlvmFloat: Bad float size: " ++ show w |