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]}