summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@gmplib.org>2011-11-17 22:19:28 +0100
committerTorbjorn Granlund <tege@gmplib.org>2011-11-17 22:19:28 +0100
commit342bc281b1d2e59520f99be86120b177606f43f3 (patch)
treef9ead0e3b9ec12c79771e0eb457a49ea535499a2
parentca20b2f018c660e83322ff0bd1a3a3a2f9874bb1 (diff)
downloadgmp-342bc281b1d2e59520f99be86120b177606f43f3.tar.gz
Retune, adding several new THRESHOLDs.
-rw-r--r--mpn/alpha/ev5/gmp-mparam.h40
-rw-r--r--mpn/alpha/ev6/gmp-mparam.h76
-rw-r--r--mpn/ia64/gmp-mparam.h142
-rw-r--r--mpn/pa64/gmp-mparam.h62
-rw-r--r--mpn/powerpc64/mode64/p4/gmp-mparam.h31
-rw-r--r--mpn/powerpc64/mode64/p5/gmp-mparam.h39
-rw-r--r--mpn/powerpc64/mode64/p6/gmp-mparam.h37
-rw-r--r--mpn/powerpc64/mode64/p7/gmp-mparam.h32
-rw-r--r--mpn/s390_64/gmp-mparam.h16
-rw-r--r--mpn/sparc64/ultrasparc34/gmp-mparam.h29
-rw-r--r--mpn/sparc64/ultrasparct1/gmp-mparam.h36
-rw-r--r--mpn/x86/atom/gmp-mparam.h41
-rw-r--r--mpn/x86/k7/gmp-mparam.h45
-rw-r--r--mpn/x86/p6/sse2/gmp-mparam.h61
-rw-r--r--mpn/x86/pentium4/sse2/gmp-mparam.h85
-rw-r--r--mpn/x86_64/atom/gmp-mparam.h17
-rw-r--r--mpn/x86_64/bobcat/gmp-mparam.h10
-rw-r--r--mpn/x86_64/core2/gmp-mparam.h23
-rw-r--r--mpn/x86_64/coreinhm/gmp-mparam.h23
-rw-r--r--mpn/x86_64/coreisbr/gmp-mparam.h132
-rw-r--r--mpn/x86_64/gmp-mparam.h13
-rw-r--r--mpn/x86_64/nano/gmp-mparam.h33
-rw-r--r--mpn/x86_64/pentium4/gmp-mparam.h51
23 files changed, 659 insertions, 415 deletions
diff --git a/mpn/alpha/ev5/gmp-mparam.h b/mpn/alpha/ev5/gmp-mparam.h
index a4c794838..395353a46 100644
--- a/mpn/alpha/ev5/gmp-mparam.h
+++ b/mpn/alpha/ev5/gmp-mparam.h
@@ -26,38 +26,44 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define DIVREM_1_NORM_THRESHOLD 0 /* preinv always */
#define DIVREM_1_UNNORM_THRESHOLD 0 /* always */
+#define MOD_1_1P_METHOD 2
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
-#define MOD_1N_TO_MOD_1_1_THRESHOLD 29
+#define MOD_1N_TO_MOD_1_1_THRESHOLD 6
#define MOD_1U_TO_MOD_1_1_THRESHOLD 2
-#define MOD_1_1_TO_MOD_1_2_THRESHOLD 8 /* never mpn_mod_1_1p */
+#define MOD_1_1_TO_MOD_1_2_THRESHOLD 4
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 14
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 75
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 15
#define USE_PREINV_DIVREM_1 1 /* preinv always */
+#define DIV_QR_2_PI2_THRESHOLD 21
#define DIVEXACT_1_THRESHOLD 0 /* always */
-#define BMOD_1_TO_MOD_1_THRESHOLD 80
+#define BMOD_1_TO_MOD_1_THRESHOLD 78
-#define MUL_TOOM22_THRESHOLD 18
-#define MUL_TOOM33_THRESHOLD 61
-#define MUL_TOOM44_THRESHOLD 88
+#define MUL_TOOM22_THRESHOLD 14
+#define MUL_TOOM33_THRESHOLD 57
+#define MUL_TOOM44_THRESHOLD 118
#define MUL_TOOM6H_THRESHOLD 173
-#define MUL_TOOM8H_THRESHOLD 0
+#define MUL_TOOM8H_THRESHOLD 240
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 57
#define MUL_TOOM32_TO_TOOM53_THRESHOLD 91
-#define MUL_TOOM42_TO_TOOM53_THRESHOLD 89
-#define MUL_TOOM42_TO_TOOM63_THRESHOLD 60
+#define MUL_TOOM42_TO_TOOM53_THRESHOLD 81
+#define MUL_TOOM42_TO_TOOM63_THRESHOLD 56
#define SQR_BASECASE_THRESHOLD 4
#define SQR_TOOM2_THRESHOLD 28
-#define SQR_TOOM3_THRESHOLD 65
+#define SQR_TOOM3_THRESHOLD 77
#define SQR_TOOM4_THRESHOLD 136
-#define SQR_TOOM6_THRESHOLD 180
-#define SQR_TOOM8_THRESHOLD 248
+#define SQR_TOOM6_THRESHOLD 173
+#define SQR_TOOM8_THRESHOLD 260
+
+#define MULMID_TOOM42_THRESHOLD 20
#define MULMOD_BNM1_THRESHOLD 11
#define SQRMOD_BNM1_THRESHOLD 13
+#define POWM_SEC_TABLE 2,17,322,387
+
#define MUL_FFT_MODF_THRESHOLD 244 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 244, 5}, { 11, 6}, { 6, 5}, { 13, 6}, \
@@ -161,9 +167,11 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 942
#define MATRIX22_STRASSEN_THRESHOLD 13
-#define HGCD_THRESHOLD 101
-#define GCD_DC_THRESHOLD 330
-#define GCDEXT_DC_THRESHOLD 222
+#define HGCD_THRESHOLD 105
+#define HGCD_APPR_THRESHOLD 111
+#define HGCD_REDUCE_THRESHOLD 1437
+#define GCD_DC_THRESHOLD 318
+#define GCDEXT_DC_THRESHOLD 214
#define JACOBI_BASE_METHOD 2
#define GET_STR_DC_THRESHOLD 16
diff --git a/mpn/alpha/ev6/gmp-mparam.h b/mpn/alpha/ev6/gmp-mparam.h
index 12c3891d7..ce865f4cc 100644
--- a/mpn/alpha/ev6/gmp-mparam.h
+++ b/mpn/alpha/ev6/gmp-mparam.h
@@ -29,38 +29,44 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define DIVREM_1_NORM_THRESHOLD 0 /* preinv always */
#define DIVREM_1_UNNORM_THRESHOLD 0 /* always */
+#define MOD_1_1P_METHOD 2
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
-#define MOD_1N_TO_MOD_1_1_THRESHOLD 4
+#define MOD_1N_TO_MOD_1_1_THRESHOLD 3
#define MOD_1U_TO_MOD_1_1_THRESHOLD 2
-#define MOD_1_1_TO_MOD_1_2_THRESHOLD 6
-#define MOD_1_2_TO_MOD_1_4_THRESHOLD 30
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 10
+#define MOD_1_1_TO_MOD_1_2_THRESHOLD 4
+#define MOD_1_2_TO_MOD_1_4_THRESHOLD 16
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 8
#define USE_PREINV_DIVREM_1 1 /* preinv always */
+#define DIV_QR_2_PI2_THRESHOLD 8
#define DIVEXACT_1_THRESHOLD 0 /* always */
-#define BMOD_1_TO_MOD_1_THRESHOLD 16
+#define BMOD_1_TO_MOD_1_THRESHOLD 20
#define MUL_TOOM22_THRESHOLD 35
-#define MUL_TOOM33_THRESHOLD 74
-#define MUL_TOOM44_THRESHOLD 178
-#define MUL_TOOM6H_THRESHOLD 288
-#define MUL_TOOM8H_THRESHOLD 333
+#define MUL_TOOM33_THRESHOLD 77
+#define MUL_TOOM44_THRESHOLD 184
+#define MUL_TOOM6H_THRESHOLD 228
+#define MUL_TOOM8H_THRESHOLD 288
-#define MUL_TOOM32_TO_TOOM43_THRESHOLD 75
-#define MUL_TOOM32_TO_TOOM53_THRESHOLD 101
+#define MUL_TOOM32_TO_TOOM43_THRESHOLD 89
+#define MUL_TOOM32_TO_TOOM53_THRESHOLD 110
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 105
-#define MUL_TOOM42_TO_TOOM63_THRESHOLD 105
+#define MUL_TOOM42_TO_TOOM63_THRESHOLD 73
-#define SQR_BASECASE_THRESHOLD 5
-#define SQR_TOOM2_THRESHOLD 61
-#define SQR_TOOM3_THRESHOLD 107
-#define SQR_TOOM4_THRESHOLD 170
-#define SQR_TOOM6_THRESHOLD 309
-#define SQR_TOOM8_THRESHOLD 360
+#define SQR_BASECASE_THRESHOLD 0 /* always */
+#define SQR_TOOM2_THRESHOLD 58
+#define SQR_TOOM3_THRESHOLD 103
+#define SQR_TOOM4_THRESHOLD 172
+#define SQR_TOOM6_THRESHOLD 264
+#define SQR_TOOM8_THRESHOLD 333
+
+#define MULMID_TOOM42_THRESHOLD 52
#define MULMOD_BNM1_THRESHOLD 20
#define SQRMOD_BNM1_THRESHOLD 23
+#define POWM_SEC_TABLE 4,17,246,2388
+
#define MUL_FFT_MODF_THRESHOLD 480 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 480, 5}, { 18, 6}, { 10, 5}, { 21, 6}, \
@@ -148,19 +154,19 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_THRESHOLD 3136
#define MULLO_BASECASE_THRESHOLD 0 /* always */
-#define MULLO_DC_THRESHOLD 130
-#define MULLO_MUL_N_THRESHOLD 15604
+#define MULLO_DC_THRESHOLD 173
+#define MULLO_MUL_N_THRESHOLD 11355
-#define DC_DIV_QR_THRESHOLD 119
-#define DC_DIVAPPR_Q_THRESHOLD 390
+#define DC_DIV_QR_THRESHOLD 112
+#define DC_DIVAPPR_Q_THRESHOLD 422
#define DC_BDIV_QR_THRESHOLD 110
-#define DC_BDIV_Q_THRESHOLD 318
+#define DC_BDIV_Q_THRESHOLD 348
-#define INV_MULMOD_BNM1_THRESHOLD 75
-#define INV_NEWTON_THRESHOLD 390
-#define INV_APPR_THRESHOLD 372
+#define INV_MULMOD_BNM1_THRESHOLD 68
+#define INV_NEWTON_THRESHOLD 402
+#define INV_APPR_THRESHOLD 396
-#define BINV_NEWTON_THRESHOLD 393
+#define BINV_NEWTON_THRESHOLD 399
#define REDC_1_TO_REDC_N_THRESHOLD 110
#define MU_DIV_QR_THRESHOLD 1718
@@ -170,12 +176,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 1652
#define MATRIX22_STRASSEN_THRESHOLD 17
-#define HGCD_THRESHOLD 282
-#define GCD_DC_THRESHOLD 1138
-#define GCDEXT_DC_THRESHOLD 773
+#define HGCD_THRESHOLD 278
+#define HGCD_APPR_THRESHOLD 366
+#define HGCD_REDUCE_THRESHOLD 2681
+#define GCD_DC_THRESHOLD 1258
+#define GCDEXT_DC_THRESHOLD 777
#define JACOBI_BASE_METHOD 3
-#define GET_STR_DC_THRESHOLD 14
-#define GET_STR_PRECOMPUTE_THRESHOLD 19
-#define SET_STR_DC_THRESHOLD 3754
-#define SET_STR_PRECOMPUTE_THRESHOLD 8097
+#define GET_STR_DC_THRESHOLD 13
+#define GET_STR_PRECOMPUTE_THRESHOLD 25
+#define SET_STR_DC_THRESHOLD 3539
+#define SET_STR_PRECOMPUTE_THRESHOLD 7784
diff --git a/mpn/ia64/gmp-mparam.h b/mpn/ia64/gmp-mparam.h
index 0841c82aa..f080b876e 100644
--- a/mpn/ia64/gmp-mparam.h
+++ b/mpn/ia64/gmp-mparam.h
@@ -1,6 +1,6 @@
/* gmp-mparam.h -- Compiler/machine parameter header file.
-Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2009, 2010 Free Software
+Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2009, 2010, 2011 Free Software
Foundation, Inc.
This file is part of the GNU MP Library.
@@ -21,70 +21,92 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define GMP_LIMB_BITS 64
#define BYTES_PER_MP_LIMB 8
-/* 1300MHz Itanium2 (babe.fsffrance.org) */
-
+/* 900MHz Itanium2 (titanic.gmplib.org) */
+#define MOD_1_1P_METHOD 2
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
-#define MOD_1N_TO_MOD_1_1_THRESHOLD 4
+#define MOD_1N_TO_MOD_1_1_THRESHOLD 3
#define MOD_1U_TO_MOD_1_1_THRESHOLD 8
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 21
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 22
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 10
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD 12
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD MP_SIZE_T_MAX /* never */
#define MUL_TOOM22_THRESHOLD 40
-#define MUL_TOOM33_THRESHOLD 122
-#define MUL_TOOM44_THRESHOLD 212
+#define MUL_TOOM33_THRESHOLD 129
+#define MUL_TOOM44_THRESHOLD 214
#define MUL_TOOM6H_THRESHOLD 318
#define MUL_TOOM8H_THRESHOLD 430
-#define MUL_TOOM32_TO_TOOM43_THRESHOLD 93
-#define MUL_TOOM32_TO_TOOM53_THRESHOLD 146
-#define MUL_TOOM42_TO_TOOM53_THRESHOLD 129
+#define MUL_TOOM32_TO_TOOM43_THRESHOLD 97
+#define MUL_TOOM32_TO_TOOM53_THRESHOLD 145
+#define MUL_TOOM42_TO_TOOM53_THRESHOLD 126
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 151
#define SQR_BASECASE_THRESHOLD 11
#define SQR_TOOM2_THRESHOLD 84
-#define SQR_TOOM3_THRESHOLD 125
+#define SQR_TOOM3_THRESHOLD 135
#define SQR_TOOM4_THRESHOLD 494
-#define SQR_TOOM6_THRESHOLD 0 /* never toom4 */
-#define SQR_TOOM8_THRESHOLD 0 /* never toom6 */
+#define SQR_TOOM6_THRESHOLD 0 /* always */
+#define SQR_TOOM8_THRESHOLD 0 /* always */
#define MULMOD_BNM1_THRESHOLD 23
-#define SQRMOD_BNM1_THRESHOLD 25
+#define SQRMOD_BNM1_THRESHOLD 28
+
+#define POWM_SEC_TABLE 2,29,130,905
-#define MUL_FFT_MODF_THRESHOLD 444 /* k = 5 */
+#define MUL_FFT_MODF_THRESHOLD 476 /* k = 5 */
#define MUL_FFT_TABLE3 \
- { { 444, 5}, { 27, 6}, { 14, 5}, { 29, 6}, \
- { 35, 7}, { 18, 6}, { 37, 7}, { 19, 6}, \
+ { { 476, 5}, { 27, 6}, { 14, 5}, { 29, 6}, \
+ { 33, 7}, { 17, 6}, { 37, 7}, { 19, 6}, \
{ 39, 7}, { 21, 6}, { 43, 7}, { 33, 8}, \
{ 17, 7}, { 37, 8}, { 19, 7}, { 39, 8}, \
- { 21, 7}, { 43, 8}, { 29, 9}, { 15, 8}, \
- { 37, 9}, { 19, 8}, { 43, 9}, { 23, 8}, \
- { 49, 9}, { 27, 8}, { 57, 9}, { 31, 8}, \
- { 63, 9}, { 35, 8}, { 71, 9}, { 43,10}, \
+ { 21, 7}, { 43, 8}, { 37, 9}, { 19, 8}, \
+ { 43, 9}, { 23, 8}, { 51, 9}, { 27, 8}, \
+ { 57, 9}, { 31, 8}, { 63, 9}, { 43,10}, \
{ 23, 9}, { 59,10}, { 31, 9}, { 71,10}, \
- { 39, 9}, { 87,10}, { 47, 9}, { 99,10}, \
+ { 39, 9}, { 83,10}, { 47, 9}, { 99,10}, \
{ 55,11}, { 31,10}, { 87,11}, { 47,10}, \
{ 111,12}, { 31,11}, { 63,10}, { 143,11}, \
{ 79,10}, { 167,11}, { 95,10}, { 191,11}, \
{ 111,12}, { 63,11}, { 143,10}, { 287, 9}, \
{ 575,10}, { 303,11}, { 159,10}, { 319,12}, \
{ 95,11}, { 191,10}, { 399,11}, { 207,10}, \
- { 431,13}, { 8192,14}, { 16384,15}, { 32768,16}, \
- { 65536,17}, { 131072,18}, { 262144,19}, { 524288,20}, \
- {1048576,21}, {2097152,22}, {4194304,23}, {8388608,24} }
-#define MUL_FFT_TABLE3_SIZE 76
+ { 431,13}, { 63,12}, { 127,11}, { 271,10}, \
+ { 543,11}, { 287,10}, { 575,11}, { 303,12}, \
+ { 159,11}, { 335,10}, { 671,11}, { 367,12}, \
+ { 191,11}, { 399,10}, { 799,11}, { 431,12}, \
+ { 223,11}, { 447,13}, { 127,12}, { 255,11}, \
+ { 543,12}, { 287,11}, { 607,12}, { 319,11}, \
+ { 671,12}, { 351,11}, { 703,13}, { 191,12}, \
+ { 415,11}, { 863,12}, { 447,14}, { 127,13}, \
+ { 255,12}, { 607,13}, { 319,12}, { 735,13}, \
+ { 383,12}, { 799,11}, { 1599,12}, { 863,13}, \
+ { 447,12}, { 927,11}, { 1855,14}, { 255,13}, \
+ { 511,12}, { 1055,13}, { 575,12}, { 1215,13}, \
+ { 639,12}, { 1279,13}, { 703,14}, { 383,13}, \
+ { 767,12}, { 1535,13}, { 831,12}, { 1663,13}, \
+ { 895,12}, { 1791,15}, { 255,14}, { 511,13}, \
+ { 1087,12}, { 2175,13}, { 1215,14}, { 639,13}, \
+ { 1343,12}, { 2687,13}, { 1471,14}, { 767,13}, \
+ { 1599,12}, { 3199,13}, { 1663,14}, { 895,13}, \
+ { 1855,15}, { 511,14}, { 1023,13}, { 2175,14}, \
+ { 1151,13}, { 2431,14}, { 1279,13}, { 2687,14}, \
+ { 1407,15}, { 767,14}, { 1535,13}, { 3199,14}, \
+ { 1663,13}, { 3455,14}, { 1791,16}, { 65536,17}, \
+ { 131072,18}, { 262144,19}, { 524288,20}, {1048576,21}, \
+ {2097152,22}, {4194304,23}, {8388608,24} }
+#define MUL_FFT_TABLE3_SIZE 155
#define MUL_FFT_THRESHOLD 5760
-#define SQR_FFT_MODF_THRESHOLD 440 /* k = 5 */
+#define SQR_FFT_MODF_THRESHOLD 436 /* k = 5 */
#define SQR_FFT_TABLE3 \
- { { 440, 5}, { 14, 4}, { 29, 5}, { 29, 6}, \
- { 15, 5}, { 31, 6}, { 35, 7}, { 18, 6}, \
- { 37, 7}, { 33, 8}, { 17, 7}, { 37, 8}, \
+ { { 436, 5}, { 14, 4}, { 29, 5}, { 31, 6}, \
+ { 35, 7}, { 18, 6}, { 37, 7}, { 37, 8}, \
{ 19, 7}, { 40, 8}, { 37, 9}, { 19, 8}, \
{ 43, 9}, { 23, 8}, { 49, 9}, { 27, 8}, \
{ 57, 9}, { 43,10}, { 23, 9}, { 55,10}, \
@@ -93,45 +115,69 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
{ 87,11}, { 47,10}, { 111,12}, { 31,11}, \
{ 63,10}, { 135,11}, { 79,10}, { 167,11}, \
{ 95,10}, { 191,11}, { 111,12}, { 63,11}, \
- { 127,10}, { 255,11}, { 143,10}, { 303,11}, \
- { 159,10}, { 319,12}, { 95,11}, { 191,10}, \
- { 399,11}, { 207,10}, { 431,13}, { 8192,14}, \
- { 16384,15}, { 32768,16}, { 65536,17}, { 131072,18}, \
- { 262144,19}, { 524288,20}, {1048576,21}, {2097152,22}, \
- {4194304,23}, {8388608,24} }
-#define SQR_FFT_TABLE3_SIZE 66
+ { 127,10}, { 255,11}, { 143,10}, { 287, 9}, \
+ { 575,10}, { 303,11}, { 159,10}, { 319,12}, \
+ { 95,11}, { 191,10}, { 399,11}, { 207,10}, \
+ { 431,13}, { 63,12}, { 127,11}, { 271,10}, \
+ { 543,11}, { 303,12}, { 159,11}, { 335,10}, \
+ { 671,11}, { 367,10}, { 735,12}, { 191,11}, \
+ { 399,10}, { 799,11}, { 431,12}, { 223,11}, \
+ { 463,13}, { 127,12}, { 255,11}, { 543,12}, \
+ { 287,11}, { 607,12}, { 319,11}, { 671,12}, \
+ { 351,11}, { 735,13}, { 191,12}, { 383,11}, \
+ { 799,12}, { 415,11}, { 863,12}, { 447,11}, \
+ { 895,14}, { 127,13}, { 255,12}, { 543,11}, \
+ { 1087,12}, { 607,13}, { 319,12}, { 735,13}, \
+ { 383,12}, { 863,13}, { 447,12}, { 959,14}, \
+ { 255,13}, { 511,12}, { 1087,13}, { 575,12}, \
+ { 1183,13}, { 639,12}, { 1279,13}, { 703,12}, \
+ { 1407,14}, { 383,13}, { 767,12}, { 1535,13}, \
+ { 831,12}, { 1663,13}, { 895,12}, { 1791,13}, \
+ { 959,15}, { 255,14}, { 511,13}, { 1087,12}, \
+ { 2175,13}, { 1215,14}, { 639,13}, { 1343,12}, \
+ { 2687,13}, { 1471,14}, { 767,13}, { 1663,14}, \
+ { 895,13}, { 1919,15}, { 511,14}, { 1023,13}, \
+ { 2175,14}, { 1151,13}, { 2431,14}, { 1279,13}, \
+ { 2687,14}, { 1407,15}, { 767,14}, { 1535,13}, \
+ { 3199,14}, { 1663,13}, { 3455,14}, { 1791,13}, \
+ { 8192,14}, { 16384,15}, { 32768,16}, { 65536,17}, \
+ { 131072,18}, { 262144,19}, { 524288,20}, {1048576,21}, \
+ {2097152,22}, {4194304,23}, {8388608,24} }
+#define SQR_FFT_TABLE3_SIZE 151
#define SQR_FFT_THRESHOLD 4032
#define MULLO_BASECASE_THRESHOLD 29
#define MULLO_DC_THRESHOLD 57
#define MULLO_MUL_N_THRESHOLD 11278
-#define DC_DIV_QR_THRESHOLD 59
+#define DC_DIV_QR_THRESHOLD 64
#define DC_DIVAPPR_Q_THRESHOLD 222
#define DC_BDIV_QR_THRESHOLD 95
#define DC_BDIV_Q_THRESHOLD 264
-#define INV_MULMOD_BNM1_THRESHOLD 82
-#define INV_NEWTON_THRESHOLD 11
-#define INV_APPR_THRESHOLD 18
+#define INV_MULMOD_BNM1_THRESHOLD 86
+#define INV_NEWTON_THRESHOLD 139
+#define INV_APPR_THRESHOLD 147
#define BINV_NEWTON_THRESHOLD 252
-#define REDC_1_TO_REDC_2_THRESHOLD 0
+#define REDC_1_TO_REDC_2_THRESHOLD 0 /* always */
#define REDC_2_TO_REDC_N_THRESHOLD 147
#define MU_DIV_QR_THRESHOLD 1142
-#define MU_DIVAPPR_Q_THRESHOLD 998
+#define MU_DIVAPPR_Q_THRESHOLD 1142
#define MUPI_DIV_QR_THRESHOLD 0 /* always */
-#define MU_BDIV_QR_THRESHOLD 1187
+#define MU_BDIV_QR_THRESHOLD 1210
#define MU_BDIV_Q_THRESHOLD 1470
#define MATRIX22_STRASSEN_THRESHOLD 23
#define HGCD_THRESHOLD 117
-#define GCD_DC_THRESHOLD 469
+#define HGCD_APPR_THRESHOLD 50
+#define HGCD_REDUCE_THRESHOLD 3389
+#define GCD_DC_THRESHOLD 496
#define GCDEXT_DC_THRESHOLD 368
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 13
-#define GET_STR_PRECOMPUTE_THRESHOLD 21
-#define SET_STR_DC_THRESHOLD 1204
-#define SET_STR_PRECOMPUTE_THRESHOLD 3266
+#define GET_STR_PRECOMPUTE_THRESHOLD 22
+#define SET_STR_DC_THRESHOLD 1474
+#define SET_STR_PRECOMPUTE_THRESHOLD 3168
diff --git a/mpn/pa64/gmp-mparam.h b/mpn/pa64/gmp-mparam.h
index d0e86d856..081757aca 100644
--- a/mpn/pa64/gmp-mparam.h
+++ b/mpn/pa64/gmp-mparam.h
@@ -25,14 +25,16 @@ with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define DIVREM_1_NORM_THRESHOLD 0 /* always */
#define DIVREM_1_UNNORM_THRESHOLD 0 /* always */
+#define MOD_1_1P_METHOD 2
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
-#define MOD_1N_TO_MOD_1_1_THRESHOLD MP_SIZE_T_MAX /* never */
+#define MOD_1N_TO_MOD_1_1_THRESHOLD 4
#define MOD_1U_TO_MOD_1_1_THRESHOLD 10
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 14
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD MP_SIZE_T_MAX /* never */
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 11
#define USE_PREINV_DIVREM_1 1
+#define DIV_QR_2_PI2_THRESHOLD 21
#define DIVEXACT_1_THRESHOLD 0 /* always */
#define BMOD_1_TO_MOD_1_THRESHOLD MP_SIZE_T_MAX /* never */
@@ -47,16 +49,20 @@ with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 129
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 54
-#define SQR_BASECASE_THRESHOLD 0 /* always */
-#define SQR_TOOM2_THRESHOLD 56
-#define SQR_TOOM3_THRESHOLD 169
-#define SQR_TOOM4_THRESHOLD 280
-#define SQR_TOOM6_THRESHOLD 0
-#define SQR_TOOM8_THRESHOLD 309
+#define SQR_BASECASE_THRESHOLD 5
+#define SQR_TOOM2_THRESHOLD 58
+#define SQR_TOOM3_THRESHOLD 153
+#define SQR_TOOM4_THRESHOLD 278
+#define SQR_TOOM6_THRESHOLD 0 /* always */
+#define SQR_TOOM8_THRESHOLD 0 /* always */
-#define MULMOD_BNM1_THRESHOLD 16
+#define MULMID_TOOM42_THRESHOLD 56
+
+#define MULMOD_BNM1_THRESHOLD 15
#define SQRMOD_BNM1_THRESHOLD 19
+#define POWM_SEC_TABLE 2,23,228,1084
+
#define MUL_FFT_MODF_THRESHOLD 336 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 336, 5}, { 11, 4}, { 23, 5}, { 21, 6}, \
@@ -196,34 +202,36 @@ with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_THRESHOLD 1856
#define MULLO_BASECASE_THRESHOLD 0 /* always */
-#define MULLO_DC_THRESHOLD 133
-#define MULLO_MUL_N_THRESHOLD 4292
+#define MULLO_DC_THRESHOLD 113
+#define MULLO_MUL_N_THRESHOLD 4658
-#define DC_DIV_QR_THRESHOLD 140
-#define DC_DIVAPPR_Q_THRESHOLD 422
-#define DC_BDIV_QR_THRESHOLD 150
-#define DC_BDIV_Q_THRESHOLD 351
+#define DC_DIV_QR_THRESHOLD 123
+#define DC_DIVAPPR_Q_THRESHOLD 372
+#define DC_BDIV_QR_THRESHOLD 142
+#define DC_BDIV_Q_THRESHOLD 312
-#define INV_MULMOD_BNM1_THRESHOLD 60
-#define INV_NEWTON_THRESHOLD 348
-#define INV_APPR_THRESHOLD 324
+#define INV_MULMOD_BNM1_THRESHOLD 58
+#define INV_NEWTON_THRESHOLD 315
+#define INV_APPR_THRESHOLD 315
-#define BINV_NEWTON_THRESHOLD 363
+#define BINV_NEWTON_THRESHOLD 360
#define REDC_1_TO_REDC_N_THRESHOLD 101
-#define MU_DIV_QR_THRESHOLD 998
+#define MU_DIV_QR_THRESHOLD 979
#define MU_DIVAPPR_Q_THRESHOLD 1142
-#define MUPI_DIV_QR_THRESHOLD 110
+#define MUPI_DIV_QR_THRESHOLD 93
#define MU_BDIV_QR_THRESHOLD 889
-#define MU_BDIV_Q_THRESHOLD 1334
+#define MU_BDIV_Q_THRESHOLD 1187
#define MATRIX22_STRASSEN_THRESHOLD 9
-#define HGCD_THRESHOLD 242
-#define GCD_DC_THRESHOLD 752
-#define GCDEXT_DC_THRESHOLD 545
+#define HGCD_THRESHOLD 234
+#define HGCD_APPR_THRESHOLD 300
+#define HGCD_REDUCE_THRESHOLD 1553
+#define GCD_DC_THRESHOLD 684
+#define GCDEXT_DC_THRESHOLD 525
#define JACOBI_BASE_METHOD 2
#define GET_STR_DC_THRESHOLD 21
#define GET_STR_PRECOMPUTE_THRESHOLD 24
-#define SET_STR_DC_THRESHOLD 2008
-#define SET_STR_PRECOMPUTE_THRESHOLD 4066
+#define SET_STR_DC_THRESHOLD 1951
+#define SET_STR_PRECOMPUTE_THRESHOLD 4034
diff --git a/mpn/powerpc64/mode64/p4/gmp-mparam.h b/mpn/powerpc64/mode64/p4/gmp-mparam.h
index 9a0932654..317bc94d6 100644
--- a/mpn/powerpc64/mode64/p4/gmp-mparam.h
+++ b/mpn/powerpc64/mode64/p4/gmp-mparam.h
@@ -29,6 +29,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 20
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 16
#define USE_PREINV_DIVREM_1 0
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 37
@@ -43,16 +44,20 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 73
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 62
-#define SQR_BASECASE_THRESHOLD 5
-#define SQR_TOOM2_THRESHOLD 28
-#define SQR_TOOM3_THRESHOLD 57
-#define SQR_TOOM4_THRESHOLD 136
-#define SQR_TOOM6_THRESHOLD 181
-#define SQR_TOOM8_THRESHOLD 272
+#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
+#define SQR_TOOM2_THRESHOLD 24
+#define SQR_TOOM3_THRESHOLD 73
+#define SQR_TOOM4_THRESHOLD 214
+#define SQR_TOOM6_THRESHOLD 254
+#define SQR_TOOM8_THRESHOLD 430
-#define MULMOD_BNM1_THRESHOLD 13
+#define MULMID_TOOM42_THRESHOLD 32
+
+#define MULMOD_BNM1_THRESHOLD 12
#define SQRMOD_BNM1_THRESHOLD 16
+#define POWM_SEC_TABLE 6,47,347,1036,2826
+
#define MUL_FFT_MODF_THRESHOLD 372 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 372, 5}, { 13, 6}, { 7, 5}, { 15, 6}, \
@@ -116,9 +121,9 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_TABLE3_SIZE 103
#define SQR_FFT_THRESHOLD 2752
-#define MULLO_BASECASE_THRESHOLD 5
+#define MULLO_BASECASE_THRESHOLD 3
#define MULLO_DC_THRESHOLD 36
-#define MULLO_MUL_N_THRESHOLD 12691
+#define MULLO_MUL_N_THRESHOLD 13463
#define DC_DIV_QR_THRESHOLD 43
#define DC_DIVAPPR_Q_THRESHOLD 158
@@ -139,12 +144,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 998
#define MATRIX22_STRASSEN_THRESHOLD 11
-#define HGCD_THRESHOLD 105
+#define HGCD_THRESHOLD 103
+#define HGCD_APPR_THRESHOLD 110
+#define HGCD_REDUCE_THRESHOLD 1962
#define GCD_DC_THRESHOLD 318
#define GCDEXT_DC_THRESHOLD 242
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 12
#define GET_STR_PRECOMPUTE_THRESHOLD 23
-#define SET_STR_DC_THRESHOLD 858
-#define SET_STR_PRECOMPUTE_THRESHOLD 1864
+#define SET_STR_DC_THRESHOLD 650
+#define SET_STR_PRECOMPUTE_THRESHOLD 1781
diff --git a/mpn/powerpc64/mode64/p5/gmp-mparam.h b/mpn/powerpc64/mode64/p5/gmp-mparam.h
index d177da94e..9220f99d5 100644
--- a/mpn/powerpc64/mode64/p5/gmp-mparam.h
+++ b/mpn/powerpc64/mode64/p5/gmp-mparam.h
@@ -31,6 +31,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 11
#define USE_PREINV_DIVREM_1 0
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 40
@@ -38,22 +39,26 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MUL_TOOM33_THRESHOLD 50
#define MUL_TOOM44_THRESHOLD 121
#define MUL_TOOM6H_THRESHOLD 202
-#define MUL_TOOM8H_THRESHOLD 303
+#define MUL_TOOM8H_THRESHOLD 260
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 82
#define MUL_TOOM32_TO_TOOM53_THRESHOLD 91
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 81
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 88
-#define SQR_BASECASE_THRESHOLD 9
-#define SQR_TOOM2_THRESHOLD 36
-#define SQR_TOOM3_THRESHOLD 59
-#define SQR_TOOM4_THRESHOLD 147
-#define SQR_TOOM6_THRESHOLD 204
-#define SQR_TOOM8_THRESHOLD 288
+#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
+#define SQR_TOOM2_THRESHOLD 24
+#define SQR_TOOM3_THRESHOLD 73
+#define SQR_TOOM4_THRESHOLD 142
+#define SQR_TOOM6_THRESHOLD 191
+#define SQR_TOOM8_THRESHOLD 284
-#define MULMOD_BNM1_THRESHOLD 14
-#define SQRMOD_BNM1_THRESHOLD 16
+#define MULMID_TOOM42_THRESHOLD 32
+
+#define MULMOD_BNM1_THRESHOLD 12
+#define SQRMOD_BNM1_THRESHOLD 17
+
+#define POWM_SEC_TABLE 4,35,387,1068,2699
#define MUL_FFT_MODF_THRESHOLD 348 /* k = 5 */
#define MUL_FFT_TABLE3 \
@@ -166,15 +171,15 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_THRESHOLD 2752
#define MULLO_BASECASE_THRESHOLD 0
-#define MULLO_DC_THRESHOLD 31
+#define MULLO_DC_THRESHOLD 42
#define MULLO_MUL_N_THRESHOLD 6633
-#define DC_DIV_QR_THRESHOLD 37
+#define DC_DIV_QR_THRESHOLD 43
#define DC_DIVAPPR_Q_THRESHOLD 155
#define DC_BDIV_QR_THRESHOLD 46
-#define DC_BDIV_Q_THRESHOLD 112
+#define DC_BDIV_Q_THRESHOLD 120
-#define INV_MULMOD_BNM1_THRESHOLD 26
+#define INV_MULMOD_BNM1_THRESHOLD 52
#define INV_NEWTON_THRESHOLD 177
#define INV_APPR_THRESHOLD 165
@@ -189,11 +194,13 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MATRIX22_STRASSEN_THRESHOLD 15
#define HGCD_THRESHOLD 108
-#define GCD_DC_THRESHOLD 303
+#define HGCD_APPR_THRESHOLD 113
+#define HGCD_REDUCE_THRESHOLD 2121
+#define GCD_DC_THRESHOLD 315
#define GCDEXT_DC_THRESHOLD 237
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 13
#define GET_STR_PRECOMPUTE_THRESHOLD 23
-#define SET_STR_DC_THRESHOLD 532
-#define SET_STR_PRECOMPUTE_THRESHOLD 1639
+#define SET_STR_DC_THRESHOLD 650
+#define SET_STR_PRECOMPUTE_THRESHOLD 1585
diff --git a/mpn/powerpc64/mode64/p6/gmp-mparam.h b/mpn/powerpc64/mode64/p6/gmp-mparam.h
index 88cac3e72..5ec334089 100644
--- a/mpn/powerpc64/mode64/p6/gmp-mparam.h
+++ b/mpn/powerpc64/mode64/p6/gmp-mparam.h
@@ -31,6 +31,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 5
#define USE_PREINV_DIVREM_1 0
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 21
@@ -45,16 +46,20 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 73
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 66
-#define SQR_BASECASE_THRESHOLD 9
-#define SQR_TOOM2_THRESHOLD 30
-#define SQR_TOOM3_THRESHOLD 53
-#define SQR_TOOM4_THRESHOLD 148
-#define SQR_TOOM6_THRESHOLD 226
-#define SQR_TOOM8_THRESHOLD 430
+#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
+#define SQR_TOOM2_THRESHOLD 24
+#define SQR_TOOM3_THRESHOLD 49
+#define SQR_TOOM4_THRESHOLD 136
+#define SQR_TOOM6_THRESHOLD 274
+#define SQR_TOOM8_THRESHOLD 410
+
+#define MULMID_TOOM42_THRESHOLD 24
#define MULMOD_BNM1_THRESHOLD 14
#define SQRMOD_BNM1_THRESHOLD 14
+#define POWM_SEC_TABLE 4,19,228,713,919
+
#define MUL_FFT_MODF_THRESHOLD 340 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 340, 5}, { 19, 6}, { 10, 5}, { 21, 6}, \
@@ -107,14 +112,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULLO_BASECASE_THRESHOLD 5
#define MULLO_DC_THRESHOLD 28
-#define MULLO_MUL_N_THRESHOLD 6633
+#define MULLO_MUL_N_THRESHOLD 3084
-#define DC_DIV_QR_THRESHOLD 27
+#define DC_DIV_QR_THRESHOLD 23
#define DC_DIVAPPR_Q_THRESHOLD 112
#define DC_BDIV_QR_THRESHOLD 29
-#define DC_BDIV_Q_THRESHOLD 86
+#define DC_BDIV_Q_THRESHOLD 79
-#define INV_MULMOD_BNM1_THRESHOLD 47
+#define INV_MULMOD_BNM1_THRESHOLD 51
#define INV_NEWTON_THRESHOLD 93
#define INV_APPR_THRESHOLD 91
@@ -123,14 +128,16 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_DIV_QR_THRESHOLD 855
#define MU_DIVAPPR_Q_THRESHOLD 807
-#define MUPI_DIV_QR_THRESHOLD 33
+#define MUPI_DIV_QR_THRESHOLD 23
#define MU_BDIV_QR_THRESHOLD 807
#define MU_BDIV_Q_THRESHOLD 872
-#define MATRIX22_STRASSEN_THRESHOLD 11
-#define HGCD_THRESHOLD 64
-#define GCD_DC_THRESHOLD 237
-#define GCDEXT_DC_THRESHOLD 183
+#define MATRIX22_STRASSEN_THRESHOLD 13
+#define HGCD_THRESHOLD 69
+#define HGCD_APPR_THRESHOLD 50
+#define HGCD_REDUCE_THRESHOLD 2121
+#define GCD_DC_THRESHOLD 268
+#define GCDEXT_DC_THRESHOLD 209
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 17
diff --git a/mpn/powerpc64/mode64/p7/gmp-mparam.h b/mpn/powerpc64/mode64/p7/gmp-mparam.h
index 57b888637..02603c525 100644
--- a/mpn/powerpc64/mode64/p7/gmp-mparam.h
+++ b/mpn/powerpc64/mode64/p7/gmp-mparam.h
@@ -28,7 +28,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1N_TO_MOD_1_1_THRESHOLD 6
#define MOD_1U_TO_MOD_1_1_THRESHOLD 5
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 7
-#define MOD_1_2_TO_MOD_1_4_THRESHOLD 22
+#define MOD_1_2_TO_MOD_1_4_THRESHOLD 18
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 13
#define USE_PREINV_DIVREM_1 0
#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
@@ -46,18 +46,20 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 135
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 141
-#define SQR_BASECASE_THRESHOLD 10
-#define SQR_TOOM2_THRESHOLD 50
-#define SQR_TOOM3_THRESHOLD 84
-#define SQR_TOOM4_THRESHOLD 160
-#define SQR_TOOM6_THRESHOLD 246
-#define SQR_TOOM8_THRESHOLD 296
+#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
+#define SQR_TOOM2_THRESHOLD 36
+#define SQR_TOOM3_THRESHOLD 109
+#define SQR_TOOM4_THRESHOLD 202
+#define SQR_TOOM6_THRESHOLD 303
+#define SQR_TOOM8_THRESHOLD 399
#define MULMID_TOOM42_THRESHOLD 62
#define MULMOD_BNM1_THRESHOLD 15
#define SQRMOD_BNM1_THRESHOLD 16
+#define POWM_SEC_TABLE 6,65,342,1465
+
#define MUL_FFT_MODF_THRESHOLD 436 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 436, 5}, { 19, 6}, { 10, 5}, { 21, 6}, \
@@ -121,8 +123,8 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_TABLE3_SIZE 103
#define SQR_FFT_THRESHOLD 3264
-#define MULLO_BASECASE_THRESHOLD 4
-#define MULLO_DC_THRESHOLD 34
+#define MULLO_BASECASE_THRESHOLD 3
+#define MULLO_DC_THRESHOLD 23
#define MULLO_MUL_N_THRESHOLD 9174
#define DC_DIV_QR_THRESHOLD 30
@@ -144,12 +146,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 1499
#define MATRIX22_STRASSEN_THRESHOLD 15
-#define HGCD_THRESHOLD 121
-#define GCD_DC_THRESHOLD 443
-#define GCDEXT_DC_THRESHOLD 396
+#define HGCD_THRESHOLD 124
+#define HGCD_APPR_THRESHOLD 155
+#define HGCD_REDUCE_THRESHOLD 3134
+#define GCD_DC_THRESHOLD 492
+#define GCDEXT_DC_THRESHOLD 333
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 11
-#define GET_STR_PRECOMPUTE_THRESHOLD 22
+#define GET_STR_PRECOMPUTE_THRESHOLD 17
#define SET_STR_DC_THRESHOLD 1517
-#define SET_STR_PRECOMPUTE_THRESHOLD 4040
+#define SET_STR_PRECOMPUTE_THRESHOLD 3421
diff --git a/mpn/s390_64/gmp-mparam.h b/mpn/s390_64/gmp-mparam.h
index c4960254e..46ca86726 100644
--- a/mpn/s390_64/gmp-mparam.h
+++ b/mpn/s390_64/gmp-mparam.h
@@ -61,6 +61,8 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULMOD_BNM1_THRESHOLD 9
#define SQRMOD_BNM1_THRESHOLD 11
+#define POWM_SEC_TABLE 4,23,128,598
+
#define MUL_FFT_MODF_THRESHOLD 220 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 220, 5}, { 7, 4}, { 15, 5}, { 8, 4}, \
@@ -131,7 +133,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULLO_BASECASE_THRESHOLD 3
#define MULLO_DC_THRESHOLD 33
-#define MULLO_MUL_N_THRESHOLD 4392
+#define MULLO_MUL_N_THRESHOLD 5240
#define DC_DIV_QR_THRESHOLD 28
#define DC_DIVAPPR_Q_THRESHOLD 106
@@ -152,12 +154,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 680
#define MATRIX22_STRASSEN_THRESHOLD 11
-#define HGCD_THRESHOLD 71
-#define GCD_DC_THRESHOLD 177
-#define GCDEXT_DC_THRESHOLD 142
-#define JACOBI_BASE_METHOD 2
+#define HGCD_THRESHOLD 75
+#define HGCD_APPR_THRESHOLD 59
+#define HGCD_REDUCE_THRESHOLD 901
+#define GCD_DC_THRESHOLD 186
+#define GCDEXT_DC_THRESHOLD 150
+#define JACOBI_BASE_METHOD 3
#define GET_STR_DC_THRESHOLD 27
#define GET_STR_PRECOMPUTE_THRESHOLD 40
-#define SET_STR_DC_THRESHOLD 363
+#define SET_STR_DC_THRESHOLD 418
#define SET_STR_PRECOMPUTE_THRESHOLD 1111
diff --git a/mpn/sparc64/ultrasparc34/gmp-mparam.h b/mpn/sparc64/ultrasparc34/gmp-mparam.h
index faed8efa3..8fe8ddc54 100644
--- a/mpn/sparc64/ultrasparc34/gmp-mparam.h
+++ b/mpn/sparc64/ultrasparc34/gmp-mparam.h
@@ -28,12 +28,13 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_1P_METHOD 2
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
-#define MOD_1N_TO_MOD_1_1_THRESHOLD 7
-#define MOD_1U_TO_MOD_1_1_THRESHOLD 38
-#define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */
+#define MOD_1N_TO_MOD_1_1_THRESHOLD 9
+#define MOD_1U_TO_MOD_1_1_THRESHOLD 5
+#define MOD_1_1_TO_MOD_1_2_THRESHOLD 24
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 33
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 22
#define USE_PREINV_DIVREM_1 1
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always */
#define BMOD_1_TO_MOD_1_THRESHOLD MP_SIZE_T_MAX /* never */
@@ -55,8 +56,12 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_TOOM6_THRESHOLD 191
#define SQR_TOOM8_THRESHOLD 339
-#define MULMOD_BNM1_THRESHOLD 14
-#define SQRMOD_BNM1_THRESHOLD 13
+#define MULMID_TOOM42_THRESHOLD 42
+
+#define MULMOD_BNM1_THRESHOLD 16
+#define SQRMOD_BNM1_THRESHOLD 9
+
+#define POWM_SEC_TABLE 4,23,130,780,1812,1926
#define MUL_FFT_MODF_THRESHOLD 212 /* k = 5 */
#define MUL_FFT_TABLE3 \
@@ -157,7 +162,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_TABLE3_SIZE 182
#define SQR_FFT_THRESHOLD 1984
-#define MULLO_BASECASE_THRESHOLD 8
+#define MULLO_BASECASE_THRESHOLD 14
#define MULLO_DC_THRESHOLD 0 /* never mpn_mullo_basecase */
#define MULLO_MUL_N_THRESHOLD 3791
@@ -170,7 +175,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define INV_NEWTON_THRESHOLD 17
#define INV_APPR_THRESHOLD 17
-#define BINV_NEWTON_THRESHOLD 134
+#define BINV_NEWTON_THRESHOLD 92
#define REDC_1_TO_REDC_2_THRESHOLD 2
#define REDC_2_TO_REDC_N_THRESHOLD 117
@@ -181,12 +186,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 748
#define MATRIX22_STRASSEN_THRESHOLD 12
-#define HGCD_THRESHOLD 46
-#define GCD_DC_THRESHOLD 130
+#define HGCD_THRESHOLD 45
+#define HGCD_APPR_THRESHOLD 50
+#define HGCD_REDUCE_THRESHOLD 1094
+#define GCD_DC_THRESHOLD 126
#define GCDEXT_DC_THRESHOLD 134
#define JACOBI_BASE_METHOD 2
#define GET_STR_DC_THRESHOLD 18
#define GET_STR_PRECOMPUTE_THRESHOLD 27
-#define SET_STR_DC_THRESHOLD 315
+#define SET_STR_DC_THRESHOLD 286
#define SET_STR_PRECOMPUTE_THRESHOLD 1037
diff --git a/mpn/sparc64/ultrasparct1/gmp-mparam.h b/mpn/sparc64/ultrasparct1/gmp-mparam.h
index 744f7e17c..34c8027f5 100644
--- a/mpn/sparc64/ultrasparct1/gmp-mparam.h
+++ b/mpn/sparc64/ultrasparct1/gmp-mparam.h
@@ -25,14 +25,16 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define DIVREM_1_NORM_THRESHOLD 0 /* always */
#define DIVREM_1_UNNORM_THRESHOLD 0 /* always */
+#define MOD_1_1P_METHOD 2
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
-#define MOD_1N_TO_MOD_1_1_THRESHOLD MP_SIZE_T_MAX /* never */
+#define MOD_1N_TO_MOD_1_1_THRESHOLD 10
#define MOD_1U_TO_MOD_1_1_THRESHOLD MP_SIZE_T_MAX
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD MP_SIZE_T_MAX /* never */
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 35
#define USE_PREINV_DIVREM_1 1
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always */
#define BMOD_1_TO_MOD_1_THRESHOLD MP_SIZE_T_MAX /* never */
@@ -50,13 +52,17 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_BASECASE_THRESHOLD 0 /* always */
#define SQR_TOOM2_THRESHOLD 16
#define SQR_TOOM3_THRESHOLD 57
-#define SQR_TOOM4_THRESHOLD 133
-#define SQR_TOOM6_THRESHOLD 156
+#define SQR_TOOM4_THRESHOLD 135
+#define SQR_TOOM6_THRESHOLD 160
#define SQR_TOOM8_THRESHOLD 260
+#define MULMID_TOOM42_THRESHOLD 12
+
#define MULMOD_BNM1_THRESHOLD 7
#define SQRMOD_BNM1_THRESHOLD 7
+#define POWM_SEC_TABLE 2,23,176,625,2783
+
#define MUL_FFT_MODF_THRESHOLD 176 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 176, 5}, { 7, 6}, { 4, 5}, { 9, 6}, \
@@ -102,30 +108,32 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULLO_MUL_N_THRESHOLD 3176
#define DC_DIV_QR_THRESHOLD 27
-#define DC_DIVAPPR_Q_THRESHOLD 107
+#define DC_DIVAPPR_Q_THRESHOLD 108
#define DC_BDIV_QR_THRESHOLD 27
#define DC_BDIV_Q_THRESHOLD 62
-#define INV_MULMOD_BNM1_THRESHOLD 22
+#define INV_MULMOD_BNM1_THRESHOLD 14
#define INV_NEWTON_THRESHOLD 163
#define INV_APPR_THRESHOLD 117
#define BINV_NEWTON_THRESHOLD 166
#define REDC_1_TO_REDC_N_THRESHOLD 32
-#define MU_DIV_QR_THRESHOLD 720
-#define MU_DIVAPPR_Q_THRESHOLD 734
-#define MUPI_DIV_QR_THRESHOLD 67
+#define MU_DIV_QR_THRESHOLD 734
+#define MU_DIVAPPR_Q_THRESHOLD 748
+#define MUPI_DIV_QR_THRESHOLD 68
#define MU_BDIV_QR_THRESHOLD 562
#define MU_BDIV_Q_THRESHOLD 734
-#define MATRIX22_STRASSEN_THRESHOLD 11
-#define HGCD_THRESHOLD 53
+#define MATRIX22_STRASSEN_THRESHOLD 9
+#define HGCD_THRESHOLD 66
+#define HGCD_APPR_THRESHOLD 47
+#define HGCD_REDUCE_THRESHOLD 834
#define GCD_DC_THRESHOLD 183
-#define GCDEXT_DC_THRESHOLD 144
+#define GCDEXT_DC_THRESHOLD 142
#define JACOBI_BASE_METHOD 3
#define GET_STR_DC_THRESHOLD 20
-#define GET_STR_PRECOMPUTE_THRESHOLD 39
+#define GET_STR_PRECOMPUTE_THRESHOLD 36
#define SET_STR_DC_THRESHOLD 458
-#define SET_STR_PRECOMPUTE_THRESHOLD 964
+#define SET_STR_PRECOMPUTE_THRESHOLD 963
diff --git a/mpn/x86/atom/gmp-mparam.h b/mpn/x86/atom/gmp-mparam.h
index 8c2595230..391a0ac4a 100644
--- a/mpn/x86/atom/gmp-mparam.h
+++ b/mpn/x86/atom/gmp-mparam.h
@@ -24,26 +24,27 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
/* Generated by tuneup.c */
#define MOD_1_NORM_THRESHOLD 3
-#define MOD_1_UNNORM_THRESHOLD 6
-#define MOD_1N_TO_MOD_1_1_THRESHOLD 9
-#define MOD_1U_TO_MOD_1_1_THRESHOLD 4
+#define MOD_1_UNNORM_THRESHOLD 5
+#define MOD_1N_TO_MOD_1_1_THRESHOLD 10
+#define MOD_1U_TO_MOD_1_1_THRESHOLD 5
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 10
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 13
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 33
#define MUL_TOOM22_THRESHOLD 20
#define MUL_TOOM33_THRESHOLD 78
-#define MUL_TOOM44_THRESHOLD 184
+#define MUL_TOOM44_THRESHOLD 168
#define MUL_TOOM6H_THRESHOLD 270
#define MUL_TOOM8H_THRESHOLD 406
-#define MUL_TOOM32_TO_TOOM43_THRESHOLD 79
-#define MUL_TOOM32_TO_TOOM53_THRESHOLD 126
-#define MUL_TOOM42_TO_TOOM53_THRESHOLD 121
-#define MUL_TOOM42_TO_TOOM63_THRESHOLD 127
+#define MUL_TOOM32_TO_TOOM43_THRESHOLD 81
+#define MUL_TOOM32_TO_TOOM53_THRESHOLD 107
+#define MUL_TOOM42_TO_TOOM53_THRESHOLD 73
+#define MUL_TOOM42_TO_TOOM63_THRESHOLD 96
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_TOOM2_THRESHOLD 34
@@ -52,8 +53,12 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_TOOM6_THRESHOLD 303
#define SQR_TOOM8_THRESHOLD 547
-#define MULMOD_BNM1_THRESHOLD 14
-#define SQRMOD_BNM1_THRESHOLD 18
+#define MULMID_TOOM42_THRESHOLD 54
+
+#define MULMOD_BNM1_THRESHOLD 16
+#define SQRMOD_BNM1_THRESHOLD 17
+
+#define POWM_SEC_TABLE 2,35,262,1168
#define MUL_FFT_MODF_THRESHOLD 376 /* k = 5 */
#define MUL_FFT_TABLE3 \
@@ -108,9 +113,9 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_TABLE3_SIZE 82
#define SQR_FFT_THRESHOLD 2752
-#define MULLO_BASECASE_THRESHOLD 4
+#define MULLO_BASECASE_THRESHOLD 5
#define MULLO_DC_THRESHOLD 51
-#define MULLO_MUL_N_THRESHOLD 8907
+#define MULLO_MUL_N_THRESHOLD 6633
#define DC_DIV_QR_THRESHOLD 63
#define DC_DIVAPPR_Q_THRESHOLD 252
@@ -131,12 +136,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 1334
#define MATRIX22_STRASSEN_THRESHOLD 15
-#define HGCD_THRESHOLD 126
-#define GCD_DC_THRESHOLD 483
-#define GCDEXT_DC_THRESHOLD 351
+#define HGCD_THRESHOLD 129
+#define HGCD_APPR_THRESHOLD 163
+#define HGCD_REDUCE_THRESHOLD 2121
+#define GCD_DC_THRESHOLD 469
+#define GCDEXT_DC_THRESHOLD 348
#define JACOBI_BASE_METHOD 3
#define GET_STR_DC_THRESHOLD 13
#define GET_STR_PRECOMPUTE_THRESHOLD 24
-#define SET_STR_DC_THRESHOLD 272
-#define SET_STR_PRECOMPUTE_THRESHOLD 1116
+#define SET_STR_DC_THRESHOLD 262
+#define SET_STR_PRECOMPUTE_THRESHOLD 902
diff --git a/mpn/x86/k7/gmp-mparam.h b/mpn/x86/k7/gmp-mparam.h
index 84238c4e0..9cc6798af 100644
--- a/mpn/x86/k7/gmp-mparam.h
+++ b/mpn/x86/k7/gmp-mparam.h
@@ -30,6 +30,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 11
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 26
@@ -40,19 +41,23 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MUL_TOOM8H_THRESHOLD 454
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 85
-#define MUL_TOOM32_TO_TOOM53_THRESHOLD 122
-#define MUL_TOOM42_TO_TOOM53_THRESHOLD 93
+#define MUL_TOOM32_TO_TOOM53_THRESHOLD 95
+#define MUL_TOOM42_TO_TOOM53_THRESHOLD 97
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 101
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_TOOM2_THRESHOLD 50
-#define SQR_TOOM3_THRESHOLD 87
+#define SQR_TOOM3_THRESHOLD 81
#define SQR_TOOM4_THRESHOLD 148
-#define SQR_TOOM6_THRESHOLD 306
+#define SQR_TOOM6_THRESHOLD 274
#define SQR_TOOM8_THRESHOLD 430
+#define MULMID_TOOM42_THRESHOLD 88
+
#define MULMOD_BNM1_THRESHOLD 18
-#define SQRMOD_BNM1_THRESHOLD 19
+#define SQRMOD_BNM1_THRESHOLD 18
+
+#define POWM_SEC_TABLE 2,17,225,961,1604
#define MUL_FFT_MODF_THRESHOLD 888 /* k = 6 */
#define MUL_FFT_TABLE3 \
@@ -155,28 +160,30 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULLO_DC_THRESHOLD 42
#define MULLO_MUL_N_THRESHOLD 13463
-#define DC_DIV_QR_THRESHOLD 89
-#define DC_DIVAPPR_Q_THRESHOLD 315
+#define DC_DIV_QR_THRESHOLD 60
+#define DC_DIVAPPR_Q_THRESHOLD 336
#define DC_BDIV_QR_THRESHOLD 91
-#define DC_BDIV_Q_THRESHOLD 274
+#define DC_BDIV_Q_THRESHOLD 268
#define INV_MULMOD_BNM1_THRESHOLD 66
-#define INV_NEWTON_THRESHOLD 300
-#define INV_APPR_THRESHOLD 303
+#define INV_NEWTON_THRESHOLD 284
+#define INV_APPR_THRESHOLD 284
-#define BINV_NEWTON_THRESHOLD 303
-#define REDC_1_TO_REDC_N_THRESHOLD 95
+#define BINV_NEWTON_THRESHOLD 270
+#define REDC_1_TO_REDC_N_THRESHOLD 87
-#define MU_DIV_QR_THRESHOLD 1858
-#define MU_DIVAPPR_Q_THRESHOLD 1718
-#define MUPI_DIV_QR_THRESHOLD 132
-#define MU_BDIV_QR_THRESHOLD 1387
+#define MU_DIV_QR_THRESHOLD 1752
+#define MU_DIVAPPR_Q_THRESHOLD 1652
+#define MUPI_DIV_QR_THRESHOLD 97
+#define MU_BDIV_QR_THRESHOLD 1470
#define MU_BDIV_Q_THRESHOLD 1470
#define MATRIX22_STRASSEN_THRESHOLD 15
-#define HGCD_THRESHOLD 154
-#define GCD_DC_THRESHOLD 599
-#define GCDEXT_DC_THRESHOLD 443
+#define HGCD_THRESHOLD 173
+#define HGCD_APPR_THRESHOLD 226
+#define HGCD_REDUCE_THRESHOLD 4633
+#define GCD_DC_THRESHOLD 580
+#define GCDEXT_DC_THRESHOLD 414
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 17
diff --git a/mpn/x86/p6/sse2/gmp-mparam.h b/mpn/x86/p6/sse2/gmp-mparam.h
index 2735b9c63..b163c58cc 100644
--- a/mpn/x86/p6/sse2/gmp-mparam.h
+++ b/mpn/x86/p6/sse2/gmp-mparam.h
@@ -31,37 +31,42 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
/* 1867 MHz P6 model 13 */
#define MOD_1_NORM_THRESHOLD 4
-#define MOD_1_UNNORM_THRESHOLD 3
+#define MOD_1_UNNORM_THRESHOLD 4
#define MOD_1N_TO_MOD_1_1_THRESHOLD 5
#define MOD_1U_TO_MOD_1_1_THRESHOLD 4
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 11
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 10
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 8
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
-#define BMOD_1_TO_MOD_1_THRESHOLD 22
+#define BMOD_1_TO_MOD_1_THRESHOLD 21
#define MUL_TOOM22_THRESHOLD 20
-#define MUL_TOOM33_THRESHOLD 77
-#define MUL_TOOM44_THRESHOLD 182
+#define MUL_TOOM33_THRESHOLD 74
+#define MUL_TOOM44_THRESHOLD 181
#define MUL_TOOM6H_THRESHOLD 252
-#define MUL_TOOM8H_THRESHOLD 381
+#define MUL_TOOM8H_THRESHOLD 363
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 73
#define MUL_TOOM32_TO_TOOM53_THRESHOLD 114
-#define MUL_TOOM42_TO_TOOM53_THRESHOLD 89
-#define MUL_TOOM42_TO_TOOM63_THRESHOLD 79
+#define MUL_TOOM42_TO_TOOM53_THRESHOLD 115
+#define MUL_TOOM42_TO_TOOM63_THRESHOLD 80
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_TOOM2_THRESHOLD 30
#define SQR_TOOM3_THRESHOLD 101
#define SQR_TOOM4_THRESHOLD 154
#define SQR_TOOM6_THRESHOLD 222
-#define SQR_TOOM8_THRESHOLD 547
+#define SQR_TOOM8_THRESHOLD 527
+
+#define MULMID_TOOM42_THRESHOLD 58
#define MULMOD_BNM1_THRESHOLD 13
#define SQRMOD_BNM1_THRESHOLD 17
+#define POWM_SEC_TABLE 4,23,258,768,2388
+
#define MUL_FFT_MODF_THRESHOLD 565 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 565, 5}, { 25, 6}, { 13, 5}, { 27, 6}, \
@@ -143,34 +148,36 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_THRESHOLD 5760
#define MULLO_BASECASE_THRESHOLD 0 /* always */
-#define MULLO_DC_THRESHOLD 34
+#define MULLO_DC_THRESHOLD 33
#define MULLO_MUL_N_THRESHOLD 13463
-#define DC_DIV_QR_THRESHOLD 22
+#define DC_DIV_QR_THRESHOLD 20
#define DC_DIVAPPR_Q_THRESHOLD 56
#define DC_BDIV_QR_THRESHOLD 60
-#define DC_BDIV_Q_THRESHOLD 132
+#define DC_BDIV_Q_THRESHOLD 134
#define INV_MULMOD_BNM1_THRESHOLD 38
-#define INV_NEWTON_THRESHOLD 71
+#define INV_NEWTON_THRESHOLD 66
#define INV_APPR_THRESHOLD 63
-#define BINV_NEWTON_THRESHOLD 252
-#define REDC_1_TO_REDC_N_THRESHOLD 62
+#define BINV_NEWTON_THRESHOLD 250
+#define REDC_1_TO_REDC_N_THRESHOLD 63
-#define MU_DIV_QR_THRESHOLD 1142
-#define MU_DIVAPPR_Q_THRESHOLD 889
-#define MUPI_DIV_QR_THRESHOLD 39
-#define MU_BDIV_QR_THRESHOLD 1308
-#define MU_BDIV_Q_THRESHOLD 1442
+#define MU_DIV_QR_THRESHOLD 1164
+#define MU_DIVAPPR_Q_THRESHOLD 979
+#define MUPI_DIV_QR_THRESHOLD 38
+#define MU_BDIV_QR_THRESHOLD 1442
+#define MU_BDIV_Q_THRESHOLD 1470
#define MATRIX22_STRASSEN_THRESHOLD 17
-#define HGCD_THRESHOLD 61
-#define GCD_DC_THRESHOLD 379
-#define GCDEXT_DC_THRESHOLD 298
-#define JACOBI_BASE_METHOD 4
+#define HGCD_THRESHOLD 64
+#define HGCD_APPR_THRESHOLD 105
+#define HGCD_REDUCE_THRESHOLD 3524
+#define GCD_DC_THRESHOLD 386
+#define GCDEXT_DC_THRESHOLD 309
+#define JACOBI_BASE_METHOD 1
#define GET_STR_DC_THRESHOLD 13
-#define GET_STR_PRECOMPUTE_THRESHOLD 20
-#define SET_STR_DC_THRESHOLD 582
-#define SET_STR_PRECOMPUTE_THRESHOLD 1055
+#define GET_STR_PRECOMPUTE_THRESHOLD 26
+#define SET_STR_DC_THRESHOLD 587
+#define SET_STR_PRECOMPUTE_THRESHOLD 1104
diff --git a/mpn/x86/pentium4/sse2/gmp-mparam.h b/mpn/x86/pentium4/sse2/gmp-mparam.h
index b1e56b5e2..8a198ad96 100644
--- a/mpn/x86/pentium4/sse2/gmp-mparam.h
+++ b/mpn/x86/pentium4/sse2/gmp-mparam.h
@@ -22,37 +22,42 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define BYTES_PER_MP_LIMB 4
-#define MOD_1_NORM_THRESHOLD 9
-#define MOD_1_UNNORM_THRESHOLD 20
+#define MOD_1_NORM_THRESHOLD MP_SIZE_T_MAX /* never */
+#define MOD_1_UNNORM_THRESHOLD MP_SIZE_T_MAX /* never */
#define MOD_1N_TO_MOD_1_1_THRESHOLD 6
#define MOD_1U_TO_MOD_1_1_THRESHOLD 5
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 13
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 6
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 20
#define MUL_TOOM22_THRESHOLD 31
-#define MUL_TOOM33_THRESHOLD 120
-#define MUL_TOOM44_THRESHOLD 286
+#define MUL_TOOM33_THRESHOLD 114
+#define MUL_TOOM44_THRESHOLD 300
#define MUL_TOOM6H_THRESHOLD 426
-#define MUL_TOOM8H_THRESHOLD 592
+#define MUL_TOOM8H_THRESHOLD 620
-#define MUL_TOOM32_TO_TOOM43_THRESHOLD 195
-#define MUL_TOOM32_TO_TOOM53_THRESHOLD 216
-#define MUL_TOOM42_TO_TOOM53_THRESHOLD 193
-#define MUL_TOOM42_TO_TOOM63_THRESHOLD 187
+#define MUL_TOOM32_TO_TOOM43_THRESHOLD 184
+#define MUL_TOOM32_TO_TOOM53_THRESHOLD 207
+#define MUL_TOOM42_TO_TOOM53_THRESHOLD 181
+#define MUL_TOOM42_TO_TOOM63_THRESHOLD 209
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
-#define SQR_TOOM2_THRESHOLD 48
-#define SQR_TOOM3_THRESHOLD 174
-#define SQR_TOOM4_THRESHOLD 390
-#define SQR_TOOM6_THRESHOLD 0
-#define SQR_TOOM8_THRESHOLD 507
+#define SQR_TOOM2_THRESHOLD 49
+#define SQR_TOOM3_THRESHOLD 173
+#define SQR_TOOM4_THRESHOLD 264
+#define SQR_TOOM6_THRESHOLD 354
+#define SQR_TOOM8_THRESHOLD 810
-#define MULMOD_BNM1_THRESHOLD 17
-#define SQRMOD_BNM1_THRESHOLD 21
+#define MULMID_TOOM42_THRESHOLD 68
+
+#define MULMOD_BNM1_THRESHOLD 19
+#define SQRMOD_BNM1_THRESHOLD 23
+
+#define POWM_SEC_TABLE 2,33,246,1052,2178
#define MUL_FFT_MODF_THRESHOLD 904 /* k = 6 */
#define MUL_FFT_TABLE3 \
@@ -102,35 +107,37 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_TABLE3_SIZE 72
#define SQR_FFT_THRESHOLD 6784
-#define MULLO_BASECASE_THRESHOLD 12
-#define MULLO_DC_THRESHOLD 49
-#define MULLO_MUL_N_THRESHOLD 13866
+#define MULLO_BASECASE_THRESHOLD 13
+#define MULLO_DC_THRESHOLD 52
+#define MULLO_MUL_N_THRESHOLD 13463
-#define DC_DIV_QR_THRESHOLD 37
-#define DC_DIVAPPR_Q_THRESHOLD 81
-#define DC_BDIV_QR_THRESHOLD 51
-#define DC_BDIV_Q_THRESHOLD 80
+#define DC_DIV_QR_THRESHOLD 39
+#define DC_DIVAPPR_Q_THRESHOLD 77
+#define DC_BDIV_QR_THRESHOLD 54
+#define DC_BDIV_Q_THRESHOLD 94
#define INV_MULMOD_BNM1_THRESHOLD 60
-#define INV_NEWTON_THRESHOLD 244
-#define INV_APPR_THRESHOLD 98
+#define INV_NEWTON_THRESHOLD 182
+#define INV_APPR_THRESHOLD 93
-#define BINV_NEWTON_THRESHOLD 276
-#define REDC_1_TO_REDC_N_THRESHOLD 63
+#define BINV_NEWTON_THRESHOLD 296
+#define REDC_1_TO_REDC_N_THRESHOLD 66
#define MU_DIV_QR_THRESHOLD 2350
-#define MU_DIVAPPR_Q_THRESHOLD 2172
-#define MUPI_DIV_QR_THRESHOLD 48
-#define MU_BDIV_QR_THRESHOLD 1858
-#define MU_BDIV_Q_THRESHOLD 2172
-
-#define MATRIX22_STRASSEN_THRESHOLD 29
-#define HGCD_THRESHOLD 81
-#define GCD_DC_THRESHOLD 309
+#define MU_DIVAPPR_Q_THRESHOLD 2130
+#define MUPI_DIV_QR_THRESHOLD 71
+#define MU_BDIV_QR_THRESHOLD 2130
+#define MU_BDIV_Q_THRESHOLD 2130
+
+#define MATRIX22_STRASSEN_THRESHOLD 24
+#define HGCD_THRESHOLD 77
+#define HGCD_APPR_THRESHOLD 91
+#define HGCD_REDUCE_THRESHOLD 5010
+#define GCD_DC_THRESHOLD 327
#define GCDEXT_DC_THRESHOLD 253
#define JACOBI_BASE_METHOD 4
-#define GET_STR_DC_THRESHOLD 10
-#define GET_STR_PRECOMPUTE_THRESHOLD 25
-#define SET_STR_DC_THRESHOLD 118
-#define SET_STR_PRECOMPUTE_THRESHOLD 1099
+#define GET_STR_DC_THRESHOLD 13
+#define GET_STR_PRECOMPUTE_THRESHOLD 26
+#define SET_STR_DC_THRESHOLD 144
+#define SET_STR_PRECOMPUTE_THRESHOLD 979
diff --git a/mpn/x86_64/atom/gmp-mparam.h b/mpn/x86_64/atom/gmp-mparam.h
index 37ddcebc2..380f36f25 100644
--- a/mpn/x86_64/atom/gmp-mparam.h
+++ b/mpn/x86_64/atom/gmp-mparam.h
@@ -31,14 +31,15 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
-#define MOD_1N_TO_MOD_1_1_THRESHOLD 4
+#define MOD_1N_TO_MOD_1_1_THRESHOLD 5
#define MOD_1U_TO_MOD_1_1_THRESHOLD 3
#define MOD_1_1_TO_MOD_1_2_THRESHOLD MP_SIZE_T_MAX
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 10
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 11
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
-#define BMOD_1_TO_MOD_1_THRESHOLD 17
+#define BMOD_1_TO_MOD_1_THRESHOLD 16
#define MUL_TOOM22_THRESHOLD 10
#define MUL_TOOM33_THRESHOLD 65
@@ -58,9 +59,13 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_TOOM6_THRESHOLD 222
#define SQR_TOOM8_THRESHOLD 333
+#define MULMID_TOOM42_THRESHOLD 14
+
#define MULMOD_BNM1_THRESHOLD 7
#define SQRMOD_BNM1_THRESHOLD 12
+#define POWM_SEC_TABLE 2,31,213,724,2112
+
#define MUL_FFT_MODF_THRESHOLD 220 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 220, 5}, { 7, 4}, { 15, 5}, { 13, 6}, \
@@ -145,9 +150,11 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 748
#define MATRIX22_STRASSEN_THRESHOLD 13
-#define HGCD_THRESHOLD 82
+#define HGCD_THRESHOLD 79
+#define HGCD_APPR_THRESHOLD 83
+#define HGCD_REDUCE_THRESHOLD 1137
#define GCD_DC_THRESHOLD 186
-#define GCDEXT_DC_THRESHOLD 186
+#define GCDEXT_DC_THRESHOLD 189
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 15
diff --git a/mpn/x86_64/bobcat/gmp-mparam.h b/mpn/x86_64/bobcat/gmp-mparam.h
index f1edb1d36..5acb78a62 100644
--- a/mpn/x86_64/bobcat/gmp-mparam.h
+++ b/mpn/x86_64/bobcat/gmp-mparam.h
@@ -58,6 +58,8 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULMOD_BNM1_THRESHOLD 11
#define SQRMOD_BNM1_THRESHOLD 15
+#define POWM_SEC_TABLE 2,23,322,840
+
#define MUL_FFT_MODF_THRESHOLD 376 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 376, 5}, { 17, 6}, { 9, 5}, { 19, 6}, \
@@ -145,9 +147,11 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 1308
#define MATRIX22_STRASSEN_THRESHOLD 14
-#define HGCD_THRESHOLD 103
-#define GCD_DC_THRESHOLD 469
-#define GCDEXT_DC_THRESHOLD 290
+#define HGCD_THRESHOLD 105
+#define HGCD_APPR_THRESHOLD 113
+#define HGCD_REDUCE_THRESHOLD 2479
+#define GCD_DC_THRESHOLD 330
+#define GCDEXT_DC_THRESHOLD 306
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 17
diff --git a/mpn/x86_64/core2/gmp-mparam.h b/mpn/x86_64/core2/gmp-mparam.h
index 43adaa078..0752688fd 100644
--- a/mpn/x86_64/core2/gmp-mparam.h
+++ b/mpn/x86_64/core2/gmp-mparam.h
@@ -31,14 +31,15 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 16
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 7
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 26
#define MUL_TOOM22_THRESHOLD 23
#define MUL_TOOM33_THRESHOLD 65
-#define MUL_TOOM44_THRESHOLD 178
-#define MUL_TOOM6H_THRESHOLD 222
-#define MUL_TOOM8H_THRESHOLD 0
+#define MUL_TOOM44_THRESHOLD 169
+#define MUL_TOOM6H_THRESHOLD 254
+#define MUL_TOOM8H_THRESHOLD 357
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 69
#define MUL_TOOM32_TO_TOOM53_THRESHOLD 107
@@ -48,15 +49,17 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_TOOM2_THRESHOLD 26
#define SQR_TOOM3_THRESHOLD 85
-#define SQR_TOOM4_THRESHOLD 160
-#define SQR_TOOM6_THRESHOLD 218
-#define SQR_TOOM8_THRESHOLD 296
+#define SQR_TOOM4_THRESHOLD 226
+#define SQR_TOOM6_THRESHOLD 0 /* always */
+#define SQR_TOOM8_THRESHOLD 454
#define MULMID_TOOM42_THRESHOLD 24
#define MULMOD_BNM1_THRESHOLD 15
#define SQRMOD_BNM1_THRESHOLD 15
+#define POWM_SEC_TABLE 2,41,322,840,1100,1556
+
#define MUL_FFT_MODF_THRESHOLD 380 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 380, 5}, { 15, 6}, { 8, 5}, { 17, 6}, \
@@ -156,8 +159,8 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_THRESHOLD 2752
#define MULLO_BASECASE_THRESHOLD 3
-#define MULLO_DC_THRESHOLD 20
-#define MULLO_MUL_N_THRESHOLD 10950
+#define MULLO_DC_THRESHOLD 18
+#define MULLO_MUL_N_THRESHOLD 9174
#define DC_DIV_QR_THRESHOLD 47
#define DC_DIVAPPR_Q_THRESHOLD 179
@@ -180,11 +183,13 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MATRIX22_STRASSEN_THRESHOLD 18
#define HGCD_THRESHOLD 135
+#define HGCD_APPR_THRESHOLD 169
+#define HGCD_REDUCE_THRESHOLD 2121
#define GCD_DC_THRESHOLD 330
#define GCDEXT_DC_THRESHOLD 361
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 13
#define GET_STR_PRECOMPUTE_THRESHOLD 23
-#define SET_STR_DC_THRESHOLD 746
+#define SET_STR_DC_THRESHOLD 552
#define SET_STR_PRECOMPUTE_THRESHOLD 1893
diff --git a/mpn/x86_64/coreinhm/gmp-mparam.h b/mpn/x86_64/coreinhm/gmp-mparam.h
index eec17787d..90cfa2be4 100644
--- a/mpn/x86_64/coreinhm/gmp-mparam.h
+++ b/mpn/x86_64/coreinhm/gmp-mparam.h
@@ -31,6 +31,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 15
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 7
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 17
@@ -55,6 +56,8 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULMOD_BNM1_THRESHOLD 13
#define SQRMOD_BNM1_THRESHOLD 13
+#define POWM_SEC_TABLE 2,65,322,1084
+
#define MUL_FFT_MODF_THRESHOLD 380 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 380, 5}, { 17, 6}, { 9, 5}, { 19, 6}, \
@@ -112,8 +115,8 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define DC_BDIV_QR_THRESHOLD 32
#define DC_BDIV_Q_THRESHOLD 70
-#define INV_MULMOD_BNM1_THRESHOLD 46
-#define INV_NEWTON_THRESHOLD 195
+#define INV_MULMOD_BNM1_THRESHOLD 34
+#define INV_NEWTON_THRESHOLD 177
#define INV_APPR_THRESHOLD 147
#define BINV_NEWTON_THRESHOLD 252
@@ -126,13 +129,15 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_QR_THRESHOLD 1120
#define MU_BDIV_Q_THRESHOLD 1187
-#define MATRIX22_STRASSEN_THRESHOLD 17
-#define HGCD_THRESHOLD 117
-#define GCD_DC_THRESHOLD 330
-#define GCDEXT_DC_THRESHOLD 382
+#define MATRIX22_STRASSEN_THRESHOLD 15
+#define HGCD_THRESHOLD 126
+#define HGCD_APPR_THRESHOLD 171
+#define HGCD_REDUCE_THRESHOLD 2205
+#define GCD_DC_THRESHOLD 345
+#define GCDEXT_DC_THRESHOLD 386
#define JACOBI_BASE_METHOD 4
-#define GET_STR_DC_THRESHOLD 12
+#define GET_STR_DC_THRESHOLD 15
#define GET_STR_PRECOMPUTE_THRESHOLD 20
-#define SET_STR_DC_THRESHOLD 552
-#define SET_STR_PRECOMPUTE_THRESHOLD 1655
+#define SET_STR_DC_THRESHOLD 232
+#define SET_STR_PRECOMPUTE_THRESHOLD 1585
diff --git a/mpn/x86_64/coreisbr/gmp-mparam.h b/mpn/x86_64/coreisbr/gmp-mparam.h
index e4727116b..dab35f174 100644
--- a/mpn/x86_64/coreisbr/gmp-mparam.h
+++ b/mpn/x86_64/coreisbr/gmp-mparam.h
@@ -29,8 +29,9 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1U_TO_MOD_1_1_THRESHOLD 3
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 9
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 20
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 10
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 6
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 30
@@ -52,58 +53,119 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_TOOM6_THRESHOLD 0
#define SQR_TOOM8_THRESHOLD 458
-#define MULMOD_BNM1_THRESHOLD 11
-#define SQRMOD_BNM1_THRESHOLD 16
+#define MULMOD_BNM1_THRESHOLD 13
+#define SQRMOD_BNM1_THRESHOLD 14
-#define MUL_FFT_MODF_THRESHOLD 376 /* k = 5 */
+#define MUL_FFT_MODF_THRESHOLD 380 /* k = 5 */
#define MUL_FFT_TABLE3 \
- { { 376, 5}, { 17, 6}, { 9, 5}, { 19, 6}, \
- { 10, 5}, { 21, 6}, { 11, 5}, { 23, 6}, \
- { 21, 7}, { 11, 6}, { 23, 7}, { 13, 6}, \
- { 27, 7}, { 21, 8}, { 11, 7}, { 25, 8}, \
+ { { 380, 5}, { 17, 6}, { 9, 5}, { 19, 6}, \
+ { 11, 5}, { 23, 6}, { 21, 7}, { 11, 6}, \
+ { 23, 7}, { 21, 8}, { 11, 7}, { 24, 8}, \
{ 13, 7}, { 27, 8}, { 15, 7}, { 31, 8}, \
{ 17, 7}, { 35, 8}, { 19, 7}, { 39, 8}, \
{ 21, 9}, { 11, 8}, { 27, 9}, { 15, 8}, \
{ 35, 9}, { 19, 8}, { 41, 9}, { 23, 8}, \
{ 49, 9}, { 27,10}, { 15, 9}, { 39,10}, \
{ 23, 9}, { 51,11}, { 15,10}, { 31, 9}, \
- { 67,10}, { 39, 9}, { 79,10}, { 47, 9}, \
+ { 67,10}, { 39, 9}, { 83,10}, { 47, 9}, \
{ 95,10}, { 55,11}, { 31,10}, { 79,11}, \
{ 47,10}, { 95,12}, { 31,11}, { 63,10}, \
- { 135,11}, { 79,10}, { 167,11}, { 95,10}, \
- { 191, 9}, { 383,12}, { 63,11}, { 127,10}, \
- { 255, 9}, { 511,10}, { 271,11}, { 143,10}, \
- { 287, 9}, { 575,11}, { 159,10}, { 319,12}, \
- { 95,11}, { 191,10}, { 383,11}, { 207,13}, \
- { 8192,14}, { 16384,15}, { 32768,16}, { 65536,17}, \
+ { 135,11}, { 79,10}, { 159, 9}, { 319,10}, \
+ { 167,11}, { 95,10}, { 191, 9}, { 383,12}, \
+ { 63,11}, { 127,10}, { 255, 9}, { 511,10}, \
+ { 271,11}, { 143,10}, { 287, 9}, { 575,10}, \
+ { 303,11}, { 159,10}, { 319,12}, { 95,11}, \
+ { 191,10}, { 383,11}, { 207,10}, { 415,13}, \
+ { 63,12}, { 127,11}, { 255,10}, { 511,11}, \
+ { 271,10}, { 543,11}, { 287,10}, { 575,11}, \
+ { 303,10}, { 607,12}, { 159,11}, { 319,10}, \
+ { 639,11}, { 351,10}, { 703, 9}, { 1407,11}, \
+ { 367,12}, { 191,11}, { 383,10}, { 767,11}, \
+ { 415,10}, { 831,12}, { 223,11}, { 447,10}, \
+ { 895,13}, { 127,12}, { 255,11}, { 543,10}, \
+ { 1087,12}, { 287,11}, { 575,10}, { 1151,11}, \
+ { 607,12}, { 319,11}, { 639,12}, { 351,11}, \
+ { 703,10}, { 1407,11}, { 735,13}, { 191,12}, \
+ { 383,11}, { 767,12}, { 415,11}, { 831,10}, \
+ { 1663,12}, { 447,11}, { 895,14}, { 127,13}, \
+ { 255,12}, { 511,11}, { 1023,12}, { 543,11}, \
+ { 1087,12}, { 575,11}, { 1151,12}, { 607,11}, \
+ { 1215,13}, { 319,12}, { 639,11}, { 1279,12}, \
+ { 703,11}, { 1407,13}, { 383,12}, { 767,11}, \
+ { 1535,12}, { 831,11}, { 1663,13}, { 447,12}, \
+ { 959,11}, { 1919,14}, { 255,13}, { 511,12}, \
+ { 1087,13}, { 575,12}, { 1215,11}, { 2431,13}, \
+ { 639,12}, { 1279,13}, { 703,12}, { 1407,14}, \
+ { 383,13}, { 831,12}, { 1663,13}, { 959,12}, \
+ { 1919,14}, { 511,13}, { 1087,12}, { 2175,13}, \
+ { 1215,12}, { 2431,14}, { 639,13}, { 1343,12}, \
+ { 2687,13}, { 1407,12}, { 2815,13}, { 1471,14}, \
+ { 767,13}, { 1663,14}, { 895,13}, { 1919,15}, \
+ { 511,14}, { 1023,13}, { 2175,14}, { 1151,13}, \
+ { 2431,12}, { 4863,14}, { 1279,13}, { 2687,14}, \
+ { 1407,13}, { 2815,15}, { 767,14}, { 1663,13}, \
+ { 3455,14}, { 1919,13}, { 3839,16}, { 511,15}, \
+ { 1023,14}, { 2431,13}, { 4863,15}, { 1279,14}, \
+ { 2943,13}, { 5887,15}, { 32768,16}, { 65536,17}, \
{ 131072,18}, { 262144,19}, { 524288,20}, {1048576,21}, \
{2097152,22}, {4194304,23}, {8388608,24} }
-#define MUL_FFT_TABLE3_SIZE 83
-#define MUL_FFT_THRESHOLD 3712
+#define MUL_FFT_TABLE3_SIZE 203
+#define MUL_FFT_THRESHOLD 4736
-#define SQR_FFT_MODF_THRESHOLD 316 /* k = 5 */
+#define SQR_FFT_MODF_THRESHOLD 304 /* k = 5 */
#define SQR_FFT_TABLE3 \
- { { 316, 5}, { 17, 6}, { 9, 5}, { 19, 6}, \
+ { { 304, 5}, { 17, 6}, { 9, 5}, { 19, 6}, \
{ 21, 7}, { 11, 6}, { 23, 7}, { 21, 8}, \
- { 11, 7}, { 25, 8}, { 13, 7}, { 27, 8}, \
+ { 11, 7}, { 24, 8}, { 13, 7}, { 27, 8}, \
{ 15, 7}, { 31, 8}, { 21, 9}, { 11, 8}, \
- { 27, 9}, { 15, 8}, { 35, 9}, { 19, 8}, \
+ { 27, 9}, { 15, 8}, { 33, 9}, { 19, 8}, \
{ 41, 9}, { 23, 8}, { 47, 9}, { 27,10}, \
- { 15, 9}, { 39,10}, { 23, 9}, { 51,11}, \
- { 15,10}, { 31, 9}, { 67,10}, { 39, 9}, \
+ { 15, 9}, { 39,10}, { 23, 9}, { 47,11}, \
+ { 15,10}, { 31, 9}, { 63,10}, { 39, 9}, \
{ 79,10}, { 47,11}, { 31,10}, { 79,11}, \
- { 47,10}, { 95,12}, { 31,11}, { 63,10}, \
- { 127, 9}, { 255,11}, { 79,10}, { 159, 9}, \
- { 319,11}, { 95,10}, { 191, 9}, { 383,12}, \
- { 63,11}, { 127,10}, { 255, 9}, { 511,10}, \
- { 271, 9}, { 543,11}, { 143,10}, { 287, 9}, \
- { 575,10}, { 303,11}, { 159,10}, { 319, 9}, \
- { 639,12}, { 95,11}, { 191,10}, { 383,11}, \
- { 207,13}, { 8192,14}, { 16384,15}, { 32768,16}, \
- { 65536,17}, { 131072,18}, { 262144,19}, { 524288,20}, \
- {1048576,21}, {2097152,22}, {4194304,23}, {8388608,24} }
-#define SQR_FFT_TABLE3_SIZE 76
-#define SQR_FFT_THRESHOLD 3264
+ { 47,12}, { 31,11}, { 63,10}, { 127, 9}, \
+ { 255, 8}, { 511,10}, { 135,11}, { 79,10}, \
+ { 159, 9}, { 319,11}, { 95,10}, { 191, 9}, \
+ { 383,12}, { 63,11}, { 127,10}, { 255, 9}, \
+ { 511,10}, { 271, 9}, { 543,11}, { 143,10}, \
+ { 287, 9}, { 575,11}, { 159,10}, { 319, 9}, \
+ { 639,12}, { 95,11}, { 191,10}, { 383, 9}, \
+ { 767,11}, { 207,13}, { 63,12}, { 127,11}, \
+ { 255,10}, { 511,11}, { 271,10}, { 543,11}, \
+ { 287,10}, { 575,11}, { 303,12}, { 159,11}, \
+ { 319,10}, { 639,11}, { 351,10}, { 703,12}, \
+ { 191,11}, { 383,10}, { 767,11}, { 415,10}, \
+ { 831,12}, { 223,11}, { 447,10}, { 895,11}, \
+ { 479,10}, { 959,13}, { 127,12}, { 255,11}, \
+ { 511,10}, { 1023,11}, { 543,12}, { 287,11}, \
+ { 575,10}, { 1151,11}, { 607,12}, { 319,11}, \
+ { 639,10}, { 1279,12}, { 351,11}, { 703,13}, \
+ { 191,12}, { 383,11}, { 767,12}, { 415,11}, \
+ { 831,12}, { 447,11}, { 895,12}, { 479,11}, \
+ { 959,10}, { 1919,14}, { 127,13}, { 255,12}, \
+ { 511,11}, { 1023,12}, { 543,11}, { 1087,12}, \
+ { 575,11}, { 1151,12}, { 607,13}, { 319,12}, \
+ { 639,11}, { 1279,12}, { 703,11}, { 1407,13}, \
+ { 383,12}, { 767,11}, { 1535,12}, { 831,13}, \
+ { 447,12}, { 959,11}, { 1919,14}, { 255,13}, \
+ { 511,12}, { 1087,13}, { 575,12}, { 1215,11}, \
+ { 2431,13}, { 639,12}, { 1279,13}, { 703,12}, \
+ { 1407,14}, { 383,13}, { 767,12}, { 1535,13}, \
+ { 831,12}, { 1663,13}, { 959,12}, { 1919,15}, \
+ { 255,14}, { 511,13}, { 1087,12}, { 2175,13}, \
+ { 1215,12}, { 2431,14}, { 639,13}, { 1343,12}, \
+ { 2687,13}, { 1407,12}, { 2815,13}, { 1471,14}, \
+ { 767,13}, { 1663,14}, { 895,13}, { 1919,15}, \
+ { 511,14}, { 1023,13}, { 2175,14}, { 1151,13}, \
+ { 2431,12}, { 4863,14}, { 1279,13}, { 2687,14}, \
+ { 1407,13}, { 2815,15}, { 767,14}, { 1663,13}, \
+ { 3455,14}, { 1919,16}, { 511,15}, { 1023,14}, \
+ { 2431,13}, { 4863,15}, { 1279,14}, { 2943,13}, \
+ { 5887,15}, { 32768,16}, { 65536,17}, { 131072,18}, \
+ { 262144,19}, { 524288,20}, {1048576,21}, {2097152,22}, \
+ {4194304,23}, {8388608,24} }
+#define SQR_FFT_TABLE3_SIZE 198
+#define SQR_FFT_THRESHOLD 2752
#define MULLO_BASECASE_THRESHOLD 5
#define MULLO_DC_THRESHOLD 33
diff --git a/mpn/x86_64/gmp-mparam.h b/mpn/x86_64/gmp-mparam.h
index 99499da2b..b16ff5a6b 100644
--- a/mpn/x86_64/gmp-mparam.h
+++ b/mpn/x86_64/gmp-mparam.h
@@ -30,6 +30,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 28
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 7
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 15
@@ -56,6 +57,8 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULMOD_BNM1_THRESHOLD 17
#define SQRMOD_BNM1_THRESHOLD 17
+#define POWM_SEC_TABLE 2,67,322,991
+
#define MUL_FFT_MODF_THRESHOLD 570 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 570, 5}, { 21, 6}, { 11, 5}, { 23, 6}, \
@@ -187,10 +190,12 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_QR_THRESHOLD 1589
#define MU_BDIV_Q_THRESHOLD 1718
-#define MATRIX22_STRASSEN_THRESHOLD 17
-#define HGCD_THRESHOLD 139
-#define GCD_DC_THRESHOLD 606
-#define GCDEXT_DC_THRESHOLD 474
+#define MATRIX22_STRASSEN_THRESHOLD 16
+#define HGCD_THRESHOLD 125
+#define HGCD_APPR_THRESHOLD 50
+#define HGCD_REDUCE_THRESHOLD 3524
+#define GCD_DC_THRESHOLD 555
+#define GCDEXT_DC_THRESHOLD 478
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 12
diff --git a/mpn/x86_64/nano/gmp-mparam.h b/mpn/x86_64/nano/gmp-mparam.h
index a1c556937..7ee41927b 100644
--- a/mpn/x86_64/nano/gmp-mparam.h
+++ b/mpn/x86_64/nano/gmp-mparam.h
@@ -34,6 +34,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 8
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 22
@@ -50,13 +51,17 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_TOOM2_THRESHOLD 34
-#define SQR_TOOM3_THRESHOLD 74
-#define SQR_TOOM4_THRESHOLD 620
-#define SQR_TOOM6_THRESHOLD 960
-#define SQR_TOOM8_THRESHOLD 1065
+#define SQR_TOOM3_THRESHOLD 97
+#define SQR_TOOM4_THRESHOLD 592
+#define SQR_TOOM6_THRESHOLD 978
+#define SQR_TOOM8_THRESHOLD 1193
-#define MULMOD_BNM1_THRESHOLD 15
-#define SQRMOD_BNM1_THRESHOLD 17
+#define MULMID_TOOM42_THRESHOLD 28
+
+#define MULMOD_BNM1_THRESHOLD 16
+#define SQRMOD_BNM1_THRESHOLD 20
+
+#define POWM_SEC_TABLE 2,29,387,1421
#define MUL_FFT_MODF_THRESHOLD 376 /* k = 5 */
#define MUL_FFT_TABLE3 \
@@ -176,7 +181,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define SQR_FFT_TABLE3_SIZE 215
#define SQR_FFT_THRESHOLD 3264
-#define MULLO_BASECASE_THRESHOLD 17
+#define MULLO_BASECASE_THRESHOLD 8
#define MULLO_DC_THRESHOLD 0 /* never mpn_mullo_basecase */
#define MULLO_MUL_N_THRESHOLD 6633
@@ -190,7 +195,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define INV_APPR_THRESHOLD 153
#define BINV_NEWTON_THRESHOLD 182
-#define REDC_1_TO_REDC_2_THRESHOLD 14
+#define REDC_1_TO_REDC_2_THRESHOLD 20
#define REDC_2_TO_REDC_N_THRESHOLD 75
#define MU_DIV_QR_THRESHOLD 1589
@@ -200,12 +205,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 1528
#define MATRIX22_STRASSEN_THRESHOLD 17
-#define HGCD_THRESHOLD 84
-#define GCD_DC_THRESHOLD 465
-#define GCDEXT_DC_THRESHOLD 456
+#define HGCD_THRESHOLD 102
+#define HGCD_APPR_THRESHOLD 113
+#define HGCD_REDUCE_THRESHOLD 3389
+#define GCD_DC_THRESHOLD 706
+#define GCDEXT_DC_THRESHOLD 465
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 12
#define GET_STR_PRECOMPUTE_THRESHOLD 24
-#define SET_STR_DC_THRESHOLD 537
-#define SET_STR_PRECOMPUTE_THRESHOLD 1639
+#define SET_STR_DC_THRESHOLD 381
+#define SET_STR_PRECOMPUTE_THRESHOLD 1794
diff --git a/mpn/x86_64/pentium4/gmp-mparam.h b/mpn/x86_64/pentium4/gmp-mparam.h
index 8983304c2..4d49fc2cf 100644
--- a/mpn/x86_64/pentium4/gmp-mparam.h
+++ b/mpn/x86_64/pentium4/gmp-mparam.h
@@ -33,34 +33,39 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MOD_1_NORM_THRESHOLD 0 /* always */
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
#define MOD_1N_TO_MOD_1_1_THRESHOLD 4
-#define MOD_1U_TO_MOD_1_1_THRESHOLD 3
-#define MOD_1_1_TO_MOD_1_2_THRESHOLD 14
-#define MOD_1_2_TO_MOD_1_4_THRESHOLD 32
-#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 7
+#define MOD_1U_TO_MOD_1_1_THRESHOLD 2
+#define MOD_1_1_TO_MOD_1_2_THRESHOLD 15
+#define MOD_1_2_TO_MOD_1_4_THRESHOLD 38
+#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 8
#define USE_PREINV_DIVREM_1 1 /* native */
+#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIVEXACT_1_THRESHOLD 0 /* always (native) */
#define BMOD_1_TO_MOD_1_THRESHOLD 20
#define MUL_TOOM22_THRESHOLD 12
-#define MUL_TOOM33_THRESHOLD 66
+#define MUL_TOOM33_THRESHOLD 74
#define MUL_TOOM44_THRESHOLD 118
#define MUL_TOOM6H_THRESHOLD 157
-#define MUL_TOOM8H_THRESHOLD 242
+#define MUL_TOOM8H_THRESHOLD 430
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 81
-#define MUL_TOOM32_TO_TOOM53_THRESHOLD 91
-#define MUL_TOOM42_TO_TOOM53_THRESHOLD 81
+#define MUL_TOOM32_TO_TOOM53_THRESHOLD 138
+#define MUL_TOOM42_TO_TOOM53_THRESHOLD 145
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 80
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_TOOM2_THRESHOLD 20
-#define SQR_TOOM3_THRESHOLD 77
-#define SQR_TOOM4_THRESHOLD 214
+#define SQR_TOOM3_THRESHOLD 69
+#define SQR_TOOM4_THRESHOLD 202
#define SQR_TOOM6_THRESHOLD 254
-#define SQR_TOOM8_THRESHOLD 454
+#define SQR_TOOM8_THRESHOLD 418
+
+#define MULMID_TOOM42_THRESHOLD 19
#define MULMOD_BNM1_THRESHOLD 10
-#define SQRMOD_BNM1_THRESHOLD 11
+#define SQRMOD_BNM1_THRESHOLD 9
+
+#define POWM_SEC_TABLE 3,130,140,724,2316
#define MUL_FFT_MODF_THRESHOLD 236 /* k = 5 */
#define MUL_FFT_TABLE3 \
@@ -121,11 +126,11 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MULLO_BASECASE_THRESHOLD 0 /* always */
#define MULLO_DC_THRESHOLD 32
-#define MULLO_MUL_N_THRESHOLD 5397
+#define MULLO_MUL_N_THRESHOLD 6253
-#define DC_DIV_QR_THRESHOLD 28
-#define DC_DIVAPPR_Q_THRESHOLD 67
-#define DC_BDIV_QR_THRESHOLD 27
+#define DC_DIV_QR_THRESHOLD 32
+#define DC_DIVAPPR_Q_THRESHOLD 60
+#define DC_BDIV_QR_THRESHOLD 26
#define DC_BDIV_Q_THRESHOLD 49
#define INV_MULMOD_BNM1_THRESHOLD 22
@@ -133,8 +138,8 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define INV_APPR_THRESHOLD 101
#define BINV_NEWTON_THRESHOLD 199
-#define REDC_1_TO_REDC_2_THRESHOLD 13
-#define REDC_2_TO_REDC_N_THRESHOLD 44
+#define REDC_1_TO_REDC_2_THRESHOLD 23
+#define REDC_2_TO_REDC_N_THRESHOLD 42
#define MU_DIV_QR_THRESHOLD 979
#define MU_DIVAPPR_Q_THRESHOLD 979
@@ -143,12 +148,14 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#define MU_BDIV_Q_THRESHOLD 979
#define MATRIX22_STRASSEN_THRESHOLD 17
-#define HGCD_THRESHOLD 101
-#define GCD_DC_THRESHOLD 222
-#define GCDEXT_DC_THRESHOLD 222
+#define HGCD_THRESHOLD 99
+#define HGCD_APPR_THRESHOLD 117
+#define HGCD_REDUCE_THRESHOLD 1679
+#define GCD_DC_THRESHOLD 198
+#define GCDEXT_DC_THRESHOLD 233
#define JACOBI_BASE_METHOD 4
#define GET_STR_DC_THRESHOLD 12
#define GET_STR_PRECOMPUTE_THRESHOLD 26
-#define SET_STR_DC_THRESHOLD 248
+#define SET_STR_DC_THRESHOLD 422
#define SET_STR_PRECOMPUTE_THRESHOLD 1438