summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLynn Boger <laboger@linux.vnet.ibm.com>2023-05-15 14:11:30 -0500
committerLynn Boger <laboger@linux.vnet.ibm.com>2023-05-16 17:08:59 +0000
commit470c6f6418efb9d720d5a86423c396b58c4b8f07 (patch)
tree95319c3e94756768bdcfa46f9323d8d880ca90f4
parent5534f04498cfa71a69a78b9065e7f9138b48f05f (diff)
downloadgo-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.s20
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