or die "can't call $xlate: $!";
*STDOUT=*OUT;
+$prefix="sm3";
# Message expanding:
# Wj <- P1(W[j-16]^W[j-9]^(W[j-3]<<<15))^(W[j-13]<<<7)^W[j-6]
# Input: s0, s1, s2, s3
rev64 $state2.4s, $state2.4s
ext $state1.16b, $state1.16b, $state1.16b, #8
ext $state2.16b, $state2.16b, $state2.16b, #8
-
+___
+if ($flavour =~ /linux64/)
+{
+$code.=<<___;
+ adrp $constaddr, .Tj
+ add $constaddr, $constaddr, #:lo12:.Tj
+___
+} else {
+$code.=<<___;
adr $constaddr, .Tj
+___
+}
+$code.=<<___;
ldp $sconst1, $sconst2, [$constaddr]
.Loop:
st1 {$state1.4s-$state2.4s}, [$pstate]
ret
.size ossl_hwsm3_block_data_order,.-ossl_hwsm3_block_data_order
+___
+$code.=".rodata\n" if ($flavour =~ /linux64/);
+
+$code.=<<___;
+
+.type _${prefix}_consts,%object
.align 3
+_${prefix}_consts:
.Tj:
.word 0x79cc4519, 0x9d8a7a87
+.size _${prefix}_consts,.-_${prefix}_consts
___
+
+$code.=".previous\n" if ($flavour =~ /linux64/);
+
}}}
#########################################