[commit: ghc] master: PPC NCG: Implement callish prim ops (89a3241)

git at git.haskell.org git at git.haskell.org
Wed Apr 26 01:11:50 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/89a3241f708502e8fbcfaddbbe634790ad9cd02a/ghc

>---------------------------------------------------------------

commit 89a3241f708502e8fbcfaddbbe634790ad9cd02a
Author: Peter Trommler <ptrommler at acm.org>
Date:   Tue Apr 25 18:37:16 2017 -0400

    PPC NCG: Implement callish prim ops
    
    Provide PowerPC optimised implementations of callish prim ops.
    
    MO_?_QuotRem
    The generic implementation of quotient remainder prim ops uses
    a division and a remainder operation. There is no remainder on
    PowerPC and so we need to implement remainder "by hand" which
    results in a duplication of the divide operation when using the
    generic code.
    
    Avoid this duplication by implementing the prim op in the native
    code generator.
    
    MO_U_Mul2
    Use PowerPC's instructions for long multiplication.
    
    Addition and subtraction
    Use PowerPC add/subtract with carry/overflow instructions
    
    MO_Clz and MO_Ctz
    Use PowerPC's CNTLZ instruction and implement count trailing
    zeros using count leading zeros
    
    MO_QuotRem2
    Implement an algorithm given by Henry Warren in "Hacker's Delight"
    using PowerPC divide instruction. TODO: Use long division instructions
    when available (POWER7 and later).
    
    Test Plan: validate on AIX and 32-bit Linux
    
    Reviewers: simonmar, erikd, hvr, austin, bgamari
    
    Reviewed By: erikd, hvr, bgamari
    
    Subscribers: trofi, kgardas, thomie
    
    Differential Revision: https://phabricator.haskell.org/D2973


>---------------------------------------------------------------

89a3241f708502e8fbcfaddbbe634790ad9cd02a
 compiler/codeGen/StgCmmPrim.hs    |  28 ++-
 compiler/nativeGen/PIC.hs         |   5 +-
 compiler/nativeGen/PPC/CodeGen.hs | 464 ++++++++++++++++++++++++++++++++------
 compiler/nativeGen/PPC/Instr.hs   | 102 ++++-----
 compiler/nativeGen/PPC/Ppr.hs     | 196 +++++++++++-----
 5 files changed, 611 insertions(+), 184 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 89a3241f708502e8fbcfaddbbe634790ad9cd02a


More information about the ghc-commits mailing list