From: WANG Xuerui Date: Tue, 5 Aug 2025 11:19:08 +0000 (+0800) Subject: LoongArch: Evaluate immediate operand values in perlasm X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=579b2bd132fe3c8379985cc5780504cd4ae8e771;p=thirdparty%2Fopenssl.git LoongArch: Evaluate immediate operand values in perlasm To make the emitted assembly easier to read. No functional change. Signed-off-by: WANG Xuerui Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale Reviewed-by: Neil Horman MergeDate: Wed Mar 11 13:56:12 2026 (Merged from https://github.com/openssl/openssl/pull/28192) --- diff --git a/crypto/sha/asm/sha256-loongarch64.pl b/crypto/sha/asm/sha256-loongarch64.pl index 225a41a49e5..2a050ba88d3 100644 --- a/crypto/sha/asm/sha256-loongarch64.pl +++ b/crypto/sha/asm/sha256-loongarch64.pl @@ -69,9 +69,9 @@ sub strip { sub MSGSCHEDULE0 { my ($index) = @_; my $code=<<___; - ld.w $T1, $INP, 4*$index + ld.w $T1, $INP, @{[4*$index]} revb.2w $T1, $T1 - st.w $T1, $ADDR, 4*$index + st.w $T1, $ADDR, @{[4*$index]} ___ return strip($code); } @@ -79,10 +79,10 @@ ___ sub MSGSCHEDULE1 { my ($index) = @_; my $code=<<___; - ld.w $T1, $ADDR, (($index-2)&0x0f)*4 - ld.w $T2, $ADDR, (($index-15)&0x0f)*4 - ld.w $T3, $ADDR, (($index-7)&0x0f)*4 - ld.w $T4, $ADDR, ($index&0x0f)*4 + ld.w $T1, $ADDR, @{[(($index-2)&0x0f)*4]} + ld.w $T2, $ADDR, @{[(($index-15)&0x0f)*4]} + ld.w $T3, $ADDR, @{[(($index-7)&0x0f)*4]} + ld.w $T4, $ADDR, @{[($index&0x0f)*4]} rotri.w $T5, $T1, 17 rotri.w $T6, $T1, 19 srli.w $T1, $T1, 10 @@ -96,7 +96,7 @@ sub MSGSCHEDULE1 { xor $T2, $T2, $T6 add.w $T1, $T1, $T2 add.w $T1, $T1, $T4 - st.w $T1, $ADDR, ($index&0x0f)*4 + st.w $T1, $ADDR, @{[($index&0x0f)*4]} ___ return strip($code); } @@ -104,7 +104,7 @@ ___ sub sha256_T1 { my ($index, $e, $f, $g, $h) = @_; my $code=<<___; - ld.w $T4, $KT, 4*$index + ld.w $T4, $KT, @{[4*$index]} add.w $h, $h, $T1 add.w $h, $h, $T4 rotri.w $T2, $e, 6 diff --git a/crypto/sha/asm/sha512-loongarch64.pl b/crypto/sha/asm/sha512-loongarch64.pl index ea357c28ecf..ac9fb03fbde 100644 --- a/crypto/sha/asm/sha512-loongarch64.pl +++ b/crypto/sha/asm/sha512-loongarch64.pl @@ -69,9 +69,9 @@ sub strip { sub MSGSCHEDULE0 { my ($index) = @_; my $code=<<___; - ld.d $T1, $INP, 8*$index + ld.d $T1, $INP, @{[8*$index]} revb.d $T1, $T1 - st.d $T1, $ADDR, 8*$index + st.d $T1, $ADDR, @{[8*$index]} ___ return strip($code); } @@ -79,10 +79,10 @@ ___ sub MSGSCHEDULE1 { my ($index) = @_; my $code=<<___; - ld.d $T1, $ADDR, (($index-2)&0x0f)*8 - ld.d $T2, $ADDR, (($index-15)&0x0f)*8 - ld.d $T3, $ADDR, (($index-7)&0x0f)*8 - ld.d $T4, $ADDR, ($index&0x0f)*8 + ld.d $T1, $ADDR, @{[(($index-2)&0x0f)*8]} + ld.d $T2, $ADDR, @{[(($index-15)&0x0f)*8]} + ld.d $T3, $ADDR, @{[(($index-7)&0x0f)*8]} + ld.d $T4, $ADDR, @{[($index&0x0f)*8]} rotri.d $T5, $T1, 19 rotri.d $T6, $T1, 61 srli.d $T1, $T1, 6 @@ -96,7 +96,7 @@ sub MSGSCHEDULE1 { xor $T2, $T2, $T6 add.d $T1, $T1, $T2 add.d $T1, $T1, $T4 - st.d $T1, $ADDR, 8*($index&0x0f) + st.d $T1, $ADDR, @{[8*($index&0x0f)]} ___ return strip($code); } @@ -104,7 +104,7 @@ ___ sub sha512_T1 { my ($index, $e, $f, $g, $h) = @_; my $code=<<___; - ld.d $T4, $KT, 8*$index + ld.d $T4, $KT, @{[8*$index]} add.d $h, $h, $T1 add.d $h, $h, $T4 rotri.d $T2, $e, 14 @@ -192,7 +192,6 @@ L_round_loop: ___ for (my $i = 0; $i < 80; $i += 8) { - $code .= <<___; @{[SHA512ROUND $i, $A, $B, $C, $D, $E, $F, $G, $H]} @{[SHA512ROUND $i+1, $H, $A, $B, $C, $D, $E, $F, $G]}