diff options
author | Lynn Boger <laboger@linux.vnet.ibm.com> | 2023-05-15 14:11:30 -0500 |
---|---|---|
committer | Lynn Boger <laboger@linux.vnet.ibm.com> | 2023-05-16 17:08:59 +0000 |
commit | 470c6f6418efb9d720d5a86423c396b58c4b8f07 (patch) | |
tree | 95319c3e94756768bdcfa46f9323d8d880ca90f4 | |
parent | 5534f04498cfa71a69a78b9065e7f9138b48f05f (diff) | |
download | go-git-470c6f6418efb9d720d5a86423c396b58c4b8f07.tar.gz |
runtime: improve ppc64x memclr for tail bytes
This improves memclr for the last few bytes when
compiling for power9 or earlier.
Change-Id: I46940ebc7e98e27a2e48d4b319acb7d2106a6f29
Reviewed-on: https://go-review.googlesource.com/c/go/+/495035
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Paul Murphy <murp@ibm.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
-rw-r--r-- | src/runtime/memclr_ppc64x.s | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/runtime/memclr_ppc64x.s b/src/runtime/memclr_ppc64x.s index f0b13b40ae..bc4b3fc283 100644 --- a/src/runtime/memclr_ppc64x.s +++ b/src/runtime/memclr_ppc64x.s @@ -111,11 +111,21 @@ nozerolarge: STXVL V0, R3, R7 RET #else - MOVD R5, CTR // set up to clear tail bytes -zerotailloop: - MOVB R0, 0(R3) // clear single bytes - ADD $1, R3 - BDNZ zerotailloop // dec ctr, br zerotailloop if ctr not 0 + CMP R5, $4 + BLT next2 + MOVW R0, 0(R3) + ADD $4, R3 + ADD $-4, R5 +next2: + CMP R5, $2 + BLT next1 + MOVH R0, 0(R3) + ADD $2, R3 + ADD $-2, R5 +next1: + CMP R5, $0 + BC 12, 2, LR // beqlr + MOVB R0, 0(R3) RET #endif |