Skip to content
Snippets Groups Projects
  • Paul E. Murphy's avatar
    7615b20d
    cmd/compile: generate subfic on ppc64 · 7615b20d
    Paul E. Murphy authored
    This merges an lis + subf into subfic, and for 32b constants
    lwa + subf into oris + ori + subf.
    
    The carry bit is no longer used in code generation, therefore
    I think we can clobber it as needed.  Note, lowered borrow/carry
    arithmetic is self-contained and thus is not affected.
    
    A few extra rules are added to ensure early transformations to
    SUBFCconst don't trip up earlier rules, fold constant operations,
    or otherwise simplify lowering.  Likewise, tests are added to
    ensure all rules are hit.  Generic constant folding catches
    trivial cases, however some lowering rules insert arithmetic
    which can introduce new opportunities (e.g BitLen or Slicemask).
    
    I couldn't find a specific benchmark to demonstrate noteworthy
    improvements, but this is generating subfic in many of the default
    bent test binaries, so we are at least saving a little code space.
    
    Change-Id: Iad7c6e5767eaa9dc24dc1c989bd1c8cfe1982012
    Reviewed-on: https://go-review.googlesource.com/c/go/+/249461
    
    
    Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarCarlos Eduardo Seo <cseo@linux.vnet.ibm.com>
    7615b20d
    History
    cmd/compile: generate subfic on ppc64
    Paul E. Murphy authored
    This merges an lis + subf into subfic, and for 32b constants
    lwa + subf into oris + ori + subf.
    
    The carry bit is no longer used in code generation, therefore
    I think we can clobber it as needed.  Note, lowered borrow/carry
    arithmetic is self-contained and thus is not affected.
    
    A few extra rules are added to ensure early transformations to
    SUBFCconst don't trip up earlier rules, fold constant operations,
    or otherwise simplify lowering.  Likewise, tests are added to
    ensure all rules are hit.  Generic constant folding catches
    trivial cases, however some lowering rules insert arithmetic
    which can introduce new opportunities (e.g BitLen or Slicemask).
    
    I couldn't find a specific benchmark to demonstrate noteworthy
    improvements, but this is generating subfic in many of the default
    bent test binaries, so we are at least saving a little code space.
    
    Change-Id: Iad7c6e5767eaa9dc24dc1c989bd1c8cfe1982012
    Reviewed-on: https://go-review.googlesource.com/c/go/+/249461
    
    
    Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarCarlos Eduardo Seo <cseo@linux.vnet.ibm.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.