Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.busybox.net/busybox.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2022-02-08 17:34:02 +0300
committerDenys Vlasenko <vda.linux@googlemail.com>2022-02-08 17:34:02 +0300
commiteb8d5f3b8f3c91f3ed82a52b4ce52a154c146ede (patch)
tree036c4cf2bebabfe4ff5a738529db3604c8f00ee7 /libbb
parenteb52e7fa522d829fb400461ca4c808ee5c1d6428 (diff)
libbb/sha1: shrink x86 hardware accelerated hashing (32-bit)
function old new delta sha1_process_block64_shaNI 511 507 -4 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r--libbb/hash_md5_sha_x86-32_shaNI.S9
-rw-r--r--libbb/hash_md5_sha_x86-64_shaNI.S3
2 files changed, 5 insertions, 7 deletions
diff --git a/libbb/hash_md5_sha_x86-32_shaNI.S b/libbb/hash_md5_sha_x86-32_shaNI.S
index ad814a21b..a61b3cbed 100644
--- a/libbb/hash_md5_sha_x86-32_shaNI.S
+++ b/libbb/hash_md5_sha_x86-32_shaNI.S
@@ -53,8 +53,8 @@ sha1_process_block64_shaNI:
pshufb %xmm7, MSG3
/* Save hash values for addition after rounds */
- movu128 E0, %xmm7
- /*movu128 ABCD, %xmm8 - NOPE, 32bit has no xmm8 */
+ mova128 E0, %xmm7
+ /*mova128 ABCD, %xmm8 - NOPE, 32bit has no xmm8 */
/* Rounds 0-3 */
paddd MSG0, E0
@@ -207,12 +207,11 @@ sha1_process_block64_shaNI:
/* Add current hash values with previously saved */
sha1nexte %xmm7, E0
/*paddd %xmm8, ABCD - 32-bit mode has no xmm8 */
- movu128 76(%eax), %xmm7 # recreate original ABCD
- shuf128_32 $0x1B, %xmm7, %xmm7 # DCBA -> ABCD
- paddd %xmm7, ABCD
+ movu128 76(%eax), %xmm7 # get original ABCD (not shuffled)...
/* Write hash values back in the correct order */
shuf128_32 $0x1B, ABCD, ABCD
+ paddd %xmm7, ABCD # ...add it to final ABCD
movu128 ABCD, 76(%eax)
extr128_32 $3, E0, 76+4*4(%eax)
diff --git a/libbb/hash_md5_sha_x86-64_shaNI.S b/libbb/hash_md5_sha_x86-64_shaNI.S
index fc2ca92e8..b32029360 100644
--- a/libbb/hash_md5_sha_x86-64_shaNI.S
+++ b/libbb/hash_md5_sha_x86-64_shaNI.S
@@ -36,9 +36,8 @@
.balign 8 # allow decoders to fetch at least 2 first insns
sha1_process_block64_shaNI:
/* load initial hash values */
-
- xor128 E0, E0
movu128 80(%rdi), ABCD
+ xor128 E0, E0
pinsrd $3, 80+4*4(%rdi), E0 # load to uppermost 32-bit word
shuf128_32 $0x1B, ABCD, ABCD # DCBA -> ABCD