]> Cypherpunks.ru repositories - gostls13.git/commit
hash/crc32: improve performance of ppc64SlicingUpdateBy8 on ppc64le
authorArchana R <aravind5@in.ibm.com>
Mon, 20 Sep 2021 04:50:02 +0000 (23:50 -0500)
committerLynn Boger <laboger@linux.vnet.ibm.com>
Wed, 22 Sep 2021 16:53:49 +0000 (16:53 +0000)
commite128749be88278768c50907ca87270b9d5e96eb5
tree5af50d85547c52753dc76209b48d30496583f0c2
parent74ba70be680a9eb9740638b80f36f68baec5b35c
hash/crc32: improve performance of ppc64SlicingUpdateBy8 on ppc64le

Reduce the number of instructions in the short loop of
ppc64SlicingUpdateBy8 function by combining MOVWZ and SRD into a SRD
with appropriate parameters performing the same operation and remove
MOVWZ R7,R7 from the loop
This change produces the following improvements on POWER9. None of the
other tests regress. Improvments on other POWERPC platforms similar.

name                                     old time/op    new time/op
delta

CRC32/poly=IEEE/size=15/align=0            80.5ns ± 0%    70.6ns ± 0%
-12%
CRC32/poly=IEEE/size=15/align=1            80.5ns ± 0%    70.6ns ± 0%
-12%
CRC32/poly=IEEE/size=512/align=1            151ns ± 0%     139ns ± 0%
-7%
CRC32/poly=IEEE/size=1kB/align=1            167ns ± 0%     155ns ± 0%
-7%
CRC32/poly=Castagnoli/size=15/align=0      80.2ns ± 0%    70.5ns ± 0%
-12%
CRC32/poly=Castagnoli/size=15/align=1      80.2ns ± 0%    70.5ns ± 0%
-12%
CRC32/poly=Castagnoli/size=512/align=1      150ns ± 0%     139ns ± 0%
-7%
CRC32/poly=Castagnoli/size=1kB/align=1      166ns ± 0%     155ns ± 0%
-6%

Change-Id: I424709041c30d1c637b595d0845e3ae78dc3e0a0
Reviewed-on: https://go-review.googlesource.com/c/go/+/350989
Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
TryBot-Result: Go Bot <gobot@golang.org>
src/hash/crc32/crc32_ppc64le.s