From 470c6f6418efb9d720d5a86423c396b58c4b8f07 Mon Sep 17 00:00:00 2001 From: Lynn Boger Date: Mon, 15 May 2023 14:11:30 -0500 Subject: [PATCH] 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 Reviewed-by: Paul Murphy Reviewed-by: Dmitri Shuralyov TryBot-Result: Gopher Robot Reviewed-by: Heschi Kreinick --- src/runtime/memclr_ppc64x.s | 20 +++++++++++++++----- 1 file 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 -- 2.50.0