summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2011-05-23 08:14:32 +0000
committerAndy Polyakov <appro@openssl.org>2011-05-23 08:14:32 +0000
commit62f29eb1cf7957b4eb9ad60eccfe1e11bbac94ce (patch)
treec6b5ffebe8ee276fe1d21cd92b55b375b0f57a6d /crypto
parentf8501464cc8fd8b7b4983462944a1894b157d735 (diff)
spacrv9cap.c: addenum to recent EC optimizations.
Diffstat (limited to 'crypto')
-rw-r--r--crypto/ec/ec_cvt.c4
-rw-r--r--crypto/sparcv9cap.c3
2 files changed, 4 insertions, 3 deletions
diff --git a/crypto/ec/ec_cvt.c b/crypto/ec/ec_cvt.c
index dffd70521a..58d6b4cadd 100644
--- a/crypto/ec/ec_cvt.c
+++ b/crypto/ec/ec_cvt.c
@@ -80,7 +80,7 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM
const EC_METHOD *meth;
EC_GROUP *ret;
-#if defined(OPENSSL_BN_ASM_MONT) && !defined(__sparc)
+#if defined(OPENSSL_BN_ASM_MONT)
/*
* This might appear controversial, but the fact is that generic
* prime method was observed to deliver better performance even
@@ -93,7 +93,7 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM
* arguable, because the dependency of improvement coefficient
* from key length is not a "monotone" curve. For example while
* 571-bit result is 23% on ARM, 384-bit one is -1%. But it's
- * generally faster, sometimes "respectfully" faster, or
+ * generally faster, sometimes "respectfully" faster, sometimes
* "tolerably" slower... What effectively happens is that loop
* with bn_mul_add_words is put against bn_mul_mont, and the
* latter "wins" on short vectors. Correct solution should be
diff --git a/crypto/sparcv9cap.c b/crypto/sparcv9cap.c
index ad4b3be718..b961cbe3fa 100644
--- a/crypto/sparcv9cap.c
+++ b/crypto/sparcv9cap.c
@@ -20,7 +20,8 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_U
int bn_mul_mont_fpu(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np,const BN_ULONG *n0, int num);
int bn_mul_mont_int(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np,const BN_ULONG *n0, int num);
- if ((OPENSSL_sparcv9cap_P&(SPARCV9_PREFER_FPU|SPARCV9_VIS1)) ==
+ if (num>=8 && !(num&1) &&
+ (OPENSSL_sparcv9cap_P&(SPARCV9_PREFER_FPU|SPARCV9_VIS1)) ==
(SPARCV9_PREFER_FPU|SPARCV9_VIS1))
return bn_mul_mont_fpu(rp,ap,bp,np,n0,num);
else