diff options
author | Ben Gamari <bgamari.foss@gmail.com> | 2018-10-15 13:17:46 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-10-15 17:41:30 -0400 |
commit | 58dffa0aa4c2b30ac270e32ccb26b58f53cc69ef (patch) | |
tree | 5ba69bf42507e11030b9719cd13d5cee41edd051 /compiler/cmm | |
parent | f945b7abc852f52b687db5aefca6e41656559520 (diff) | |
download | haskell-58dffa0aa4c2b30ac270e32ccb26b58f53cc69ef.tar.gz |
Deprecate -fllvm-pass-vectors-in-regs
Summary:
The behavior previously enabled by this flag is as been the default
since 8.6.1.
Reviewers: simonmar
Subscribers: rwbarton, carter
Differential Revision: https://phabricator.haskell.org/D5193
Diffstat (limited to 'compiler/cmm')
-rw-r--r-- | compiler/cmm/CmmCallConv.hs | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/compiler/cmm/CmmCallConv.hs b/compiler/cmm/CmmCallConv.hs index e1067e9519..f338415adc 100644 --- a/compiler/cmm/CmmCallConv.hs +++ b/compiler/cmm/CmmCallConv.hs @@ -102,19 +102,12 @@ passFloatArgsInXmm dflags = case platformArch (targetPlatform dflags) of ArchX86_64 -> True _ -> False --- On X86_64, we always pass 128-bit-wide vectors in registers. On 32-bit X86 --- and for all larger vector sizes on X86_64, LLVM's GHC calling convention --- does not currently pass vectors in registers. The patch to update the GHC --- calling convention to support passing SIMD vectors in registers is small and --- well-contained, so it may make it into LLVM 3.4. The hidden --- -fllvm-pass-vectors-in-regs flag will generate LLVM code that attempts to --- pass vectors in registers, but it must only be used with a version of LLVM --- that has an updated GHC calling convention. +-- We used to spill vector registers to the stack since the LLVM backend didn't +-- support vector registers in its calling convention. However, this has now +-- been fixed. This function remains only as a convenient way to re-enable +-- spilling when debugging code generation. passVectorInReg :: Width -> DynFlags -> Bool -passVectorInReg W128 dflags = case platformArch (targetPlatform dflags) of - ArchX86_64 -> True - _ -> gopt Opt_LlvmPassVectorsInRegisters dflags -passVectorInReg _ dflags = gopt Opt_LlvmPassVectorsInRegisters dflags +passVectorInReg _ _ = True assignStack :: DynFlags -> ByteOff -> (a -> CmmType) -> [a] -> ( |