From caa9c4f707b661cf398f2c2d66f54f5b0d8adfe2 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 9 Feb 2022 01:50:22 +0100 Subject: [PATCH] libbb/sha256: code shrink in x86 assembly function old new delta sha256_process_block64_shaNI 32-bit 676 673 -3 sha256_process_block64_shaNI 64-bit 680 677 -3 Signed-off-by: Denys Vlasenko --- libbb/hash_md5_sha256_x86-32_shaNI.S | 11 +++++------ libbb/hash_md5_sha256_x86-64_shaNI.S | 11 +++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/libbb/hash_md5_sha256_x86-32_shaNI.S b/libbb/hash_md5_sha256_x86-32_shaNI.S index 846230e3e..aa68193bd 100644 --- a/libbb/hash_md5_sha256_x86-32_shaNI.S +++ b/libbb/hash_md5_sha256_x86-32_shaNI.S @@ -39,13 +39,12 @@ .balign 8 # allow decoders to fetch at least 2 first insns sha256_process_block64_shaNI: - movu128 76+0*16(%eax), STATE1 /* DCBA (msb-to-lsb: 3,2,1,0) */ - movu128 76+1*16(%eax), STATE0 /* HGFE */ + movu128 76+0*16(%eax), XMMTMP /* DCBA (msb-to-lsb: 3,2,1,0) */ + movu128 76+1*16(%eax), STATE1 /* HGFE */ /* shufps takes dwords 0,1 from *2nd* operand, and dwords 2,3 from 1st one */ - mova128 STATE0, XMMTMP - shufps SHUF(1,0,1,0), STATE1, STATE0 /* ABEF */ - shufps SHUF(3,2,3,2), STATE1, XMMTMP /* CDGH */ - mova128 XMMTMP, STATE1 + mova128 STATE1, STATE0 + shufps SHUF(1,0,1,0), XMMTMP, STATE0 /* ABEF */ + shufps SHUF(3,2,3,2), XMMTMP, STATE1 /* CDGH */ /* XMMTMP holds flip mask from here... */ mova128 PSHUFFLE_BSWAP32_FLIP_MASK, XMMTMP diff --git a/libbb/hash_md5_sha256_x86-64_shaNI.S b/libbb/hash_md5_sha256_x86-64_shaNI.S index bc063b9cc..4663f750a 100644 --- a/libbb/hash_md5_sha256_x86-64_shaNI.S +++ b/libbb/hash_md5_sha256_x86-64_shaNI.S @@ -42,13 +42,12 @@ .balign 8 # allow decoders to fetch at least 2 first insns sha256_process_block64_shaNI: - movu128 80+0*16(%rdi), STATE1 /* DCBA (msb-to-lsb: 3,2,1,0) */ - movu128 80+1*16(%rdi), STATE0 /* HGFE */ + movu128 80+0*16(%rdi), XMMTMP /* DCBA (msb-to-lsb: 3,2,1,0) */ + movu128 80+1*16(%rdi), STATE1 /* HGFE */ /* shufps takes dwords 0,1 from *2nd* operand, and dwords 2,3 from 1st one */ - mova128 STATE0, XMMTMP - shufps SHUF(1,0,1,0), STATE1, STATE0 /* ABEF */ - shufps SHUF(3,2,3,2), STATE1, XMMTMP /* CDGH */ - mova128 XMMTMP, STATE1 + mova128 STATE1, STATE0 + shufps SHUF(1,0,1,0), XMMTMP, STATE0 /* ABEF */ + shufps SHUF(3,2,3,2), XMMTMP, STATE1 /* CDGH */ /* XMMTMP holds flip mask from here... */ mova128 PSHUFFLE_BSWAP32_FLIP_MASK(%rip), XMMTMP