[commit: ghc] simd: Add support for passing SSE vectors in registers. (085ac59)
Geoffrey Mainland
gmainlan at microsoft.com
Thu Jan 31 10:53:20 CET 2013
Repository : ssh://darcs.haskell.org//srv/darcs/ghc
On branch : simd
http://hackage.haskell.org/trac/ghc/changeset/085ac59d51c59e8d510d803cf27902d6d040b67a
>---------------------------------------------------------------
commit 085ac59d51c59e8d510d803cf27902d6d040b67a
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 085ac59d51c59e8d510d803cf27902d6d040b67a
More information about the ghc-commits
mailing list