• Lynn Boger's avatar
    cmd/asm/internal,cmd/internal/obj/ppc64: add alignment directive to asm for ppc64x · bdba5565
    Lynn Boger authored
    This adds support for an alignment directive that can be used
    within Go asm to indicate preferred code alignment for ppc64x.
    This is intended to be used with loops to improve
    performance.
    
    This change only adds the directive and aligns the code based
    on it. Follow up changes will modify asm functions for
    ppc64x that benefit from preferred alignment.
    
    Fixes #14935
    
    Here is one example of the improvement in memmove when the
    directive is used on the loops in the code:
    
    Memmove/64      8.74ns ± 0%    8.64ns ± 0%   -1.19%  (p=0.000 n=8+8)
    Memmove/128     11.5ns ± 0%    11.0ns ± 0%   -4.35%  (p=0.000 n=8+8)
    Memmove/256     23.0ns ± 0%    15.3ns ± 0%  -33.48%  (p=0.000 n=8+8)
    Memmove/512     31.7ns ± 0%    31.8ns ± 0%   +0.32%  (p=0.000 n=8+8)
    Memmove/1024    52.3ns ± 0%    43.9ns ± 0%  -16.10%  (p=0.000 n=8+8)
    Memmove/2048    93.2ns ± 0%    76.2ns ± 0%  -18.24%  (p=0.000 n=8+8)
    Memmove/4096     174ns ± 0%     141ns ± 0%  -18.97%  (p=0.000 n=8+8)
    
    Change-Id: I200d77e923dd5d78c22fe3f8eb142a8fbaff57bf
    Reviewed-on: https://go-review.googlesource.com/c/144218
    Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarDavid Chase <drchase@google.com>
    bdba5565
link.go 18.9 KB