projects
/
openssl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ac71d81
)
Bring C bn_mul_mont template closer to assembler.
author
Andy Polyakov
<appro@openssl.org>
Tue, 16 Dec 2008 07:28:38 +0000
(07:28 +0000)
committer
Andy Polyakov
<appro@openssl.org>
Tue, 16 Dec 2008 07:28:38 +0000
(07:28 +0000)
crypto/bn/bn_asm.c
patch
|
blob
|
history
diff --git
a/crypto/bn/bn_asm.c
b/crypto/bn/bn_asm.c
index
230258b
..
c43c91c
100644
(file)
--- a/
crypto/bn/bn_asm.c
+++ b/
crypto/bn/bn_asm.c
@@
-860,13
+860,35
@@
int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_U
n0 = *n0p;
n0 = *n0p;
- tp[num] = bn_mul_words(tp,ap,num,bp[0]);
+ c0 = 0;
+ ml = bp[0];
+#ifdef mul64
+ mh = HBITS(ml);
+ ml = LBITS(ml);
+ for (j=0;j<num;++j)
+ mul(tp[j],ap[j],ml,mh,c0);
+#else
+ for (j=0;j<num;++j)
+ mul(tp[j],ap[j],ml,c0);
+#endif
+
+ tp[num] = c0;
tp[num+1] = 0;
goto enter;
for(i=0;i<num;i++)
{
tp[num+1] = 0;
goto enter;
for(i=0;i<num;i++)
{
- c0 = bn_mul_add_words(tp,ap,num,bp[i]);
+ c0 = 0;
+ ml = bp[i];
+#ifdef mul64
+ mh = HBITS(ml);
+ ml = LBITS(ml);
+ for (j=0;j<num;++j)
+ mul_add(tp[j],ap[j],ml,mh,c0);
+#else
+ for (j=0;j<num;++j)
+ mul_add(tp[j],ap[j],ml,c0);
+#endif
c1 = (tp[num] + c0)&BN_MASK2;
tp[num] = c1;
tp[num+1] = (c1<c0?1:0);
c1 = (tp[num] + c0)&BN_MASK2;
tp[num] = c1;
tp[num+1] = (c1<c0?1:0);