summaryrefslogtreecommitdiff
path: root/tune
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2019-11-09 12:47:42 +0100
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2019-11-09 12:47:42 +0100
commitb621455485570bc24d2873336439cf6bdfd7e375 (patch)
tree300512ab6aec3bd16953e2c7a16c87f58160f9e3 /tune
parent65d0c41ccaf684366e7395c4406b63472075974e (diff)
downloadgmp-b621455485570bc24d2873336439cf6bdfd7e375.tar.gz
tune/speed*: add optional r flag for mpz_powm
Diffstat (limited to 'tune')
-rw-r--r--tune/speed.c2
-rw-r--r--tune/speed.h5
2 files changed, 5 insertions, 2 deletions
diff --git a/tune/speed.c b/tune/speed.c
index 4f5a348ae..b861fa491 100644
--- a/tune/speed.c
+++ b/tune/speed.c
@@ -417,7 +417,7 @@ const struct routine_t {
{ "mpz_2fac_ui", speed_mpz_2fac_ui, FLAG_NODATA },
{ "mpz_mfac_uiui", speed_mpz_mfac_uiui, FLAG_NODATA | FLAG_R_OPTIONAL },
{ "mpz_primorial_ui", speed_mpz_primorial_ui, FLAG_NODATA },
- { "mpz_powm", speed_mpz_powm },
+ { "mpz_powm", speed_mpz_powm, FLAG_R_OPTIONAL },
{ "mpz_powm_mod", speed_mpz_powm_mod },
{ "mpz_powm_redc", speed_mpz_powm_redc },
{ "mpz_powm_sec", speed_mpz_powm_sec },
diff --git a/tune/speed.h b/tune/speed.h
index 18f54600a..d66a79418 100644
--- a/tune/speed.h
+++ b/tune/speed.h
@@ -2638,7 +2638,10 @@ int speed_routine_count_zeros_setup (struct speed_params *, mp_ptr, int, int);
SPEED_RESTRICT_COND (s->size >= 1); \
\
mpz_init (r); \
- mpz_init_set_n (b, s->xp, s->size); \
+ if (s->r < 2) \
+ mpz_init_set_n (b, s->xp, s->size); \
+ else \
+ mpz_init_set_ui (b, s->r); \
mpz_init_set_n (m, s->yp, s->size); \
mpz_setbit (m, 0); /* force m to odd */ \
mpz_init_set_n (e, s->xp_block, 6); \