[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