author | Misaki Miyashita <Misaki.Miyashita@Oracle.COM> |
Tue, 06 Aug 2013 08:08:18 -0700 | |
branch | s11-update |
changeset 2717 | da0ef75be98f |
permissions | -rw-r--r-- |
2717
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
1 |
#!/usr/bin/env perl |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
2 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
3 |
# ==================================================================== |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
4 |
# Written by Andy Polyakov <[email protected]> for the OpenSSL |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
5 |
# project. The module is, however, dual licensed under OpenSSL and |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
6 |
# CRYPTOGAMS licenses depending on where you obtain it. For further |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
7 |
# details see http://www.openssl.org/~appro/cryptogams/. |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
8 |
# ==================================================================== |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
9 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
10 |
# October 2012. |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
11 |
# |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
12 |
# SPARCv9 VIS3 Montgomery multiplicaion procedure suitable for T3 and |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
13 |
# onward. There are three new instructions used here: umulxhi, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
14 |
# addxc[cc] and initializing store. On T3 RSA private key operations |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
15 |
# are 1.54/1.87/2.11/2.26 times faster for 512/1024/2048/4096-bit key |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
16 |
# lengths. This is without dedicated squaring procedure. On T4 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
17 |
# corresponding coefficients are 1.47/2.10/2.80/2.90x, which is mostly |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
18 |
# for reference purposes, because T4 has dedicated Montgomery |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
19 |
# multiplication and squaring *instructions* that deliver even more. |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
20 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
21 |
$bits=32; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
22 |
for (@ARGV) { $bits=64 if (/\-m64/ || /\-xarch\=v9/); } |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
23 |
if ($bits==64) { $bias=2047; $frame=192; } |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
24 |
else { $bias=0; $frame=112; } |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
25 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
26 |
$code.=<<___ if ($bits==64); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
27 |
.register %g2,#scratch |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
28 |
.register %g3,#scratch |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
29 |
___ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
30 |
$code.=<<___; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
31 |
.section ".text",#alloc,#execinstr |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
32 |
___ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
33 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
34 |
($n0,$m0,$m1,$lo0,$hi0, $lo1,$hi1,$aj,$alo,$nj,$nlo,$tj)= |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
35 |
(map("%g$_",(1..5)),map("%o$_",(0..5,7))); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
36 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
37 |
# int bn_mul_mont( |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
38 |
$rp="%o0"; # BN_ULONG *rp, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
39 |
$ap="%o1"; # const BN_ULONG *ap, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
40 |
$bp="%o2"; # const BN_ULONG *bp, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
41 |
$np="%o3"; # const BN_ULONG *np, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
42 |
$n0p="%o4"; # const BN_ULONG *n0, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
43 |
$num="%o5"; # int num); # caller ensures that num is even |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
44 |
# and >=6 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
45 |
$code.=<<___; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
46 |
.globl bn_mul_mont_vis3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
47 |
.align 32 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
48 |
bn_mul_mont_vis3: |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
49 |
add %sp, $bias, %g4 ! real top of stack |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
50 |
sll $num, 2, $num ! size in bytes |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
51 |
add $num, 63, %g5 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
52 |
andn %g5, 63, %g5 ! buffer size rounded up to 64 bytes |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
53 |
add %g5, %g5, %g1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
54 |
add %g5, %g1, %g1 ! 3*buffer size |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
55 |
sub %g4, %g1, %g1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
56 |
andn %g1, 63, %g1 ! align at 64 byte |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
57 |
sub %g1, $frame, %g1 ! new top of stack |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
58 |
sub %g1, %g4, %g1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
59 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
60 |
save %sp, %g1, %sp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
61 |
___ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
62 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
63 |
# +-------------------------------+<----- %sp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
64 |
# . . |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
65 |
# +-------------------------------+<----- aligned at 64 bytes |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
66 |
# | __int64 tmp[0] | |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
67 |
# +-------------------------------+ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
68 |
# . . |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
69 |
# . . |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
70 |
# +-------------------------------+<----- aligned at 64 bytes |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
71 |
# | __int64 ap[1..0] | converted ap[] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
72 |
# +-------------------------------+ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
73 |
# | __int64 np[1..0] | converted np[] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
74 |
# +-------------------------------+ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
75 |
# | __int64 ap[3..2] | |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
76 |
# . . |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
77 |
# . . |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
78 |
# +-------------------------------+ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
79 |
($rp,$ap,$bp,$np,$n0p,$num)=map("%i$_",(0..5)); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
80 |
($t0,$t1,$t2,$t3,$cnt,$tp,$bufsz,$anp)=map("%l$_",(0..7)); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
81 |
($ovf,$i)=($t0,$t1); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
82 |
$code.=<<___; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
83 |
ld [$n0p+0], $t0 ! pull n0[0..1] value |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
84 |
add %sp, $bias+$frame, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
85 |
ld [$n0p+4], $t1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
86 |
add $tp, %g5, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
87 |
ld [$bp+0], $t2 ! m0=bp[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
88 |
sllx $t1, 32, $n0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
89 |
ld [$bp+4], $t3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
90 |
or $t0, $n0, $n0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
91 |
add $bp, 8, $bp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
92 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
93 |
ld [$ap+0], $t0 ! ap[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
94 |
sllx $t3, 32, $m0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
95 |
ld [$ap+4], $t1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
96 |
or $t2, $m0, $m0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
97 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
98 |
ld [$ap+8], $t2 ! ap[1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
99 |
sllx $t1, 32, $aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
100 |
ld [$ap+12], $t3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
101 |
or $t0, $aj, $aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
102 |
add $ap, 16, $ap |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
103 |
stxa $aj, [$anp]0xe2 ! converted ap[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
104 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
105 |
mulx $aj, $m0, $lo0 ! ap[0]*bp[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
106 |
umulxhi $aj, $m0, $hi0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
107 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
108 |
ld [$np+0], $t0 ! np[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
109 |
sllx $t3, 32, $aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
110 |
ld [$np+4], $t1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
111 |
or $t2, $aj, $aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
112 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
113 |
ld [$np+8], $t2 ! np[1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
114 |
sllx $t1, 32, $nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
115 |
ld [$np+12], $t3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
116 |
or $t0, $nj, $nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
117 |
add $np, 16, $np |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
118 |
stx $nj, [$anp+8] ! converted np[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
119 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
120 |
mulx $lo0, $n0, $m1 ! "tp[0]"*n0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
121 |
stx $aj, [$anp+16] ! converted ap[1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
122 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
123 |
mulx $aj, $m0, $alo ! ap[1]*bp[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
124 |
umulxhi $aj, $m0, $aj ! ahi=aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
125 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
126 |
mulx $nj, $m1, $lo1 ! np[0]*m1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
127 |
umulxhi $nj, $m1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
128 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
129 |
sllx $t3, 32, $nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
130 |
or $t2, $nj, $nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
131 |
stx $nj, [$anp+24] ! converted np[1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
132 |
add $anp, 32, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
133 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
134 |
addcc $lo0, $lo1, $lo1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
135 |
addxc %g0, $hi1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
136 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
137 |
mulx $nj, $m1, $nlo ! np[1]*m1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
138 |
umulxhi $nj, $m1, $nj ! nhi=nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
139 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
140 |
ba .L1st |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
141 |
sub $num, 24, $cnt ! cnt=num-3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
142 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
143 |
.align 16 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
144 |
.L1st: |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
145 |
ld [$ap+0], $t0 ! ap[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
146 |
addcc $alo, $hi0, $lo0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
147 |
ld [$ap+4], $t1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
148 |
addxc $aj, %g0, $hi0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
149 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
150 |
sllx $t1, 32, $aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
151 |
add $ap, 8, $ap |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
152 |
or $t0, $aj, $aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
153 |
stxa $aj, [$anp]0xe2 ! converted ap[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
154 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
155 |
ld [$np+0], $t2 ! np[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
156 |
addcc $nlo, $hi1, $lo1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
157 |
ld [$np+4], $t3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
158 |
addxc $nj, %g0, $hi1 ! nhi=nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
159 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
160 |
sllx $t3, 32, $nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
161 |
add $np, 8, $np |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
162 |
mulx $aj, $m0, $alo ! ap[j]*bp[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
163 |
or $t2, $nj, $nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
164 |
umulxhi $aj, $m0, $aj ! ahi=aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
165 |
stx $nj, [$anp+8] ! converted np[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
166 |
add $anp, 16, $anp ! anp++ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
167 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
168 |
mulx $nj, $m1, $nlo ! np[j]*m1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
169 |
addcc $lo0, $lo1, $lo1 ! np[j]*m1+ap[j]*bp[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
170 |
umulxhi $nj, $m1, $nj ! nhi=nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
171 |
addxc %g0, $hi1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
172 |
stxa $lo1, [$tp]0xe2 ! tp[j-1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
173 |
add $tp, 8, $tp ! tp++ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
174 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
175 |
brnz,pt $cnt, .L1st |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
176 |
sub $cnt, 8, $cnt ! j-- |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
177 |
!.L1st |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
178 |
addcc $alo, $hi0, $lo0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
179 |
addxc $aj, %g0, $hi0 ! ahi=aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
180 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
181 |
addcc $nlo, $hi1, $lo1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
182 |
addxc $nj, %g0, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
183 |
addcc $lo0, $lo1, $lo1 ! np[j]*m1+ap[j]*bp[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
184 |
addxc %g0, $hi1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
185 |
stxa $lo1, [$tp]0xe2 ! tp[j-1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
186 |
add $tp, 8, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
187 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
188 |
addcc $hi0, $hi1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
189 |
addxc %g0, %g0, $ovf ! upmost overflow bit |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
190 |
stxa $hi1, [$tp]0xe2 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
191 |
add $tp, 8, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
192 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
193 |
ba .Louter |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
194 |
sub $num, 16, $i ! i=num-2 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
195 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
196 |
.align 16 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
197 |
.Louter: |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
198 |
ld [$bp+0], $t2 ! m0=bp[i] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
199 |
ld [$bp+4], $t3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
200 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
201 |
sub $anp, $num, $anp ! rewind |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
202 |
sub $tp, $num, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
203 |
sub $anp, $num, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
204 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
205 |
add $bp, 8, $bp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
206 |
sllx $t3, 32, $m0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
207 |
ldx [$anp+0], $aj ! ap[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
208 |
or $t2, $m0, $m0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
209 |
ldx [$anp+8], $nj ! np[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
210 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
211 |
mulx $aj, $m0, $lo0 ! ap[0]*bp[i] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
212 |
ldx [$tp], $tj ! tp[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
213 |
umulxhi $aj, $m0, $hi0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
214 |
ldx [$anp+16], $aj ! ap[1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
215 |
addcc $lo0, $tj, $lo0 ! ap[0]*bp[i]+tp[0] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
216 |
mulx $aj, $m0, $alo ! ap[1]*bp[i] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
217 |
addxc %g0, $hi0, $hi0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
218 |
mulx $lo0, $n0, $m1 ! tp[0]*n0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
219 |
umulxhi $aj, $m0, $aj ! ahi=aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
220 |
mulx $nj, $m1, $lo1 ! np[0]*m1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
221 |
umulxhi $nj, $m1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
222 |
ldx [$anp+24], $nj ! np[1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
223 |
add $anp, 32, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
224 |
addcc $lo1, $lo0, $lo1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
225 |
mulx $nj, $m1, $nlo ! np[1]*m1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
226 |
addxc %g0, $hi1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
227 |
umulxhi $nj, $m1, $nj ! nhi=nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
228 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
229 |
ba .Linner |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
230 |
sub $num, 24, $cnt ! cnt=num-3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
231 |
.align 16 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
232 |
.Linner: |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
233 |
addcc $alo, $hi0, $lo0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
234 |
ldx [$tp+8], $tj ! tp[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
235 |
addxc $aj, %g0, $hi0 ! ahi=aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
236 |
ldx [$anp+0], $aj ! ap[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
237 |
addcc $nlo, $hi1, $lo1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
238 |
mulx $aj, $m0, $alo ! ap[j]*bp[i] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
239 |
addxc $nj, %g0, $hi1 ! nhi=nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
240 |
ldx [$anp+8], $nj ! np[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
241 |
add $anp, 16, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
242 |
umulxhi $aj, $m0, $aj ! ahi=aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
243 |
addcc $lo0, $tj, $lo0 ! ap[j]*bp[i]+tp[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
244 |
mulx $nj, $m1, $nlo ! np[j]*m1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
245 |
addxc %g0, $hi0, $hi0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
246 |
umulxhi $nj, $m1, $nj ! nhi=nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
247 |
addcc $lo1, $lo0, $lo1 ! np[j]*m1+ap[j]*bp[i]+tp[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
248 |
addxc %g0, $hi1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
249 |
stx $lo1, [$tp] ! tp[j-1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
250 |
add $tp, 8, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
251 |
brnz,pt $cnt, .Linner |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
252 |
sub $cnt, 8, $cnt |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
253 |
!.Linner |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
254 |
ldx [$tp+8], $tj ! tp[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
255 |
addcc $alo, $hi0, $lo0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
256 |
addxc $aj, %g0, $hi0 ! ahi=aj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
257 |
addcc $lo0, $tj, $lo0 ! ap[j]*bp[i]+tp[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
258 |
addxc %g0, $hi0, $hi0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
259 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
260 |
addcc $nlo, $hi1, $lo1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
261 |
addxc $nj, %g0, $hi1 ! nhi=nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
262 |
addcc $lo1, $lo0, $lo1 ! np[j]*m1+ap[j]*bp[i]+tp[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
263 |
addxc %g0, $hi1, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
264 |
stx $lo1, [$tp] ! tp[j-1] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
265 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
266 |
subcc %g0, $ovf, %g0 ! move upmost overflow to CCR.xcc |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
267 |
addxccc $hi1, $hi0, $hi1 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
268 |
addxc %g0, %g0, $ovf |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
269 |
stx $hi1, [$tp+8] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
270 |
add $tp, 16, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
271 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
272 |
brnz,pt $i, .Louter |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
273 |
sub $i, 8, $i |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
274 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
275 |
sub $anp, $num, $anp ! rewind |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
276 |
sub $tp, $num, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
277 |
sub $anp, $num, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
278 |
ba .Lsub |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
279 |
subcc $num, 8, $cnt ! cnt=num-1 and clear CCR.xcc |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
280 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
281 |
.align 16 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
282 |
.Lsub: |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
283 |
ldx [$tp], $tj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
284 |
add $tp, 8, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
285 |
ldx [$anp+8], $nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
286 |
add $anp, 16, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
287 |
subccc $tj, $nj, $t2 ! tp[j]-np[j] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
288 |
srlx $tj, 32, $tj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
289 |
srlx $nj, 32, $nj |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
290 |
subccc $tj, $nj, $t3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
291 |
add $rp, 8, $rp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
292 |
st $t2, [$rp-4] ! reverse order |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
293 |
st $t3, [$rp-8] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
294 |
brnz,pt $cnt, .Lsub |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
295 |
sub $cnt, 8, $cnt |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
296 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
297 |
sub $anp, $num, $anp ! rewind |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
298 |
sub $tp, $num, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
299 |
sub $anp, $num, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
300 |
sub $rp, $num, $rp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
301 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
302 |
subc $ovf, %g0, $ovf ! handle upmost overflow bit |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
303 |
and $tp, $ovf, $ap |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
304 |
andn $rp, $ovf, $np |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
305 |
or $np, $ap, $ap ! ap=borrow?tp:rp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
306 |
ba .Lcopy |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
307 |
sub $num, 8, $cnt |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
308 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
309 |
.align 16 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
310 |
.Lcopy: ! copy or in-place refresh |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
311 |
ld [$ap+0], $t2 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
312 |
ld [$ap+4], $t3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
313 |
add $ap, 8, $ap |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
314 |
stx %g0, [$tp] ! zap |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
315 |
add $tp, 8, $tp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
316 |
stx %g0, [$anp] ! zap |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
317 |
stx %g0, [$anp+8] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
318 |
add $anp, 16, $anp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
319 |
st $t3, [$rp+0] ! flip order |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
320 |
st $t2, [$rp+4] |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
321 |
add $rp, 8, $rp |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
322 |
brnz $cnt, .Lcopy |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
323 |
sub $cnt, 8, $cnt |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
324 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
325 |
mov 1, %o0 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
326 |
ret |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
327 |
restore |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
328 |
.type bn_mul_mont_vis3, #function |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
329 |
.size bn_mul_mont_vis3, .-bn_mul_mont_vis3 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
330 |
.asciz "Montgomery Multiplication for SPARCv9 VIS3, CRYPTOGAMS by <appro\@openssl.org>" |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
331 |
.align 4 |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
332 |
___ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
333 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
334 |
# Purpose of these subroutines is to explicitly encode VIS instructions, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
335 |
# so that one can compile the module without having to specify VIS |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
336 |
# extentions on compiler command line, e.g. -xarch=v9 vs. -xarch=v9a. |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
337 |
# Idea is to reserve for option to produce "universal" binary and let |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
338 |
# programmer detect if current CPU is VIS capable at run-time. |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
339 |
sub unvis3 { |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
340 |
my ($mnemonic,$rs1,$rs2,$rd)=@_; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
341 |
my %bias = ( "g" => 0, "o" => 8, "l" => 16, "i" => 24 ); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
342 |
my ($ref,$opf); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
343 |
my %visopf = ( "addxc" => 0x011, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
344 |
"addxccc" => 0x013, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
345 |
"umulxhi" => 0x016 ); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
346 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
347 |
$ref = "$mnemonic\t$rs1,$rs2,$rd"; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
348 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
349 |
if ($opf=$visopf{$mnemonic}) { |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
350 |
foreach ($rs1,$rs2,$rd) { |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
351 |
return $ref if (!/%([goli])([0-9])/); |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
352 |
$_=$bias{$1}+$2; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
353 |
} |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
354 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
355 |
return sprintf ".word\t0x%08x !%s", |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
356 |
0x81b00000|$rd<<25|$rs1<<14|$opf<<5|$rs2, |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
357 |
$ref; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
358 |
} else { |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
359 |
return $ref; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
360 |
} |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
361 |
} |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
362 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
363 |
foreach (split("\n",$code)) { |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
364 |
s/\`([^\`]*)\`/eval $1/ge; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
365 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
366 |
s/\b(umulxhi|addxc[c]{0,2})\s+(%[goli][0-7]),\s*(%[goli][0-7]),\s*(%[goli][0-7])/ |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
367 |
&unvis3($1,$2,$3,$4) |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
368 |
/ge; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
369 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
370 |
print $_,"\n"; |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
371 |
} |
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
372 |
|
da0ef75be98f
15824600 SUNBT7206152 T4 montmul should be embedded in the OpenSSL upstream src
Misaki Miyashita <Misaki.Miyashita@Oracle.COM>
parents:
diff
changeset
|
373 |
close STDOUT; |