]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: improve ppc64x memclr for tail bytes
authorLynn Boger <laboger@linux.vnet.ibm.com>
Mon, 15 May 2023 19:11:30 +0000 (14:11 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Tue, 16 May 2023 17:08:59 +0000 (17:08 +0000)
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>
src/runtime/memclr_ppc64x.s

index f0b13b40aee0bfefaa855d89e8f59d3cc6513af5..bc4b3fc2832b7583586fa84540fe25e5fb53bb1c 100644 (file)
@@ -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