]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Add fallback functions for mpn_copyd, mpn_copyi and mpn_zero.
authorMartin Storsjö <martin@martin.st>
Sat, 23 Mar 2013 21:21:09 +0000 (23:21 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Thu, 4 Apr 2013 09:24:13 +0000 (11:24 +0200)
ChangeLog
gmp-glue.c
gmp-glue.h

index ba1c1a72cca0780353c40c9583c4a164a3ea9ed5..2b7f4b10849819a3c18c38dff24fda77628d42ba 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2013-04-04  Niels Möller  <nisse@lysator.liu.se>
 
+       From Martin Storsjö. Fallback functions for older GMP releases.
+       * gmp-glue.c (mpn_copyd, mpn_copyi, mpn_zero): New functions.
+       * gmp-glue.h: Declare them.
+
        * gmp-glue.h (cnd_add_n, cnd_sub_n): Moved here, define in terms
        of mpn_cnd_add_n and mpn_sub_n if available, otherwise in terms of
        mpn_addmul_1 and mpn_submul_1. This seems to be an improvement for
index b468699bdcb9a64f41e4414351d0896a507a6aff..a2633a50d495ed013e6150968d8519e29ae9a560 100644 (file)
@@ -106,6 +106,32 @@ mpz_roinit_n (mpz_ptr x, const mp_limb_t *xp, mp_size_t xs)
 }
 #endif /* !GMP_HAVE_mpz_limbs_read */
 
+#if !GMP_HAVE_mpn_copyd
+void
+mpn_copyd (mp_ptr dst, mp_srcptr src, mp_size_t n)
+{
+  mp_size_t i;
+  for (i = n - 1; i >= 0; i--)
+    dst[i] = src[i];
+}
+
+void
+mpn_copyi (mp_ptr dst, mp_srcptr src, mp_size_t n)
+{
+  mp_size_t i;
+  for (i = 0; i < n; i++)
+    dst[i] = src[i];
+}
+
+void
+mpn_zero (mp_ptr ptr, mp_size_t n)
+{
+  mp_size_t i;
+  for (i = 0; i < n; i++)
+    ptr[i] = 0;
+}
+#endif /* !GMP_HAVE_mpn_copyd */
+
 /* Additional convenience functions. */
 
 int
index fcc47d0012e6fd1cd5545fde447c747f328b816e..3c4c0ac9a0b9aa7ba881b4914b4ed6242ddda92e 100644 (file)
 #define GMP_HAVE_mpz_limbs_read 0
 #endif
 
+#ifdef mpn_copyd
+#define GMP_HAVE_mpn_copyd 1
+#else
+#define GMP_HAVE_mpn_copyd 0
+#endif
+
 /* Name mangling. */
 #if !GMP_HAVE_mpz_limbs_read
 #define mpz_limbs_read _nettle_mpz_limbs_read
 #define mpz_roinit_n _nettle_mpz_roinit_n
 #endif
 
+#if !GMP_HAVE_mpn_copyd
+#define mpn_copyd _nettle_mpn_copyd
+#define mpn_copyi _nettle_mpn_copyi
+#define mpn_zero  _nettle_mpn_zero
+#endif
+
 #define mpz_limbs_cmp _nettle_mpz_limbs_cmp
 #define mpz_limbs_read_n _nettle_mpz_limbs_read_n
 #define mpz_limbs_copy _nettle_mpz_limbs_copy
@@ -92,6 +104,20 @@ mpz_roinit_n (mpz_ptr x, const mp_limb_t *xp, mp_size_t xs);
 
 #endif /* !GMP_HAVE_mpz_limbs_read */
 
+#if !GMP_HAVE_mpn_copyd
+/* Copy elements, backwards */
+void
+mpn_copyd (mp_ptr dst, mp_srcptr src, mp_size_t n);
+
+/* Copy elements, forwards */
+void
+mpn_copyi (mp_ptr dst, mp_srcptr src, mp_size_t n);
+
+/* Zero elements */
+void
+mpn_zero (mp_ptr ptr, mp_size_t n);
+#endif /* !GMP_HAVE_mpn_copyd */
+
 /* Convenience functions */
 int
 mpz_limbs_cmp (mpz_srcptr a, const mp_limb_t *bp, mp_size_t bn);