]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
LoongArch: Evaluate immediate operand values in perlasm
authorWANG Xuerui <git@xen0n.name>
Tue, 5 Aug 2025 11:19:08 +0000 (19:19 +0800)
committerNeil Horman <nhorman@openssl.org>
Wed, 11 Mar 2026 13:55:48 +0000 (09:55 -0400)
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)

crypto/sha/asm/sha256-loongarch64.pl
crypto/sha/asm/sha512-loongarch64.pl

index 225a41a49e5819665134d39dd18646d3ec263fc8..2a050ba88d3999068561b8624487062a1834ea60 100644 (file)
@@ -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
index ea357c28ecfd349468e356d8875aa4431eeed0b4..ac9fb03fbdebc4c787edad4b2dc8acec48331a4c 100644 (file)
@@ -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]}