]> Cypherpunks repositories - gostls13.git/commit
cmd/asm/internal,cmd/internal/obj/ppc64: add alignment directive to asm for ppc64x
authorLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 23 Oct 2018 16:33:56 +0000 (12:33 -0400)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 23 Oct 2018 20:37:29 +0000 (20:37 +0000)
commitbdba55653fa56eb119099a3efbff187a97e8cf44
tree5113a6f1bee611bc8b25d7083942a1799e31eff2
parente41fbc79ccfedc5bf4d07356c20de0731bd9cfd9
cmd/asm/internal,cmd/internal/obj/ppc64: add alignment directive to asm for ppc64x

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: David Chase <drchase@google.com>
src/cmd/asm/internal/asm/asm.go
src/cmd/asm/internal/asm/parse.go
src/cmd/internal/obj/link.go
src/cmd/internal/obj/ppc64/asm9.go
src/cmd/internal/obj/util.go