Commit 579b2bd132 for openssl.org
commit 579b2bd132fe3c8379985cc5780504cd4ae8e771
Author: WANG Xuerui <git@xen0n.name>
Date: Tue Aug 5 19:19:08 2025 +0800
LoongArch: Evaluate immediate operand values in perlasm
To make the emitted assembly easier to read. No functional change.
Signed-off-by: WANG Xuerui <git@xen0n.name>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
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 225a41a49e..2a050ba88d 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 ea357c28ec..ac9fb03fbd 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]}