Lines Matching full:s
56 /* Provide __clz_tab even if it's not required, for the benefit of new code
128 The given (*fun)() is expected to run its function "s->reps" many times
130 speed_endtime(). If the function doesn't support the given s->size or
131 s->r, -1.0 should be returned. See the various base routines below. */
134 speed_measure (double (*fun) (struct speed_params *s), struct speed_params *s) in speed_measure() argument
147 "fun"s will cope with this, speed_noop() is one. */ in speed_measure()
148 if (s == NULL) in speed_measure()
151 s = &s_dummy; in speed_measure()
154 s->reps = 1; in speed_measure()
155 s->time_divisor = 1.0; in speed_measure()
160 s->src_num = 0; in speed_measure()
161 s->dst_num = 0; in speed_measure()
163 t[i] = (*fun) (s); in speed_measure()
167 (long) s->size, s->reps, s->r, i, t[i]); in speed_measure()
177 if (s->reps < 10000) in speed_measure()
178 s->reps *= 2; in speed_measure()
190 reps_d = ceil (1.1 * s->reps in speed_measure()
197 s->reps, speed_unittime, speed_precision, t[i]); in speed_measure()
200 s->reps = (unsigned) reps_d; in speed_measure()
202 t[i] /= s->reps; in speed_measure()
214 /* Look for e many t[]'s within TOLERANCE of each other to consider a in speed_measure()
221 return t[j-e+1] / s->time_divisor; in speed_measure()
280 speed_operand_src (struct speed_params *s, mp_ptr ptr, mp_size_t size) in speed_operand_src() argument
282 if (s->src_num >= numberof (s->src)) in speed_operand_src()
284 fprintf (stderr, "speed_operand_src: no room left in s->src[]\n"); in speed_operand_src()
287 s->src[s->src_num].ptr = ptr; in speed_operand_src()
288 s->src[s->src_num].size = size; in speed_operand_src()
289 s->src_num++; in speed_operand_src()
294 speed_operand_dst (struct speed_params *s, mp_ptr ptr, mp_size_t size) in speed_operand_dst() argument
296 if (s->dst_num >= numberof (s->dst)) in speed_operand_dst()
298 fprintf (stderr, "speed_operand_dst: no room left in s->dst[]\n"); in speed_operand_dst()
301 s->dst[s->dst_num].ptr = ptr; in speed_operand_dst()
302 s->dst[s->dst_num].size = size; in speed_operand_dst()
303 s->dst_num++; in speed_operand_dst()
308 speed_cache_fill (struct speed_params *s) in speed_cache_fill() argument
319 different = (s->dst_num != prev.dst_num || s->src_num != prev.src_num); in speed_cache_fill()
320 for (i = 0; i < s->dst_num; i++) in speed_cache_fill()
321 different |= (s->dst[i].ptr != prev.dst[i].ptr); in speed_cache_fill()
322 for (i = 0; i < s->src_num; i++) in speed_cache_fill()
323 different |= (s->src[i].ptr != prev.src[i].ptr); in speed_cache_fill()
327 if (s->dst_num != 0) in speed_cache_fill()
330 for (i = 0; i < s->dst_num; i++) in speed_cache_fill()
331 printf (" %08lX", (unsigned long) s->dst[i].ptr); in speed_cache_fill()
335 if (s->src_num != 0) in speed_cache_fill()
338 for (i = 0; i < s->src_num; i++) in speed_cache_fill()
339 printf (" %08lX", (unsigned long) s->src[i].ptr); in speed_cache_fill()
346 memcpy (&prev, s, sizeof(prev)); in speed_cache_fill()
349 switch (s->cache) { in speed_cache_fill()
351 for (i = 0; i < s->dst_num; i++) in speed_cache_fill()
352 mpn_cache_fill_write (s->dst[i].ptr, s->dst[i].size); in speed_cache_fill()
353 for (i = 0; i < s->src_num; i++) in speed_cache_fill()
354 mpn_cache_fill (s->src[i].ptr, s->src[i].size); in speed_cache_fill()
366 speed_option_set (const char *s) in speed_option_set() argument
370 if (strcmp (s, "addrs") == 0) in speed_option_set()
374 else if (strcmp (s, "verbose") == 0) in speed_option_set()
378 else if (sscanf (s, "verbose=%d", &n) == 1) in speed_option_set()
382 else if (strcmp (s, "cycles-broken") == 0) in speed_option_set()
388 printf ("Unrecognised -o option: %s\n", s); in speed_option_set()
397 Each routine allocates it's own destination space for the result of the
413 using the routines will ensure s->xp and s->yp are aligned. Aligning
414 onto a CACHE_LINE_SIZE boundary is suggested. s->align_wp and
415 s->align_wp2 should be respected where it makes sense to do so.
420 can always be assumed s->reps >= 1.
422 i = s->reps
430 s->size can be used creatively, and s->xp and s->yp can be ignored. For
431 example, speed_mpz_fac_ui() uses s->size as n for the factorial. s->r is
438 speed_MPN_COPY (struct speed_params *s) in speed_MPN_COPY() argument
443 speed_MPN_COPY_INCR (struct speed_params *s) in speed_MPN_COPY_INCR() argument
448 speed_MPN_COPY_DECR (struct speed_params *s) in speed_MPN_COPY_DECR() argument
454 speed_mpn_copyi (struct speed_params *s) in speed_mpn_copyi() argument
461 speed_mpn_copyd (struct speed_params *s) in speed_mpn_copyd() argument
467 speed_memcpy (struct speed_params *s) in speed_memcpy() argument
472 speed_mpn_com (struct speed_params *s) in speed_mpn_com() argument
477 speed_mpn_neg (struct speed_params *s) in speed_mpn_neg() argument
482 speed_mpn_sec_tabselect (struct speed_params *s) in speed_mpn_sec_tabselect() argument
489 speed_mpn_addmul_1 (struct speed_params *s) in speed_mpn_addmul_1() argument
494 speed_mpn_submul_1 (struct speed_params *s) in speed_mpn_submul_1() argument
501 speed_mpn_addmul_2 (struct speed_params *s) in speed_mpn_addmul_2() argument
508 speed_mpn_addmul_3 (struct speed_params *s) in speed_mpn_addmul_3() argument
515 speed_mpn_addmul_4 (struct speed_params *s) in speed_mpn_addmul_4() argument
522 speed_mpn_addmul_5 (struct speed_params *s) in speed_mpn_addmul_5() argument
529 speed_mpn_addmul_6 (struct speed_params *s) in speed_mpn_addmul_6() argument
536 speed_mpn_addmul_7 (struct speed_params *s) in speed_mpn_addmul_7() argument
543 speed_mpn_addmul_8 (struct speed_params *s) in speed_mpn_addmul_8() argument
550 speed_mpn_mul_1 (struct speed_params *s) in speed_mpn_mul_1() argument
555 speed_mpn_mul_1_inplace (struct speed_params *s) in speed_mpn_mul_1_inplace() argument
562 speed_mpn_mul_2 (struct speed_params *s) in speed_mpn_mul_2() argument
569 speed_mpn_mul_3 (struct speed_params *s) in speed_mpn_mul_3() argument
576 speed_mpn_mul_4 (struct speed_params *s) in speed_mpn_mul_4() argument
583 speed_mpn_mul_5 (struct speed_params *s) in speed_mpn_mul_5() argument
590 speed_mpn_mul_6 (struct speed_params *s) in speed_mpn_mul_6() argument
598 speed_mpn_lshift (struct speed_params *s) in speed_mpn_lshift() argument
603 speed_mpn_lshiftc (struct speed_params *s) in speed_mpn_lshiftc() argument
608 speed_mpn_rshift (struct speed_params *s) in speed_mpn_rshift() argument
618 speed_mpn_divrem_1 (struct speed_params *s) in speed_mpn_divrem_1() argument
623 speed_mpn_divrem_1f (struct speed_params *s) in speed_mpn_divrem_1f() argument
629 speed_mpn_divrem_1c (struct speed_params *s) in speed_mpn_divrem_1c() argument
634 speed_mpn_divrem_1cf (struct speed_params *s) in speed_mpn_divrem_1cf() argument
641 speed_mpn_divrem_1_div (struct speed_params *s) in speed_mpn_divrem_1_div() argument
646 speed_mpn_divrem_1f_div (struct speed_params *s) in speed_mpn_divrem_1f_div() argument
651 speed_mpn_divrem_1_inv (struct speed_params *s) in speed_mpn_divrem_1_inv() argument
656 speed_mpn_divrem_1f_inv (struct speed_params *s) in speed_mpn_divrem_1f_inv() argument
661 speed_mpn_mod_1_div (struct speed_params *s) in speed_mpn_mod_1_div() argument
666 speed_mpn_mod_1_inv (struct speed_params *s) in speed_mpn_mod_1_inv() argument
672 speed_mpn_preinv_divrem_1 (struct speed_params *s) in speed_mpn_preinv_divrem_1() argument
677 speed_mpn_preinv_divrem_1f (struct speed_params *s) in speed_mpn_preinv_divrem_1f() argument
684 speed_mpn_mod_34lsub1 (struct speed_params *s) in speed_mpn_mod_34lsub1() argument
691 speed_mpn_divrem_2 (struct speed_params *s) in speed_mpn_divrem_2() argument
696 speed_mpn_divrem_2_div (struct speed_params *s) in speed_mpn_divrem_2_div() argument
701 speed_mpn_divrem_2_inv (struct speed_params *s) in speed_mpn_divrem_2_inv() argument
707 speed_mpn_div_qr_1n_pi1 (struct speed_params *s) in speed_mpn_div_qr_1n_pi1() argument
712 speed_mpn_div_qr_1n_pi1_1 (struct speed_params *s) in speed_mpn_div_qr_1n_pi1_1() argument
717 speed_mpn_div_qr_1n_pi1_2 (struct speed_params *s) in speed_mpn_div_qr_1n_pi1_2() argument
723 speed_mpn_div_qr_1 (struct speed_params *s) in speed_mpn_div_qr_1() argument
729 speed_mpn_div_qr_2n (struct speed_params *s) in speed_mpn_div_qr_2n() argument
734 speed_mpn_div_qr_2u (struct speed_params *s) in speed_mpn_div_qr_2u() argument
740 speed_mpn_mod_1 (struct speed_params *s) in speed_mpn_mod_1() argument
746 speed_mpn_mod_1c (struct speed_params *s) in speed_mpn_mod_1c() argument
752 speed_mpn_preinv_mod_1 (struct speed_params *s) in speed_mpn_preinv_mod_1() argument
757 speed_mpn_mod_1_1 (struct speed_params *s) in speed_mpn_mod_1_1() argument
762 speed_mpn_mod_1_1_1 (struct speed_params *s) in speed_mpn_mod_1_1_1() argument
767 speed_mpn_mod_1_1_2 (struct speed_params *s) in speed_mpn_mod_1_1_2() argument
772 speed_mpn_mod_1_2 (struct speed_params *s) in speed_mpn_mod_1_2() argument
777 speed_mpn_mod_1_3 (struct speed_params *s) in speed_mpn_mod_1_3() argument
782 speed_mpn_mod_1_4 (struct speed_params *s) in speed_mpn_mod_1_4() argument
788 speed_mpn_divexact_1 (struct speed_params *s) in speed_mpn_divexact_1() argument
794 speed_mpn_divexact_by3 (struct speed_params *s) in speed_mpn_divexact_by3() argument
800 speed_mpn_bdiv_dbm1c (struct speed_params *s) in speed_mpn_bdiv_dbm1c() argument
806 speed_mpn_bdiv_q_1 (struct speed_params *s) in speed_mpn_bdiv_q_1() argument
812 speed_mpn_pi1_bdiv_q_1 (struct speed_params *s) in speed_mpn_pi1_bdiv_q_1() argument
819 speed_mpn_modexact_1_odd (struct speed_params *s) in speed_mpn_modexact_1_odd() argument
826 speed_mpn_modexact_1c_odd (struct speed_params *s) in speed_mpn_modexact_1c_odd() argument
832 speed_mpz_mod (struct speed_params *s) in speed_mpz_mod() argument
838 speed_mpn_sbpi1_div_qr (struct speed_params *s) in speed_mpn_sbpi1_div_qr() argument
843 speed_mpn_dcpi1_div_qr (struct speed_params *s) in speed_mpn_dcpi1_div_qr() argument
848 speed_mpn_sbpi1_divappr_q (struct speed_params *s) in speed_mpn_sbpi1_divappr_q() argument
853 speed_mpn_dcpi1_divappr_q (struct speed_params *s) in speed_mpn_dcpi1_divappr_q() argument
858 speed_mpn_mu_div_qr (struct speed_params *s) in speed_mpn_mu_div_qr() argument
863 speed_mpn_mu_divappr_q (struct speed_params *s) in speed_mpn_mu_divappr_q() argument
868 speed_mpn_mu_div_q (struct speed_params *s) in speed_mpn_mu_div_q() argument
873 speed_mpn_mupi_div_qr (struct speed_params *s) in speed_mpn_mupi_div_qr() argument
879 speed_mpn_sbpi1_bdiv_qr (struct speed_params *s) in speed_mpn_sbpi1_bdiv_qr() argument
884 speed_mpn_dcpi1_bdiv_qr (struct speed_params *s) in speed_mpn_dcpi1_bdiv_qr() argument
889 speed_mpn_sbpi1_bdiv_q (struct speed_params *s) in speed_mpn_sbpi1_bdiv_q() argument
894 speed_mpn_dcpi1_bdiv_q (struct speed_params *s) in speed_mpn_dcpi1_bdiv_q() argument
899 speed_mpn_sbpi1_bdiv_r (struct speed_params *s) in speed_mpn_sbpi1_bdiv_r() argument
904 speed_mpn_mu_bdiv_q (struct speed_params *s) in speed_mpn_mu_bdiv_q() argument
909 speed_mpn_mu_bdiv_qr (struct speed_params *s) in speed_mpn_mu_bdiv_qr() argument
915 speed_mpn_broot (struct speed_params *s) in speed_mpn_broot() argument
920 speed_mpn_broot_invm1 (struct speed_params *s) in speed_mpn_broot_invm1() argument
925 speed_mpn_brootinv (struct speed_params *s) in speed_mpn_brootinv() argument
927 SPEED_ROUTINE_MPN_BROOTINV (mpn_brootinv, 5*s->size); in speed_mpn_brootinv()
931 speed_mpn_binvert (struct speed_params *s) in speed_mpn_binvert() argument
937 speed_mpn_invert (struct speed_params *s) in speed_mpn_invert() argument
943 speed_mpn_invertappr (struct speed_params *s) in speed_mpn_invertappr() argument
949 speed_mpn_ni_invertappr (struct speed_params *s) in speed_mpn_ni_invertappr() argument
955 speed_mpn_sec_invert (struct speed_params *s) in speed_mpn_sec_invert() argument
961 speed_mpn_redc_1 (struct speed_params *s) in speed_mpn_redc_1() argument
966 speed_mpn_redc_2 (struct speed_params *s) in speed_mpn_redc_2() argument
971 speed_mpn_redc_n (struct speed_params *s) in speed_mpn_redc_n() argument
978 speed_mpn_popcount (struct speed_params *s) in speed_mpn_popcount() argument
983 speed_mpn_hamdist (struct speed_params *s) in speed_mpn_hamdist() argument
990 speed_mpn_add_n (struct speed_params *s) in speed_mpn_add_n() argument
995 speed_mpn_sub_n (struct speed_params *s) in speed_mpn_sub_n() argument
1000 speed_mpn_add_1 (struct speed_params *s) in speed_mpn_add_1() argument
1005 speed_mpn_add_1_inplace (struct speed_params *s) in speed_mpn_add_1_inplace() argument
1010 speed_mpn_sub_1 (struct speed_params *s) in speed_mpn_sub_1() argument
1015 speed_mpn_sub_1_inplace (struct speed_params *s) in speed_mpn_sub_1_inplace() argument
1021 speed_mpn_add_err1_n (struct speed_params *s) in speed_mpn_add_err1_n() argument
1026 speed_mpn_sub_err1_n (struct speed_params *s) in speed_mpn_sub_err1_n() argument
1031 speed_mpn_add_err2_n (struct speed_params *s) in speed_mpn_add_err2_n() argument
1036 speed_mpn_sub_err2_n (struct speed_params *s) in speed_mpn_sub_err2_n() argument
1041 speed_mpn_add_err3_n (struct speed_params *s) in speed_mpn_add_err3_n() argument
1046 speed_mpn_sub_err3_n (struct speed_params *s) in speed_mpn_sub_err3_n() argument
1054 speed_mpn_add_n_sub_n (struct speed_params *s) in speed_mpn_add_n_sub_n() argument
1056 SPEED_ROUTINE_MPN_ADDSUB_N_CALL (mpn_add_n_sub_n (ap, sp, s->xp, s->yp, s->size)); in speed_mpn_add_n_sub_n()
1062 speed_mpn_addlsh1_n (struct speed_params *s) in speed_mpn_addlsh1_n() argument
1069 speed_mpn_sublsh1_n (struct speed_params *s) in speed_mpn_sublsh1_n() argument
1076 speed_mpn_addlsh1_n_ip1 (struct speed_params *s) in speed_mpn_addlsh1_n_ip1() argument
1083 speed_mpn_addlsh1_n_ip2 (struct speed_params *s) in speed_mpn_addlsh1_n_ip2() argument
1090 speed_mpn_sublsh1_n_ip1 (struct speed_params *s) in speed_mpn_sublsh1_n_ip1() argument
1097 speed_mpn_rsblsh1_n (struct speed_params *s) in speed_mpn_rsblsh1_n() argument
1104 speed_mpn_addlsh2_n (struct speed_params *s) in speed_mpn_addlsh2_n() argument
1111 speed_mpn_sublsh2_n (struct speed_params *s) in speed_mpn_sublsh2_n() argument
1118 speed_mpn_addlsh2_n_ip1 (struct speed_params *s) in speed_mpn_addlsh2_n_ip1() argument
1125 speed_mpn_addlsh2_n_ip2 (struct speed_params *s) in speed_mpn_addlsh2_n_ip2() argument
1132 speed_mpn_sublsh2_n_ip1 (struct speed_params *s) in speed_mpn_sublsh2_n_ip1() argument
1139 speed_mpn_rsblsh2_n (struct speed_params *s) in speed_mpn_rsblsh2_n() argument
1146 speed_mpn_addlsh_n (struct speed_params *s) in speed_mpn_addlsh_n() argument
1148 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_addlsh_n (wp, xp, yp, s->size, 7)); in speed_mpn_addlsh_n()
1153 speed_mpn_sublsh_n (struct speed_params *s) in speed_mpn_sublsh_n() argument
1155 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_sublsh_n (wp, xp, yp, s->size, 7)); in speed_mpn_sublsh_n()
1160 speed_mpn_addlsh_n_ip1 (struct speed_params *s) in speed_mpn_addlsh_n_ip1() argument
1162 SPEED_ROUTINE_MPN_UNARY_1_CALL (mpn_addlsh_n_ip1 (wp, s->xp, s->size, 7)); in speed_mpn_addlsh_n_ip1()
1167 speed_mpn_addlsh_n_ip2 (struct speed_params *s) in speed_mpn_addlsh_n_ip2() argument
1169 SPEED_ROUTINE_MPN_UNARY_1_CALL (mpn_addlsh_n_ip2 (wp, s->xp, s->size, 7)); in speed_mpn_addlsh_n_ip2()
1174 speed_mpn_sublsh_n_ip1 (struct speed_params *s) in speed_mpn_sublsh_n_ip1() argument
1176 SPEED_ROUTINE_MPN_UNARY_1_CALL (mpn_sublsh_n_ip1 (wp, s->xp, s->size, 7)); in speed_mpn_sublsh_n_ip1()
1181 speed_mpn_rsblsh_n (struct speed_params *s) in speed_mpn_rsblsh_n() argument
1183 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_rsblsh_n (wp, xp, yp, s->size, 7)); in speed_mpn_rsblsh_n()
1188 speed_mpn_rsh1add_n (struct speed_params *s) in speed_mpn_rsh1add_n() argument
1195 speed_mpn_rsh1sub_n (struct speed_params *s) in speed_mpn_rsh1sub_n() argument
1202 speed_mpn_cnd_add_n (struct speed_params *s) in speed_mpn_cnd_add_n() argument
1204 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_cnd_add_n (1, wp, xp, yp, s->size)); in speed_mpn_cnd_add_n()
1207 speed_mpn_cnd_sub_n (struct speed_params *s) in speed_mpn_cnd_sub_n() argument
1209 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_cnd_sub_n (1, wp, xp, yp, s->size)); in speed_mpn_cnd_sub_n()
1215 speed_mpn_and_n (struct speed_params *s) in speed_mpn_and_n() argument
1217 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_and_n (wp, xp, yp, s->size)); in speed_mpn_and_n()
1220 speed_mpn_andn_n (struct speed_params *s) in speed_mpn_andn_n() argument
1222 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_andn_n (wp, xp, yp, s->size)); in speed_mpn_andn_n()
1225 speed_mpn_nand_n (struct speed_params *s) in speed_mpn_nand_n() argument
1227 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_nand_n (wp, xp, yp, s->size)); in speed_mpn_nand_n()
1230 speed_mpn_ior_n (struct speed_params *s) in speed_mpn_ior_n() argument
1232 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_ior_n (wp, xp, yp, s->size)); in speed_mpn_ior_n()
1235 speed_mpn_iorn_n (struct speed_params *s) in speed_mpn_iorn_n() argument
1237 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_iorn_n (wp, xp, yp, s->size)); in speed_mpn_iorn_n()
1240 speed_mpn_nior_n (struct speed_params *s) in speed_mpn_nior_n() argument
1242 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_nior_n (wp, xp, yp, s->size)); in speed_mpn_nior_n()
1245 speed_mpn_xor_n (struct speed_params *s) in speed_mpn_xor_n() argument
1247 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_xor_n (wp, xp, yp, s->size)); in speed_mpn_xor_n()
1250 speed_mpn_xnor_n (struct speed_params *s) in speed_mpn_xnor_n() argument
1252 SPEED_ROUTINE_MPN_BINARY_N_CALL (mpn_xnor_n (wp, xp, yp, s->size)); in speed_mpn_xnor_n()
1257 speed_mpn_mul_n (struct speed_params *s) in speed_mpn_mul_n() argument
1262 speed_mpn_sqr (struct speed_params *s) in speed_mpn_sqr() argument
1267 speed_mpn_mul_n_sqr (struct speed_params *s) in speed_mpn_mul_n_sqr() argument
1269 SPEED_ROUTINE_MPN_SQR_CALL (mpn_mul_n (wp, s->xp, s->xp, s->size)); in speed_mpn_mul_n_sqr()
1273 speed_mpn_mul_basecase (struct speed_params *s) in speed_mpn_mul_basecase() argument
1278 speed_mpn_mul (struct speed_params *s) in speed_mpn_mul() argument
1283 speed_mpn_sqr_basecase (struct speed_params *s) in speed_mpn_sqr_basecase() argument
1291 speed_mpn_sqr_diagonal (struct speed_params *s) in speed_mpn_sqr_diagonal() argument
1299 speed_mpn_sqr_diag_addlsh1 (struct speed_params *s) in speed_mpn_sqr_diag_addlsh1() argument
1301 SPEED_ROUTINE_MPN_SQR_DIAG_ADDLSH1_CALL (mpn_sqr_diag_addlsh1 (wp, tp, s->xp, s->size)); in speed_mpn_sqr_diag_addlsh1()
1306 speed_mpn_toom2_sqr (struct speed_params *s) in speed_mpn_toom2_sqr() argument
1311 speed_mpn_toom3_sqr (struct speed_params *s) in speed_mpn_toom3_sqr() argument
1316 speed_mpn_toom4_sqr (struct speed_params *s) in speed_mpn_toom4_sqr() argument
1321 speed_mpn_toom6_sqr (struct speed_params *s) in speed_mpn_toom6_sqr() argument
1326 speed_mpn_toom8_sqr (struct speed_params *s) in speed_mpn_toom8_sqr() argument
1331 speed_mpn_toom22_mul (struct speed_params *s) in speed_mpn_toom22_mul() argument
1336 speed_mpn_toom33_mul (struct speed_params *s) in speed_mpn_toom33_mul() argument
1341 speed_mpn_toom44_mul (struct speed_params *s) in speed_mpn_toom44_mul() argument
1346 speed_mpn_toom6h_mul (struct speed_params *s) in speed_mpn_toom6h_mul() argument
1351 speed_mpn_toom8h_mul (struct speed_params *s) in speed_mpn_toom8h_mul() argument
1357 speed_mpn_toom32_mul (struct speed_params *s) in speed_mpn_toom32_mul() argument
1362 speed_mpn_toom42_mul (struct speed_params *s) in speed_mpn_toom42_mul() argument
1367 speed_mpn_toom43_mul (struct speed_params *s) in speed_mpn_toom43_mul() argument
1372 speed_mpn_toom63_mul (struct speed_params *s) in speed_mpn_toom63_mul() argument
1377 speed_mpn_toom32_for_toom43_mul (struct speed_params *s) in speed_mpn_toom32_for_toom43_mul() argument
1382 speed_mpn_toom43_for_toom32_mul (struct speed_params *s) in speed_mpn_toom43_for_toom32_mul() argument
1387 speed_mpn_toom32_for_toom53_mul (struct speed_params *s) in speed_mpn_toom32_for_toom53_mul() argument
1392 speed_mpn_toom53_for_toom32_mul (struct speed_params *s) in speed_mpn_toom53_for_toom32_mul() argument
1397 speed_mpn_toom42_for_toom53_mul (struct speed_params *s) in speed_mpn_toom42_for_toom53_mul() argument
1402 speed_mpn_toom53_for_toom42_mul (struct speed_params *s) in speed_mpn_toom53_for_toom42_mul() argument
1407 speed_mpn_toom43_for_toom54_mul (struct speed_params *s) in speed_mpn_toom43_for_toom54_mul() argument
1412 speed_mpn_toom54_for_toom43_mul (struct speed_params *s) in speed_mpn_toom54_for_toom43_mul() argument
1418 speed_mpn_nussbaumer_mul (struct speed_params *s) in speed_mpn_nussbaumer_mul() argument
1421 (mpn_nussbaumer_mul (wp, s->xp, s->size, s->yp, s->size)); in speed_mpn_nussbaumer_mul()
1424 speed_mpn_nussbaumer_mul_sqr (struct speed_params *s) in speed_mpn_nussbaumer_mul_sqr() argument
1427 (mpn_nussbaumer_mul (wp, s->xp, s->size, s->xp, s->size)); in speed_mpn_nussbaumer_mul_sqr()
1432 speed_mpn_mul_fft_full (struct speed_params *s) in speed_mpn_mul_fft_full() argument
1435 (mpn_mul_fft_full (wp, s->xp, s->size, s->yp, s->size)); in speed_mpn_mul_fft_full()
1438 speed_mpn_mul_fft_full_sqr (struct speed_params *s) in speed_mpn_mul_fft_full_sqr() argument
1441 (mpn_mul_fft_full (wp, s->xp, s->size, s->xp, s->size)); in speed_mpn_mul_fft_full_sqr()
1445 /* These are mod 2^N+1 multiplies and squares. If s->r is supplied it's
1446 used as k, otherwise the best k for the size is used. If s->size isn't a
1447 multiple of 2^k it's rounded up to make the effective operation size. */
1458 SPEED_RESTRICT_COND (s->size >= 1); \
1460 if (s->r != 0) \
1461 k = s->r; \
1463 k = mpn_fft_best_k (s->size, sqr); \
1466 pl = mpn_fft_next_size (s->size, k); \
1467 SPEED_TMP_ALLOC_LIMBS (wp, pl+1, s->align_wp); \
1469 speed_operand_src (s, s->xp, s->size); \
1471 speed_operand_src (s, s->yp, s->size); \
1472 speed_operand_dst (s, wp, pl+1); \
1473 speed_cache_fill (s); \
1476 i = s->reps; \
1487 speed_mpn_mul_fft (struct speed_params *s) in speed_mpn_mul_fft() argument
1490 (mpn_mul_fft (wp, pl, s->xp, s->size, s->yp, s->size, k), 0); in speed_mpn_mul_fft()
1494 speed_mpn_mul_fft_sqr (struct speed_params *s) in speed_mpn_mul_fft_sqr() argument
1497 (mpn_mul_fft (wp, pl, s->xp, s->size, s->xp, s->size, k), 1); in speed_mpn_mul_fft_sqr()
1501 speed_mpn_fft_mul (struct speed_params *s) in speed_mpn_fft_mul() argument
1503 SPEED_ROUTINE_MPN_MUL_N_CALL (mpn_fft_mul (wp, s->xp, s->size, s->yp, s->size)); in speed_mpn_fft_mul()
1507 speed_mpn_fft_sqr (struct speed_params *s) in speed_mpn_fft_sqr() argument
1509 SPEED_ROUTINE_MPN_SQR_CALL (mpn_fft_mul (wp, s->xp, s->size, s->xp, s->size)); in speed_mpn_fft_sqr()
1513 speed_mpn_sqrlo (struct speed_params *s) in speed_mpn_sqrlo() argument
1518 speed_mpn_sqrlo_basecase (struct speed_params *s) in speed_mpn_sqrlo_basecase() argument
1520 SPEED_RESTRICT_COND (ABOVE_THRESHOLD (s->size, MIN (3, SQRLO_BASECASE_THRESHOLD)) in speed_mpn_sqrlo_basecase()
1521 && BELOW_THRESHOLD (s->size, SQRLO_DC_THRESHOLD)); in speed_mpn_sqrlo_basecase()
1525 speed_mpn_mullo_n (struct speed_params *s) in speed_mpn_mullo_n() argument
1530 speed_mpn_mullo_basecase (struct speed_params *s) in speed_mpn_mullo_basecase() argument
1536 speed_mpn_mulmid_basecase (struct speed_params *s) in speed_mpn_mulmid_basecase() argument
1542 speed_mpn_mulmid (struct speed_params *s) in speed_mpn_mulmid() argument
1548 speed_mpn_mulmid_n (struct speed_params *s) in speed_mpn_mulmid_n() argument
1554 speed_mpn_toom42_mulmid (struct speed_params *s) in speed_mpn_toom42_mulmid() argument
1560 speed_mpn_mulmod_bnm1 (struct speed_params *s) in speed_mpn_mulmod_bnm1() argument
1562 …SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL (mpn_mulmod_bnm1 (wp, s->size, s->xp, s->size, s->yp, s->size, … in speed_mpn_mulmod_bnm1()
1566 speed_mpn_bc_mulmod_bnm1 (struct speed_params *s) in speed_mpn_bc_mulmod_bnm1() argument
1568 SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL (mpn_bc_mulmod_bnm1 (wp, s->xp, s->yp, s->size, tp)); in speed_mpn_bc_mulmod_bnm1()
1572 speed_mpn_mulmod_bnm1_rounded (struct speed_params *s) in speed_mpn_mulmod_bnm1_rounded() argument
1578 speed_mpn_sqrmod_bnm1 (struct speed_params *s) in speed_mpn_sqrmod_bnm1() argument
1580 SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL (mpn_sqrmod_bnm1 (wp, s->size, s->xp, s->size, tp)); in speed_mpn_sqrmod_bnm1()
1584 speed_mpn_matrix22_mul (struct speed_params *s) in speed_mpn_matrix22_mul() argument
1599 SPEED_TMP_ALLOC_LIMBS (a, 4 * s->size, s->align_xp); in speed_mpn_matrix22_mul()
1600 SPEED_TMP_ALLOC_LIMBS (b, 4 * s->size, s->align_yp); in speed_mpn_matrix22_mul()
1601 SPEED_TMP_ALLOC_LIMBS (r, 8 * s->size + 4, s->align_wp); in speed_mpn_matrix22_mul()
1603 MPN_COPY (a, s->xp, s->size); in speed_mpn_matrix22_mul()
1604 mpn_random (a + s->size, 3 * s->size); in speed_mpn_matrix22_mul()
1605 MPN_COPY (b, s->yp, s->size); in speed_mpn_matrix22_mul()
1606 mpn_random (b + s->size, 3 * s->size); in speed_mpn_matrix22_mul()
1608 itch = mpn_matrix22_mul_itch (s->size, s->size); in speed_mpn_matrix22_mul()
1609 SPEED_TMP_ALLOC_LIMBS (tp, itch, s->align_wp2); in speed_mpn_matrix22_mul()
1611 speed_operand_src (s, a, 4 * s->size); in speed_mpn_matrix22_mul()
1612 speed_operand_src (s, b, 4 * s->size); in speed_mpn_matrix22_mul()
1613 speed_operand_dst (s, r, 8 * s->size + 4); in speed_mpn_matrix22_mul()
1614 speed_operand_dst (s, tp, itch); in speed_mpn_matrix22_mul()
1615 speed_cache_fill (s); in speed_mpn_matrix22_mul()
1618 i = s->reps; in speed_mpn_matrix22_mul()
1621 mp_size_t sz = s->size; in speed_mpn_matrix22_mul()
1637 speed_mpn_hgcd2 (struct speed_params *s) in speed_mpn_hgcd2() argument
1642 speed_mpn_hgcd2_1 (struct speed_params *s) in speed_mpn_hgcd2_1() argument
1647 speed_mpn_hgcd2_2 (struct speed_params *s) in speed_mpn_hgcd2_2() argument
1652 speed_mpn_hgcd2_3 (struct speed_params *s) in speed_mpn_hgcd2_3() argument
1657 speed_mpn_hgcd2_4 (struct speed_params *s) in speed_mpn_hgcd2_4() argument
1662 speed_mpn_hgcd2_5 (struct speed_params *s) in speed_mpn_hgcd2_5() argument
1668 speed_mpn_hgcd (struct speed_params *s) in speed_mpn_hgcd() argument
1674 speed_mpn_hgcd_lehmer (struct speed_params *s) in speed_mpn_hgcd_lehmer() argument
1680 speed_mpn_hgcd_appr (struct speed_params *s) in speed_mpn_hgcd_appr() argument
1686 speed_mpn_hgcd_appr_lehmer (struct speed_params *s) in speed_mpn_hgcd_appr_lehmer() argument
1692 speed_mpn_hgcd_reduce (struct speed_params *s) in speed_mpn_hgcd_reduce() argument
1697 speed_mpn_hgcd_reduce_1 (struct speed_params *s) in speed_mpn_hgcd_reduce_1() argument
1702 speed_mpn_hgcd_reduce_2 (struct speed_params *s) in speed_mpn_hgcd_reduce_2() argument
1708 speed_mpn_gcd (struct speed_params *s) in speed_mpn_gcd() argument
1714 speed_mpn_gcdext (struct speed_params *s) in speed_mpn_gcdext() argument
1720 speed_mpn_gcdext_lehmer (struct speed_params *s)
1726 speed_mpn_gcdext_single (struct speed_params *s) in speed_mpn_gcdext_single() argument
1731 speed_mpn_gcdext_double (struct speed_params *s) in speed_mpn_gcdext_double() argument
1736 speed_mpn_gcdext_one_single (struct speed_params *s) in speed_mpn_gcdext_one_single() argument
1741 speed_mpn_gcdext_one_double (struct speed_params *s) in speed_mpn_gcdext_one_double() argument
1746 speed_mpn_gcd_1 (struct speed_params *s) in speed_mpn_gcd_1() argument
1751 speed_mpn_gcd_11 (struct speed_params *s) in speed_mpn_gcd_11() argument
1756 speed_mpn_gcd_1N (struct speed_params *s) in speed_mpn_gcd_1N() argument
1761 speed_mpn_gcd_22 (struct speed_params *s) in speed_mpn_gcd_22() argument
1767 speed_mpz_nextprime (struct speed_params *s) in speed_mpz_nextprime() argument
1773 speed_mpz_jacobi (struct speed_params *s) in speed_mpz_jacobi() argument
1778 speed_mpn_jacobi_base (struct speed_params *s) in speed_mpn_jacobi_base() argument
1783 speed_mpn_jacobi_base_1 (struct speed_params *s) in speed_mpn_jacobi_base_1() argument
1788 speed_mpn_jacobi_base_2 (struct speed_params *s) in speed_mpn_jacobi_base_2() argument
1793 speed_mpn_jacobi_base_3 (struct speed_params *s) in speed_mpn_jacobi_base_3() argument
1798 speed_mpn_jacobi_base_4 (struct speed_params *s) in speed_mpn_jacobi_base_4() argument
1805 speed_mpn_sqrtrem (struct speed_params *s) in speed_mpn_sqrtrem() argument
1807 SPEED_ROUTINE_MPN_SQRTROOT_CALL (mpn_sqrtrem (wp, wp2, s->xp, s->size)); in speed_mpn_sqrtrem()
1811 speed_mpn_sqrt (struct speed_params *s) in speed_mpn_sqrt() argument
1813 SPEED_ROUTINE_MPN_SQRTROOT_CALL (mpn_sqrtrem (wp, NULL, s->xp, s->size)); in speed_mpn_sqrt()
1817 speed_mpn_rootrem (struct speed_params *s) in speed_mpn_rootrem() argument
1819 SPEED_ROUTINE_MPN_SQRTROOT_CALL (mpn_rootrem (wp, wp2, s->xp, s->size, s->r)); in speed_mpn_rootrem()
1823 speed_mpn_root (struct speed_params *s) in speed_mpn_root() argument
1825 SPEED_ROUTINE_MPN_SQRTROOT_CALL (mpn_rootrem (wp, NULL, s->xp, s->size, s->r)); in speed_mpn_root()
1830 speed_mpn_perfect_power_p (struct speed_params *s) in speed_mpn_perfect_power_p() argument
1836 speed_mpn_perfect_square_p (struct speed_params *s) in speed_mpn_perfect_square_p() argument
1843 speed_mpz_fac_ui (struct speed_params *s) in speed_mpz_fac_ui() argument
1849 speed_mpz_2fac_ui (struct speed_params *s) in speed_mpz_2fac_ui() argument
1855 speed_mpz_primorial_ui (struct speed_params *s) in speed_mpz_primorial_ui() argument
1862 speed_mpn_fib2_ui (struct speed_params *s) in speed_mpn_fib2_ui() argument
1867 speed_mpz_fib_ui (struct speed_params *s) in speed_mpz_fib_ui() argument
1872 speed_mpz_fib2_ui (struct speed_params *s) in speed_mpz_fib2_ui() argument
1877 speed_mpz_lucnum_ui (struct speed_params *s) in speed_mpz_lucnum_ui() argument
1882 speed_mpz_lucnum2_ui (struct speed_params *s) in speed_mpz_lucnum2_ui() argument
1889 speed_mpz_powm (struct speed_params *s) in speed_mpz_powm() argument
1894 speed_mpz_powm_mod (struct speed_params *s) in speed_mpz_powm_mod() argument
1899 speed_mpz_powm_redc (struct speed_params *s) in speed_mpz_powm_redc() argument
1904 speed_mpz_powm_sec (struct speed_params *s) in speed_mpz_powm_sec() argument
1909 speed_mpz_powm_ui (struct speed_params *s) in speed_mpz_powm_ui() argument
1916 speed_binvert_limb (struct speed_params *s) in speed_binvert_limb() argument
1923 speed_noop (struct speed_params *s) in speed_noop() argument
1928 i = s->reps; in speed_noop()
1936 speed_noop_wxs (struct speed_params *s) in speed_noop_wxs() argument
1947 i = s->reps; in speed_noop_wxs()
1949 noop_wxs (wp, s->xp, s->size); in speed_noop_wxs()
1958 speed_noop_wxys (struct speed_params *s) in speed_noop_wxys() argument
1969 i = s->reps; in speed_noop_wxys()
1971 noop_wxys (wp, s->xp, s->yp, s->size); in speed_noop_wxys()
1986 i = s->reps; \
2002 speed_malloc_free (struct speed_params *s) in speed_malloc_free() argument
2004 size_t bytes = s->size * GMP_LIMB_BYTES; in speed_malloc_free()
2011 speed_malloc_realloc_free (struct speed_params *s) in speed_malloc_realloc_free() argument
2013 size_t bytes = s->size * GMP_LIMB_BYTES; in speed_malloc_realloc_free()
2021 speed_gmp_allocate_free (struct speed_params *s) in speed_gmp_allocate_free() argument
2023 size_t bytes = s->size * GMP_LIMB_BYTES; in speed_gmp_allocate_free()
2030 speed_gmp_allocate_reallocate_free (struct speed_params *s) in speed_gmp_allocate_reallocate_free() argument
2032 size_t bytes = s->size * GMP_LIMB_BYTES; in speed_gmp_allocate_reallocate_free()
2041 speed_mpz_init_clear (struct speed_params *s) in speed_mpz_init_clear() argument
2049 speed_mpz_init_realloc_clear (struct speed_params *s) in speed_mpz_init_realloc_clear() argument
2053 _mpz_realloc (z, s->size); in speed_mpz_init_realloc_clear()
2058 speed_mpq_init_clear (struct speed_params *s) in speed_mpq_init_clear() argument
2066 speed_mpf_init_clear (struct speed_params *s) in speed_mpf_init_clear() argument
2079 speed_mpz_add (struct speed_params *s) in speed_mpz_add() argument
2089 mpz_set_n (x, s->xp, s->size); in speed_mpz_add()
2090 mpz_set_n (y, s->yp, s->size); in speed_mpz_add()
2094 i = s->reps; in speed_mpz_add()
2109 /* An inverse (s->r) or (s->size)/2 modulo s->size limbs */
2112 speed_mpz_invert (struct speed_params *s) in speed_mpz_invert() argument
2119 if (s->r == 0) in speed_mpz_invert()
2120 k = s->size/2; in speed_mpz_invert()
2121 else if (s->r < GMP_LIMB_HIGHBIT) in speed_mpz_invert()
2122 k = s->r; in speed_mpz_invert()
2123 else /* s->r < 0 */ in speed_mpz_invert()
2124 k = s->size - (-s->r); in speed_mpz_invert()
2126 SPEED_RESTRICT_COND (k > 0 && k <= s->size); in speed_mpz_invert()
2128 mpz_init_set_n (m, s->yp, s->size); in speed_mpz_invert()
2131 mpz_init_set_n (a, s->xp, k); in speed_mpz_invert()
2138 i = s->reps; in speed_mpz_invert()
2154 speed_mpz_bin_uiui (struct speed_params *s) in speed_mpz_bin_uiui() argument
2162 if (s->r != 0) in speed_mpz_bin_uiui()
2163 k = s->r; in speed_mpz_bin_uiui()
2165 k = s->size/2; in speed_mpz_bin_uiui()
2168 i = s->reps; in speed_mpz_bin_uiui()
2171 mpz_bin_uiui (w, s->size, k); in speed_mpz_bin_uiui()
2184 speed_mpz_bin_ui (struct speed_params *s) in speed_mpz_bin_ui() argument
2194 mpz_setbit (x, s->size); in speed_mpz_bin_ui()
2196 if (s->r != 0) in speed_mpz_bin_ui()
2197 k = s->r; in speed_mpz_bin_ui()
2199 k = s->size; in speed_mpz_bin_ui()
2202 i = s->reps; in speed_mpz_bin_ui()
2219 speed_mpz_mfac_uiui (struct speed_params *s) in speed_mpz_mfac_uiui() argument
2227 if (s->r != 0) in speed_mpz_mfac_uiui()
2228 k = s->r; in speed_mpz_mfac_uiui()
2230 for (k = 1; s->size >> k; ++k); in speed_mpz_mfac_uiui()
2233 i = s->reps; in speed_mpz_mfac_uiui()
2236 mpz_mfac_uiui (w, s->size, k); in speed_mpz_mfac_uiui()
2246 the issue rate. There's only 10 per loop so the code doesn't get too big
2269 s->time_divisor = 10; \
2271 h = s->xp[0]; \
2272 l = s->yp[0]; \
2274 if (s->r == 1) \
2277 i = s->reps; \
2289 i = s->reps; \
2308 speed_umul_ppmm (struct speed_params *s) in speed_umul_ppmm() argument
2312 umul_ppmm (h, l, l, h); h ^= s->xp_block[0]; l ^= s->yp_block[0]; in speed_umul_ppmm()
2313 umul_ppmm (h, l, l, h); h ^= s->xp_block[1]; l ^= s->yp_block[1]; in speed_umul_ppmm()
2314 umul_ppmm (h, l, l, h); h ^= s->xp_block[2]; l ^= s->yp_block[2]; in speed_umul_ppmm()
2315 umul_ppmm (h, l, l, h); h ^= s->xp_block[3]; l ^= s->yp_block[3]; in speed_umul_ppmm()
2316 umul_ppmm (h, l, l, h); h ^= s->xp_block[4]; l ^= s->yp_block[4]; in speed_umul_ppmm()
2317 umul_ppmm (h, l, l, h); h ^= s->xp_block[5]; l ^= s->yp_block[5]; in speed_umul_ppmm()
2318 umul_ppmm (h, l, l, h); h ^= s->xp_block[6]; l ^= s->yp_block[6]; in speed_umul_ppmm()
2319 umul_ppmm (h, l, l, h); h ^= s->xp_block[7]; l ^= s->yp_block[7]; in speed_umul_ppmm()
2320 umul_ppmm (h, l, l, h); h ^= s->xp_block[8]; l ^= s->yp_block[8]; in speed_umul_ppmm()
2321 umul_ppmm (h, l, l, h); h ^= s->xp_block[9]; l ^= s->yp_block[9]; in speed_umul_ppmm()
2342 speed_mpn_umul_ppmm (struct speed_params *s) in speed_mpn_umul_ppmm() argument
2346 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[0]; l ^= s->yp_block[0]; in speed_mpn_umul_ppmm()
2347 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[1]; l ^= s->yp_block[1]; in speed_mpn_umul_ppmm()
2348 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[2]; l ^= s->yp_block[2]; in speed_mpn_umul_ppmm()
2349 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[3]; l ^= s->yp_block[3]; in speed_mpn_umul_ppmm()
2350 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[4]; l ^= s->yp_block[4]; in speed_mpn_umul_ppmm()
2351 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[5]; l ^= s->yp_block[5]; in speed_mpn_umul_ppmm()
2352 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[6]; l ^= s->yp_block[6]; in speed_mpn_umul_ppmm()
2353 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[7]; l ^= s->yp_block[7]; in speed_mpn_umul_ppmm()
2354 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[8]; l ^= s->yp_block[8]; in speed_mpn_umul_ppmm()
2355 h = mpn_umul_ppmm (&l, h, l); h ^= s->xp_block[9]; l ^= s->yp_block[9]; in speed_mpn_umul_ppmm()
2376 speed_mpn_umul_ppmm_r (struct speed_params *s) in speed_mpn_umul_ppmm_r() argument
2380 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[0]; l ^= s->yp_block[0]; in speed_mpn_umul_ppmm_r()
2381 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[1]; l ^= s->yp_block[1]; in speed_mpn_umul_ppmm_r()
2382 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[2]; l ^= s->yp_block[2]; in speed_mpn_umul_ppmm_r()
2383 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[3]; l ^= s->yp_block[3]; in speed_mpn_umul_ppmm_r()
2384 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[4]; l ^= s->yp_block[4]; in speed_mpn_umul_ppmm_r()
2385 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[5]; l ^= s->yp_block[5]; in speed_mpn_umul_ppmm_r()
2386 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[6]; l ^= s->yp_block[6]; in speed_mpn_umul_ppmm_r()
2387 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[7]; l ^= s->yp_block[7]; in speed_mpn_umul_ppmm_r()
2388 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[8]; l ^= s->yp_block[8]; in speed_mpn_umul_ppmm_r()
2389 h = mpn_umul_ppmm_r (h, l, &l); h ^= s->xp_block[9]; l ^= s->yp_block[9]; in speed_mpn_umul_ppmm_r()
2410 issue rate. There's only 10 per loop so the code doesn't get too big,
2414 Note that it's only the division which is measured here, there's no data
2430 uniformly distributed numbers, but what's here might not be giving that. */
2439 s->time_divisor = 10; \
2442 d = s->r; \
2454 q = s->xp[0]; \
2455 r = s->yp[0] % d; \
2458 i = s->reps; \
2475 speed_udiv_qrnnd (struct speed_params *s) in speed_udiv_qrnnd() argument
2494 speed_udiv_qrnnd_c (struct speed_params *s) in speed_udiv_qrnnd_c() argument
2514 speed_mpn_udiv_qrnnd (struct speed_params *s) in speed_mpn_udiv_qrnnd() argument
2535 speed_mpn_udiv_qrnnd_r (struct speed_params *s) in speed_mpn_udiv_qrnnd_r() argument
2556 speed_invert_limb (struct speed_params *s) in speed_invert_limb() argument
2565 speed_operator_div (struct speed_params *s) in speed_operator_div() argument
2571 s->time_divisor = 10; in speed_operator_div()
2574 d = s->r; in speed_operator_div()
2578 x = s->xp[0]; in speed_operator_div()
2582 i = s->reps; in speed_operator_div()
2606 speed_operator_mod (struct speed_params *s) in speed_operator_mod() argument
2612 s->time_divisor = 10; in speed_operator_mod()
2615 d = s->r; in speed_operator_mod()
2619 x = s->xp[0]; in speed_operator_mod()
2623 i = s->reps; in speed_operator_mod()
2655 speed_routine_count_zeros_setup (struct speed_params *s, in speed_routine_count_zeros_setup() argument
2661 if (s->r == 0) in speed_routine_count_zeros_setup()
2665 MPN_COPY (xp, s->xp_block, SPEED_BLOCK_SIZE); in speed_routine_count_zeros_setup()
2671 else if (s->r == 1) in speed_routine_count_zeros_setup()
2678 mp_limb_t set = CNST_LIMB(1) << (s->yp_block[i] % GMP_LIMB_BITS); in speed_routine_count_zeros_setup()
2682 xp[i] = (s->xp_block[i] & keep) | set; in speed_routine_count_zeros_setup()
2707 speed_count_leading_zeros (struct speed_params *s) in speed_count_leading_zeros() argument
2720 speed_count_trailing_zeros (struct speed_params *s) in speed_count_trailing_zeros() argument
2729 speed_mpn_get_str (struct speed_params *s) in speed_mpn_get_str() argument
2735 speed_mpn_set_str (struct speed_params *s) in speed_mpn_set_str() argument
2737 SPEED_ROUTINE_MPN_SET_STR_CALL (mpn_set_str (wp, xp, s->size, base)); in speed_mpn_set_str()
2740 speed_mpn_bc_set_str (struct speed_params *s) in speed_mpn_bc_set_str() argument
2742 SPEED_ROUTINE_MPN_SET_STR_CALL (mpn_bc_set_str (wp, xp, s->size, base)); in speed_mpn_bc_set_str()
2746 speed_MPN_ZERO (struct speed_params *s) in speed_MPN_ZERO() argument
2748 SPEED_ROUTINE_MPN_ZERO_CALL (MPN_ZERO (wp, s->size)); in speed_MPN_ZERO()
2753 speed_randinit (struct speed_params *s, gmp_randstate_ptr rstate) in speed_randinit() argument
2755 if (s->r == 0) in speed_randinit()
2757 else if (s->r == 1) in speed_randinit()
2761 return gmp_randinit_lc_2exp_size (rstate, s->r); in speed_randinit()
2767 speed_gmp_randseed (struct speed_params *s) in speed_gmp_randseed() argument
2774 SPEED_RESTRICT_COND (s->size >= 1); in speed_gmp_randseed()
2775 SPEED_RESTRICT_COND (speed_randinit (s, rstate)); in speed_gmp_randseed()
2777 /* s->size bits of seed */ in speed_gmp_randseed()
2778 mpz_init_set_n (x, s->xp, s->size); in speed_gmp_randseed()
2779 mpz_fdiv_r_2exp (x, x, (unsigned long) s->size); in speed_gmp_randseed()
2785 i = s->reps; in speed_gmp_randseed()
2797 speed_gmp_randseed_ui (struct speed_params *s) in speed_gmp_randseed_ui() argument
2803 SPEED_RESTRICT_COND (speed_randinit (s, rstate)); in speed_gmp_randseed_ui()
2809 i = s->reps; in speed_gmp_randseed_ui()
2813 gmp_randseed_ui (rstate, (unsigned long) s->xp_block[j]); in speed_gmp_randseed_ui()
2826 speed_mpz_urandomb (struct speed_params *s) in speed_mpz_urandomb() argument
2833 SPEED_RESTRICT_COND (s->size >= 0); in speed_mpz_urandomb()
2834 SPEED_RESTRICT_COND (speed_randinit (s, rstate)); in speed_mpz_urandomb()
2839 mpz_urandomb (z, rstate, (unsigned long) s->size); in speed_mpz_urandomb()
2840 mpz_urandomb (z, rstate, (unsigned long) s->size); in speed_mpz_urandomb()
2843 i = s->reps; in speed_mpz_urandomb()
2845 mpz_urandomb (z, rstate, (unsigned long) s->size); in speed_mpz_urandomb()