libgpuverify

Signature verification on GPUs (WiP)
Log | Files | Refs | README | LICENSE

commit 26a20b6b4a247bd92db41b515df4fc5c463f23f9
parent df7144108f8a1436e5d4ce57ade488d832ac99c3
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Wed,  6 Dec 2023 23:29:57 +0900

-remove get base info

Diffstat:
Msource/montgomery.cl | 71++++++-----------------------------------------------------------------
1 file changed, 6 insertions(+), 65 deletions(-)

diff --git a/source/montgomery.cl b/source/montgomery.cl @@ -371,8 +371,6 @@ int mpz_tstbit (const mpz_t d, mp_bitcnt_t bit_index); mp_bitcnt_t mpn_limb_size_in_base_2 (mp_limb_t u); -size_t -mpz_sizeinbase (const mpz_t u, int base); int mpz_sgn (const mpz_t u); mp_bitcnt_t @@ -404,7 +402,6 @@ mpz_addmul_ui (mpz_t r, const mpz_t u, unsigned long int v); unsigned mpn_base_power_of_two_p (unsigned b); void -mpn_get_base_info (struct mpn_base_info *info, mp_limb_t b); int isspace_gpu(unsigned char c); int strlen_c(__global char *c); mp_size_t mpn_set_str_bits (mp_ptr rp, const unsigned char *sp, size_t sn, @@ -1867,22 +1864,13 @@ mpn_limb_size_in_base_2 (mp_limb_t u) } size_t -mpz_sizeinbase (const mpz_t u, int base) +mpz_sizeinbase2 (const mpz_t u) { - mp_size_t un, tn; + mp_size_t un; mp_srcptr up; - //mp_ptr tp; - mpz_t tp; mp_bitcnt_t bits; - struct gmp_div_inverse bi; - size_t ndigits; - mpz_init(tp); - - assert (base >= 2); -assert (base <= 62); - un = GMP_ABS (u->_mp_size); if (un == 0) return 1; @@ -1890,39 +1878,7 @@ assert (base <= 62); up = u->_mp_d; bits = (un - 1) * GMP_LIMB_BITS + mpn_limb_size_in_base_2 (up[un-1]); - switch (base) - { - case 2: - return bits; - case 4: - return (bits + 1) / 2; - case 8: - return (bits + 2) / 3; - case 16: - return (bits + 3) / 4; - case 32: - return (bits + 4) / 5; - /* FIXME: Do something more clever for the common case of base - 10. */ - } - - //tp = gmp_alloc_limbs (un); - - mpn_copyi (tp->_mp_d, up, un); - mpn_div_qr_1_invert (&bi, base); - - tn = un; - ndigits = 0; - do - { - ndigits++; - mpn_div_qr_1_preinv (tp->_mp_d, tp->_mp_d, tn, &bi); - tn -= (tp->_mp_d[tn-1] == 0); - } - while (tn > 0); - - //gmp_free_limbs (tp, un); - return ndigits; + return bits; } int @@ -2302,21 +2258,6 @@ mpz_addmul_ui (mpz_t r, const mpz_t u, unsigned long int v) } -void -mpn_get_base_info (struct mpn_base_info *info, mp_limb_t b) -{ - mp_limb_t m; - mp_limb_t p; - unsigned exp; - - m = GMP_LIMB_MAX / b; - for (exp = 1, p = b; p <= m; exp++) - p *= b; - - info->exp = exp; - info->bb = p; -} - // Montgomery multiplication @@ -2377,7 +2318,7 @@ void mont_prepare(mpz_t b, mpz_t e, mpz_t m, mpz_init_set_si(one,1); mpz_init_set_si(oo,0); - //unsigned long len = mpz_sizeinbase(m,2); + //unsigned long len = mpz_sizeinbase2(m); unsigned long len = 2049; @@ -2429,7 +2370,7 @@ void mont_modexp(mpz_t ret, mpz_init_set(aa, M); mpz_init_set(xx, a); - int k = (int)mpz_sizeinbase(e,2); + int k = (int)mpz_sizeinbase2(e); for (int i = k - 1; i >= 0; i--) { @@ -2489,7 +2430,7 @@ void mont_product(mpz_t ret, mpz_add(ab, ab, mn); - unsigned long sz = mpz_sizeinbase(r,2) - 1; + unsigned long sz = mpz_sizeinbase2(r) - 1; mpz_tdiv_q_2exp(u, ab, sz); // this is essentially a bit shift, instead of a division if (mpz_cmp(u, n) >= 0)