[commit: ghc] master: Add support for passing SSE vectors in registers. (33bfc6a)
Geoffrey Mainland
gmainlan at microsoft.com
Fri Feb 1 23:02:31 CET 2013
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/33bfc6a700eaab9bc06974d6f71a80e61d9177c9
>---------------------------------------------------------------
commit 33bfc6a700eaab9bc06974d6f71a80e61d9177c9
Author: Geoffrey Mainland <gmainlan at microsoft.com>
Date: Wed Oct 31 15:42:01 2012 +0000
Add support for passing SSE vectors in registers.
This patch adds support for 6 XMM registers on x86-64 which overlap with the F
and D registers and may hold 128-bit wide SIMD vectors. Because there is not a
good way to attach type information to STG registers, we aggressively bitcast in
the LLVM back-end.
compiler/cmm/CmmCallConv.hs | 4 +-
compiler/cmm/CmmExpr.hs | 10 +++
compiler/cmm/CmmMachOp.hs | 40 ++++++----
compiler/cmm/PprC.hs | 9 ++
compiler/cmm/PprCmmExpr.hs | 1 +
compiler/codeGen/CgUtils.hs | 7 ++
compiler/codeGen/StgCmmPrim.hs | 18 +++-
compiler/llvmGen/LlvmCodeGen/Base.hs | 11 ++-
compiler/llvmGen/LlvmCodeGen/CodeGen.hs | 121 ++++++++++++++++++++++--------
compiler/llvmGen/LlvmCodeGen/Regs.hs | 7 ++
compiler/nativeGen/X86/CodeGen.hs | 88 ++++++++++++----------
includes/CodeGen.Platform.hs | 26 +++++++
includes/stg/MachRegs.h | 24 +++---
includes/stg/Regs.h | 42 ++++++++++
includes/stg/Types.h | 2 +
utils/deriveConstants/DeriveConstants.hs | 6 ++
16 files changed, 305 insertions(+), 111 deletions(-)
Diff suppressed because of size. To see it, use:
git show 33bfc6a700eaab9bc06974d6f71a80e61d9177c9
More information about the ghc-commits
mailing list