re-run native-gmp for gmp 6.2.0 and arm: run with a v4 toolchain

instead of a v7 toolchain, so it works on all.

should fix latest build mess.

future: test the speed of this vs armv[567] specific on armv[567].
This commit is contained in:
mrg 2020-09-27 21:19:36 +00:00
parent 611c8d45dc
commit 63c24fdcdf
10 changed files with 232 additions and 388 deletions

View File

@ -37,7 +37,7 @@ see https://www.gnu.org/licenses/.
/* The gmp-mparam.h file (a string) the tune program should suggest updating.
*/
#define GMP_MPARAM_H_SUGGEST "./mpn/arm/v7a/cora5/gmp-mparam.h"
#define GMP_MPARAM_H_SUGGEST "./mpn/arm/gmp-mparam.h"
/* Define to 1 if you have the `alarm' function. */
#define HAVE_ALARM 1
@ -278,8 +278,8 @@ see https://www.gnu.org/licenses/.
/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */
/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */
/* #undef HAVE_NATIVE_mpn_addmul_1c */
#define HAVE_NATIVE_mpn_addmul_2 1
#define HAVE_NATIVE_mpn_addmul_3 1
/* #undef HAVE_NATIVE_mpn_addmul_2 */
/* #undef HAVE_NATIVE_mpn_addmul_3 */
/* #undef HAVE_NATIVE_mpn_addmul_4 */
/* #undef HAVE_NATIVE_mpn_addmul_5 */
/* #undef HAVE_NATIVE_mpn_addmul_6 */
@ -300,13 +300,13 @@ see https://www.gnu.org/licenses/.
/* #undef HAVE_NATIVE_mpn_div_qr_2 */
#define HAVE_NATIVE_mpn_divexact_1 1
/* #undef HAVE_NATIVE_mpn_divexact_by3c */
#define HAVE_NATIVE_mpn_divrem_1 1
/* #undef HAVE_NATIVE_mpn_divrem_1 */
/* #undef HAVE_NATIVE_mpn_divrem_1c */
/* #undef HAVE_NATIVE_mpn_divrem_2 */
/* #undef HAVE_NATIVE_mpn_gcd_1 */
#define HAVE_NATIVE_mpn_gcd_11 1
#define HAVE_NATIVE_mpn_gcd_22 1
#define HAVE_NATIVE_mpn_hamdist 1
/* #undef HAVE_NATIVE_mpn_gcd_11 */
/* #undef HAVE_NATIVE_mpn_gcd_22 */
/* #undef HAVE_NATIVE_mpn_hamdist */
#define HAVE_NATIVE_mpn_invert_limb 1
#define HAVE_NATIVE_mpn_ior_n 1
#define HAVE_NATIVE_mpn_iorn_n 1
@ -314,16 +314,16 @@ see https://www.gnu.org/licenses/.
#define HAVE_NATIVE_mpn_lshiftc 1
/* #undef HAVE_NATIVE_mpn_lshsub_n */
/* #undef HAVE_NATIVE_mpn_mod_1 */
#define HAVE_NATIVE_mpn_mod_1_1p 1
/* #undef HAVE_NATIVE_mpn_mod_1_1p */
/* #undef HAVE_NATIVE_mpn_mod_1c */
#define HAVE_NATIVE_mpn_mod_1s_2p 1
/* #undef HAVE_NATIVE_mpn_mod_1s_2p */
/* #undef HAVE_NATIVE_mpn_mod_1s_4p */
#define HAVE_NATIVE_mpn_mod_34lsub1 1
/* #undef HAVE_NATIVE_mpn_modexact_1_odd */
#define HAVE_NATIVE_mpn_modexact_1c_odd 1
#define HAVE_NATIVE_mpn_mul_1 1
/* #undef HAVE_NATIVE_mpn_mul_1c */
#define HAVE_NATIVE_mpn_mul_2 1
/* #undef HAVE_NATIVE_mpn_mul_2 */
/* #undef HAVE_NATIVE_mpn_mul_3 */
/* #undef HAVE_NATIVE_mpn_mul_4 */
/* #undef HAVE_NATIVE_mpn_mul_5 */
@ -332,8 +332,8 @@ see https://www.gnu.org/licenses/.
/* #undef HAVE_NATIVE_mpn_mullo_basecase */
#define HAVE_NATIVE_mpn_nand_n 1
#define HAVE_NATIVE_mpn_nior_n 1
#define HAVE_NATIVE_mpn_popcount 1
#define HAVE_NATIVE_mpn_preinv_divrem_1 1
/* #undef HAVE_NATIVE_mpn_popcount */
/* #undef HAVE_NATIVE_mpn_preinv_divrem_1 */
/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */
/* #undef HAVE_NATIVE_mpn_redc_1 */
/* #undef HAVE_NATIVE_mpn_redc_2 */
@ -349,7 +349,7 @@ see https://www.gnu.org/licenses/.
/* #undef HAVE_NATIVE_mpn_rsh1sub_nc */
#define HAVE_NATIVE_mpn_rshift 1
/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */
#define HAVE_NATIVE_mpn_sqr_basecase 1
/* #undef HAVE_NATIVE_mpn_sqr_basecase */
/* #undef HAVE_NATIVE_mpn_sqr_diagonal */
/* #undef HAVE_NATIVE_mpn_sqr_diag_addlsh1 */
#define HAVE_NATIVE_mpn_sub_n 1
@ -587,7 +587,7 @@ see https://www.gnu.org/licenses/.
#define TIME_WITH_SYS_TIME 1
/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */
/* #undef TUNE_SQR_TOOM2_MAX */
#define TUNE_SQR_TOOM2_MAX SQR_TOOM2_MAX_GENERIC
/* Version number of package */
#define VERSION "6.2.0"

View File

@ -4,6 +4,7 @@ ifdef(<__CONFIG_M4_INCLUDED__>,,<
define(<WANT_ASSERT>,0)
define(<WANT_PROFILING>,<`no'>)
define(<NOTHUMB>,1)
define(<M4WRAP_SPURIOUS>,<no>)
define(<TEXT>, <.text>)
define(<DATA>, <.data>)
@ -17,8 +18,8 @@ define(<SIZE>, <.size $1,$2>)
define(<LSYM_PREFIX>, <.L>)
define(<W32>, <.long>)
define(<ALIGN_LOGARITHMIC>,<yes>)
define(<SQR_TOOM2_THRESHOLD>,<66>)
define(<BMOD_1_TO_MOD_1_THRESHOLD>,<52>)
define(<SQR_TOOM2_THRESHOLD>,<78>)
define(<BMOD_1_TO_MOD_1_THRESHOLD>,<41>)
define(<SIZEOF_UNSIGNED>,<4>)
define(<GMP_LIMB_BITS>,32)
define(<GMP_NAIL_BITS>,0)
@ -28,7 +29,7 @@ changequote(`,')
ifdef(`__CONFIG_M4_INCLUDED__',,`
include(CONFIG_TOP_SRCDIR`/mpn/asm-defs.m4')
include_mpn(`arm/arm-defs.m4')
define_not_for_expansion(`HAVE_HOST_CPU_armv7')
define_not_for_expansion(`HAVE_HOST_CPU_armv4')
define_not_for_expansion(`HAVE_ABI_32')
define_not_for_expansion(`HAVE_LIMB_LITTLE_ENDIAN')
define_not_for_expansion(`HAVE_DOUBLE_IEEE_LITTLE_ENDIAN')

View File

@ -1,6 +1,7 @@
/* gmp-mparam.h -- Compiler/machine parameter header file.
Copyright 2019 Free Software Foundation, Inc.
Copyright 1991, 1993, 1994, 1999-2003, 2009, 2010 Free Software Foundation,
Inc.
This file is part of the GNU MP Library.
@ -31,175 +32,96 @@ see https://www.gnu.org/licenses/. */
#define GMP_LIMB_BITS 32
#define GMP_LIMB_BYTES 4
/* 1500 MHz Cortex-A5 (odroid c1) */
/* FFT tuning limit = 18,235,562 */
/* Generated by tuneup.c, 2019-10-22, gcc 4.9 */
/* 1193MHz ARM (gcc55.fsffrance.org) */
#define DIVREM_1_NORM_THRESHOLD 0 /* preinv always */
#define DIVREM_1_UNNORM_THRESHOLD 0 /* always */
#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 7
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 8
#define MOD_1N_TO_MOD_1_1_THRESHOLD 56
#define MOD_1U_TO_MOD_1_1_THRESHOLD 11
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD MP_SIZE_T_MAX
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 23
#define USE_PREINV_DIVREM_1 1 /* native */
#define DIV_QR_1N_PI1_METHOD 1 /* 132.79% faster than 2 */
#define DIV_QR_1_NORM_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIV_QR_1_UNNORM_THRESHOLD MP_SIZE_T_MAX /* never */
#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 52
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 71
#define USE_PREINV_DIVREM_1 1 /* preinv always */
#define DIVREM_2_THRESHOLD 0 /* preinv always */
#define DIVEXACT_1_THRESHOLD 0 /* always */
#define BMOD_1_TO_MOD_1_THRESHOLD 41
#define DIV_1_VS_MUL_1_PERCENT 213
#define MUL_TOOM22_THRESHOLD 36
#define MUL_TOOM33_THRESHOLD 125
#define MUL_TOOM44_THRESHOLD 193
#define MUL_TOOM6H_THRESHOLD 303
#define MUL_TOOM8H_THRESHOLD 418
#define MUL_TOOM22_THRESHOLD 48
#define MUL_TOOM33_THRESHOLD 143
#define MUL_TOOM44_THRESHOLD 262
#define MUL_TOOM6H_THRESHOLD 414
#define MUL_TOOM8H_THRESHOLD 527
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 125
#define MUL_TOOM32_TO_TOOM53_THRESHOLD 176
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 114
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 129
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 153
#define MUL_TOOM32_TO_TOOM53_THRESHOLD 168
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 152
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 180
#define MUL_TOOM43_TO_TOOM54_THRESHOLD 226
#define SQR_BASECASE_THRESHOLD 12
#define SQR_TOOM2_THRESHOLD 78
#define SQR_TOOM3_THRESHOLD 137
#define SQR_TOOM4_THRESHOLD 212
#define SQR_TOOM6_THRESHOLD 306
#define SQR_TOOM8_THRESHOLD 422
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_TOOM2_THRESHOLD 66
#define SQR_TOOM3_THRESHOLD 149
#define SQR_TOOM4_THRESHOLD 348
#define SQR_TOOM6_THRESHOLD 517
#define SQR_TOOM8_THRESHOLD 608
#define MULMOD_BNM1_THRESHOLD 20
#define SQRMOD_BNM1_THRESHOLD 26
#define MULMID_TOOM42_THRESHOLD 70
#define MULMOD_BNM1_THRESHOLD 26
#define SQRMOD_BNM1_THRESHOLD 28
#define MUL_FFT_MODF_THRESHOLD 660 /* k = 5 */
#define MUL_FFT_MODF_THRESHOLD 436 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 660, 5}, { 29, 6}, { 15, 5}, { 33, 6}, \
{ 17, 5}, { 35, 6}, { 29, 7}, { 15, 6}, \
{ 37, 7}, { 19, 6}, { 40, 7}, { 21, 6}, \
{ 43, 7}, { 37, 8}, { 19, 7}, { 43, 8}, \
{ 23, 7}, { 51, 8}, { 27, 7}, { 55, 8}, \
{ 31, 7}, { 63, 8}, { 43, 9}, { 23, 8}, \
{ 55, 9}, { 31, 8}, { 71, 9}, { 39, 8}, \
{ 83, 9}, { 47, 8}, { 99, 9}, { 55,10}, \
{ 31, 9}, { 63, 8}, { 127, 9}, { 79,10}, \
{ 47, 9}, { 103,11}, { 31,10}, { 63, 9}, \
{ 135,10}, { 79, 9}, { 167,10}, { 95, 9}, \
{ 191,10}, { 111,11}, { 63,10}, { 159,11}, \
{ 95,10}, { 191, 9}, { 383,12}, { 63,11}, \
{ 127,10}, { 255, 9}, { 511,10}, { 271,11}, \
{ 159,10}, { 319, 9}, { 639,10}, { 335, 9}, \
{ 671,11}, { 191,10}, { 383, 9}, { 767,10}, \
{ 399, 9}, { 799,10}, { 415,11}, { 223,12}, \
{ 127,11}, { 255,10}, { 511, 9}, { 1023,10}, \
{ 543,11}, { 287,10}, { 607,11}, { 319,10}, \
{ 671,11}, { 351,12}, { 191,11}, { 383,10}, \
{ 799,11}, { 415,10}, { 831,13}, { 127,12}, \
{ 255,11}, { 511,10}, { 1023,11}, { 543,10}, \
{ 1087,11}, { 575,10}, { 1151,11}, { 607,12}, \
{ 319,11}, { 703,12}, { 383,11}, { 831,12}, \
{ 447,11}, { 895,13}, { 255,12}, { 511,11}, \
{ 1087,12}, { 575,11}, { 1183,12}, { 639,11}, \
{ 1279,12}, { 703,13}, { 383,12}, { 767,11}, \
{ 1535,12}, { 895,14}, { 255,13}, { 511,12}, \
{ 1151,13}, { 639,12}, { 1407,13}, { 767,12}, \
{ 1599,13}, { 895,12}, { 1791,14}, { 511,13}, \
{ 1023,12}, { 2111,13}, { 1151,12}, { 2367,13}, \
{ 1279,12}, { 2559,13}, { 1407,14}, { 767,13}, \
{ 1535,12}, { 3071,13}, { 1663,12}, { 3327,13}, \
{ 1791,15}, { 511,14}, { 1023,13}, { 2175,12}, \
{ 4351,13}, { 8192,14}, { 16384,15}, { 32768,16} }
#define MUL_FFT_TABLE3_SIZE 140
#define MUL_FFT_THRESHOLD 7552
{ { 436, 5}, { 27, 6}, { 28, 7}, { 15, 6}, \
{ 32, 7}, { 17, 6}, { 35, 7}, { 19, 6}, \
{ 39, 7}, { 29, 8}, { 15, 7}, { 35, 8}, \
{ 19, 7}, { 41, 8}, { 23, 7}, { 49, 8}, \
{ 27, 9}, { 15, 8}, { 31, 7}, { 63, 8}, \
{ 256, 9}, { 512,10}, { 1024,11}, { 2048,12}, \
{ 4096,13}, { 8192,14}, { 16384,15}, { 32768,16} }
#define MUL_FFT_TABLE3_SIZE 28
#define MUL_FFT_THRESHOLD 5760
#define SQR_FFT_MODF_THRESHOLD 590 /* k = 5 */
#define SQR_FFT_MODF_THRESHOLD 404 /* k = 5 */
#define SQR_FFT_TABLE3 \
{ { 590, 5}, { 33, 6}, { 17, 5}, { 35, 6}, \
{ 36, 7}, { 19, 6}, { 40, 7}, { 21, 6}, \
{ 43, 7}, { 23, 6}, { 47, 7}, { 37, 8}, \
{ 19, 7}, { 43, 8}, { 23, 7}, { 49, 8}, \
{ 27, 7}, { 55, 8}, { 31, 7}, { 63, 8}, \
{ 43, 9}, { 23, 8}, { 55, 9}, { 31, 8}, \
{ 67, 9}, { 39, 8}, { 83, 9}, { 47, 8}, \
{ 95, 9}, { 55,10}, { 31, 9}, { 79,10}, \
{ 47, 9}, { 103,11}, { 31,10}, { 63, 9}, \
{ 135,10}, { 79, 9}, { 167,10}, { 95, 9}, \
{ 191,10}, { 111,11}, { 63,10}, { 159,11}, \
{ 95,10}, { 191, 9}, { 383,12}, { 63,11}, \
{ 127,10}, { 255, 9}, { 511,10}, { 271, 9}, \
{ 543,11}, { 159,10}, { 319, 9}, { 639,10}, \
{ 335, 9}, { 671,10}, { 351,11}, { 191,10}, \
{ 383, 9}, { 767,10}, { 415,12}, { 127,11}, \
{ 255,10}, { 511, 9}, { 1023,10}, { 543, 9}, \
{ 1087,11}, { 287,10}, { 575, 9}, { 1151,10}, \
{ 607,11}, { 319,10}, { 671,11}, { 351,12}, \
{ 191,11}, { 383,10}, { 799,11}, { 415,10}, \
{ 831,13}, { 127,12}, { 255,11}, { 511,10}, \
{ 1023,11}, { 543,10}, { 1087,11}, { 575,10}, \
{ 1151,11}, { 607,12}, { 319,11}, { 735,12}, \
{ 383,11}, { 831,12}, { 447,11}, { 927,13}, \
{ 255,12}, { 511,11}, { 1087,12}, { 575,11}, \
{ 1151,12}, { 639,11}, { 1279,12}, { 703,13}, \
{ 383,12}, { 767,11}, { 1535,12}, { 831,11}, \
{ 1663,12}, { 895,11}, { 1791,12}, { 959,14}, \
{ 255,13}, { 511,12}, { 1023,11}, { 2047,12}, \
{ 1151,13}, { 639,12}, { 1407,13}, { 767,12}, \
{ 1599,13}, { 895,12}, { 1791,14}, { 511,13}, \
{ 1023,12}, { 2111,13}, { 1151,12}, { 2367,13}, \
{ 1279,12}, { 2559,13}, { 1407,14}, { 767,13}, \
{ 1535,12}, { 3071,13}, { 1663,12}, { 3327,13}, \
{ 1791,15}, { 511,14}, { 1023,13}, { 2175,12}, \
{ 4351,13}, { 8192,14}, { 16384,15}, { 32768,16} }
#define SQR_FFT_TABLE3_SIZE 144
#define SQR_FFT_THRESHOLD 5760
{ { 404, 5}, { 13, 4}, { 27, 5}, { 27, 6}, \
{ 28, 7}, { 15, 6}, { 32, 7}, { 17, 6}, \
{ 35, 7}, { 29, 8}, { 15, 7}, { 35, 8}, \
{ 19, 7}, { 41, 8}, { 23, 7}, { 47, 8}, \
{ 27, 9}, { 15, 8}, { 39, 9}, { 512,10}, \
{ 1024,11}, { 2048,12}, { 4096,13}, { 8192,14}, \
{ 16384,15}, { 32768,16} }
#define SQR_FFT_TABLE3_SIZE 26
#define SQR_FFT_THRESHOLD 3776
#define MULLO_BASECASE_THRESHOLD 0 /* always */
#define MULLO_DC_THRESHOLD 39
#define MULLO_MUL_N_THRESHOLD 14709
#define SQRLO_BASECASE_THRESHOLD 8
#define SQRLO_DC_THRESHOLD 33
#define SQRLO_SQR_THRESHOLD 11278
#define MULLO_DC_THRESHOLD 137
#define MULLO_MUL_N_THRESHOLD 11479
#define DC_DIV_QR_THRESHOLD 36
#define DC_DIVAPPR_Q_THRESHOLD 116
#define DC_BDIV_QR_THRESHOLD 48
#define DC_BDIV_Q_THRESHOLD 140
#define DC_DIV_QR_THRESHOLD 150
#define DC_DIVAPPR_Q_THRESHOLD 494
#define DC_BDIV_QR_THRESHOLD 148
#define DC_BDIV_Q_THRESHOLD 345
#define INV_MULMOD_BNM1_THRESHOLD 95
#define INV_NEWTON_THRESHOLD 181
#define INV_APPR_THRESHOLD 125
#define INV_MULMOD_BNM1_THRESHOLD 70
#define INV_NEWTON_THRESHOLD 474
#define INV_APPR_THRESHOLD 478
#define BINV_NEWTON_THRESHOLD 327
#define REDC_1_TO_REDC_2_THRESHOLD 0 /* always */
#define REDC_2_TO_REDC_N_THRESHOLD 152
#define BINV_NEWTON_THRESHOLD 542
#define REDC_1_TO_REDC_N_THRESHOLD 117
#define MU_DIV_QR_THRESHOLD 2350
#define MU_DIVAPPR_Q_THRESHOLD 2130
#define MUPI_DIV_QR_THRESHOLD 98
#define MU_BDIV_QR_THRESHOLD 1970
#define MU_BDIV_Q_THRESHOLD 2172
#define MU_DIV_QR_THRESHOLD 2089
#define MU_DIVAPPR_Q_THRESHOLD 2172
#define MUPI_DIV_QR_THRESHOLD 225
#define MU_BDIV_QR_THRESHOLD 1528
#define MU_BDIV_Q_THRESHOLD 2089
#define POWM_SEC_TABLE 6,37,108,624,2351
#define MATRIX22_STRASSEN_THRESHOLD 16
#define HGCD_THRESHOLD 197
#define GCD_DC_THRESHOLD 902
#define GCDEXT_DC_THRESHOLD 650
#define JACOBI_BASE_METHOD 2
#define GET_STR_DC_THRESHOLD 28
#define GET_STR_PRECOMPUTE_THRESHOLD 44
#define SET_STR_DC_THRESHOLD 309
#define SET_STR_PRECOMPUTE_THRESHOLD 762
#define FAC_DSC_THRESHOLD 236
#define FAC_ODD_THRESHOLD 29
#define MATRIX22_STRASSEN_THRESHOLD 25
#define HGCD2_DIV1_METHOD 5 /* 2.92% faster than 3 */
#define HGCD_THRESHOLD 70
#define HGCD_APPR_THRESHOLD 59
#define HGCD_REDUCE_THRESHOLD 4120
#define GCD_DC_THRESHOLD 229
#define GCDEXT_DC_THRESHOLD 233
#define JACOBI_BASE_METHOD 1 /* 17.07% faster than 4 */
/* Tuneup completed successfully, took 47845 seconds */
#define GET_STR_DC_THRESHOLD 20
#define GET_STR_PRECOMPUTE_THRESHOLD 39
#define SET_STR_DC_THRESHOLD 1045
#define SET_STR_PRECOMPUTE_THRESHOLD 2147

View File

@ -361,11 +361,9 @@ typedef __mpq_struct *mpq_ptr;
GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
inline semantics, unless -fgnu89-inline is used. */
#ifdef __GNUC__
#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \
|| (defined __GNUC_GNU_INLINE__ && defined __cplusplus)
#if (defined __GNUC_STDC_INLINE__) || \
(__GNUC__ == 4 && __GNUC_MINOR__ >= 2) || (__GNUC__ > 4)
#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
#else
#define __GMP_EXTERN_INLINE extern __inline__
#endif
#define __GMP_INLINE_PROTOTYPES 1
#endif
@ -1693,6 +1691,9 @@ __GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitc
#define mpn_sec_invert_itch __MPN(sec_invert_itch)
__GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
#define mpn_udiv_w_sdiv __MPN(udiv_w_sdiv)
__GMP_DECLSPEC mp_limb_t mpn_udiv_w_sdiv (mp_limb_t *, mp_limb_t, mp_limb_t, mp_limb_t);
/**************** mpz inlines ****************/
@ -2324,7 +2325,7 @@ enum
/* Define CC and CFLAGS which were used to build this version of GMP */
#define __GMP_CC "gcc"
#define __GMP_CFLAGS "-O2 -pedantic -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mtune=cortex-a5"
#define __GMP_CFLAGS "-O2 -pedantic -fomit-frame-pointer -march=armv4 -mfloat-abi=softfp"
/* Major version number is the value of __GNU_MP__ too, above. */
#define __GNU_MP_VERSION 6

View File

@ -9,12 +9,13 @@ C_SRCS_LIST= \
mulmid_basecase.c mpn/generic/mulmid_basecase.c \
jacobi_2.c mpn/generic/jacobi_2.c \
toom32_mul.c mpn/generic/toom32_mul.c \
toom2_sqr.c mpn/generic/toom2_sqr.c \
toom44_mul.c mpn/generic/toom44_mul.c \
toom8h_mul.c mpn/generic/toom8h_mul.c \
toom2_sqr.c mpn/generic/toom2_sqr.c \
zero.c mpn/generic/zero.c \
mod_1_4.c mpn/generic/mod_1_4.c \
gcdext.c mpn/generic/gcdext.c \
hamdist.c mpn/generic/popham.c \
sec_powm.c mpn/generic/sec_powm.c \
add_err3_n.c mpn/generic/add_err3_n.c \
binvert.c mpn/generic/binvert.c \
@ -27,6 +28,7 @@ C_SRCS_LIST= \
hgcd_reduce.c mpn/generic/hgcd_reduce.c \
matrix22_mul1_inverse_vector.c mpn/generic/matrix22_mul1_inverse_vector.c \
toom6_sqr.c mpn/generic/toom6_sqr.c \
divrem_1.c mpn/generic/divrem_1.c \
hgcd_step.c mpn/generic/hgcd_step.c \
sub_err3_n.c mpn/generic/sub_err3_n.c \
mod_1.c mpn/generic/mod_1.c \
@ -63,14 +65,17 @@ C_SRCS_LIST= \
jacbase.c mpn/generic/jacbase.c \
sec_sqr.c mpn/generic/sec_sqr.c \
hgcd_matrix.c mpn/generic/hgcd_matrix.c \
toom_eval_dgr3_pm1.c mpn/generic/toom_eval_dgr3_pm1.c \
mullo_n.c mpn/generic/mullo_n.c \
toom33_mul.c mpn/generic/toom33_mul.c \
toom_eval_dgr3_pm1.c mpn/generic/toom_eval_dgr3_pm1.c \
mod_1_2.c mpn/generic/mod_1_2.c \
gcd_22.c mpn/generic/gcd_22.c \
sqrlo.c mpn/generic/sqrlo.c \
sub_1.c mpn/generic/sub_1.c \
add_err2_n.c mpn/generic/add_err2_n.c \
trialdiv.c mpn/generic/trialdiv.c \
add_1.c mpn/generic/add_1.c \
sqr_basecase.c mpn/generic/sqr_basecase.c \
toom_interpolate_5pts.c mpn/generic/toom_interpolate_5pts.c \
sbpi1_bdiv_q.c mpn/generic/sbpi1_bdiv_q.c \
pre_mod_1.c mpn/generic/pre_mod_1.c \
@ -95,6 +100,7 @@ C_SRCS_LIST= \
sub_err2_n.c mpn/generic/sub_err2_n.c \
scan1.c mpn/generic/scan1.c \
brootinv.c mpn/generic/brootinv.c \
pre_divrem_1.c mpn/generic/pre_divrem_1.c \
perfpow.c mpn/generic/perfpow.c \
get_str.c mpn/generic/get_str.c \
mulmod_bnm1.c mpn/generic/mulmod_bnm1.c \
@ -103,6 +109,7 @@ C_SRCS_LIST= \
sec_pi1_div_qr.c mpn/generic/sec_pi1_div.c \
div_qr_2n_pi1.c mpn/generic/div_qr_2n_pi1.c \
toom43_mul.c mpn/generic/toom43_mul.c \
mod_1_1.c mpn/generic/mod_1_1.c \
matrix22_mul.c mpn/generic/matrix22_mul.c \
sec_pi1_div_r.c mpn/generic/sec_pi1_div.c \
divrem.c mpn/generic/divrem.c \
@ -111,6 +118,7 @@ C_SRCS_LIST= \
dcpi1_bdiv_qr.c mpn/generic/dcpi1_bdiv_qr.c \
mul_n.c mpn/generic/mul_n.c \
redc_2.c mpn/generic/redc_2.c \
gcd_11.c mpn/generic/gcd_11.c \
toom6h_mul.c mpn/generic/toom6h_mul.c \
sqrmod_bnm1.c mpn/generic/sqrmod_bnm1.c \
mul_fft.c mpn/generic/mul_fft.c \
@ -135,6 +143,7 @@ C_SRCS_LIST= \
sec_sub_1.c mpn/generic/sec_aors_1.c \
broot.c mpn/generic/broot.c \
sec_add_1.c mpn/generic/sec_aors_1.c \
popcount.c mpn/generic/popham.c \
dcpi1_bdiv_q.c mpn/generic/dcpi1_bdiv_q.c \
hgcd2_jacobi.c mpn/generic/hgcd2_jacobi.c \
add_err1_n.c mpn/generic/add_err1_n.c \
@ -154,8 +163,8 @@ C_SRCS_LIST= \
bdiv_qr.c mpn/generic/bdiv_qr.c \
hgcd_jacobi.c mpn/generic/hgcd_jacobi.c \
div_qr_1n_pi1.c mpn/generic/div_qr_1n_pi1.c \
sizeinbase.c mpn/generic/sizeinbase.c \
toom3_sqr.c mpn/generic/toom3_sqr.c \
sizeinbase.c mpn/generic/sizeinbase.c \
gcd.c mpn/generic/gcd.c \
redc_n.c mpn/generic/redc_n.c \
sub_err1_n.c mpn/generic/sub_err1_n.c \
@ -164,44 +173,33 @@ ASM_SRCS_LIST= \
nand_n.asm mpn/arm/logops_n.asm \
rsh1sub_n.asm mpn/arm/rsh1aors_n.asm \
sec_tabselect.asm mpn/arm/sec_tabselect.asm \
gcd_11.asm mpn/arm/v6t2/gcd_11.asm \
mod_1_2.asm mpn/arm/v5/mod_1_2.asm \
add_n.asm mpn/arm/aors_n.asm \
rsh1add_n.asm mpn/arm/rsh1aors_n.asm \
sqr_basecase.asm mpn/arm/v6/sqr_basecase.asm \
sublsh1_n.asm mpn/arm/aorslsh1_n.asm \
bdiv_q_1.asm mpn/arm/bdiv_q_1.asm \
xor_n.asm mpn/arm/logops_n.asm \
addmul_2.asm mpn/arm/v6/addmul_2.asm \
submul_1.asm mpn/arm/v6/submul_1.asm \
submul_1.asm mpn/arm/aorsmul_1.asm \
nior_n.asm mpn/arm/logops_n.asm \
lshift.asm mpn/arm/lshift.asm \
and_n.asm mpn/arm/logops_n.asm \
hamdist.asm mpn/arm/v6/popham.asm \
cnd_sub_n.asm mpn/arm/cnd_aors_n.asm \
mul_1.asm mpn/arm/v6/mul_1.asm \
divrem_1.asm mpn/arm/v6t2/divrem_1.asm \
mul_1.asm mpn/arm/mul_1.asm \
copyd.asm mpn/arm/copyd.asm \
bdiv_dbm1c.asm mpn/arm/bdiv_dbm1c.asm \
gcd_22.asm mpn/arm/v6t2/gcd_22.asm \
udiv.asm mpn/arm/udiv.asm \
dive_1.asm mpn/arm/v6/dive_1.asm \
dive_1.asm mpn/arm/dive_1.asm \
cnd_add_n.asm mpn/arm/cnd_aors_n.asm \
andn_n.asm mpn/arm/logops_n.asm \
com.asm mpn/arm/com.asm \
copyi.asm mpn/arm/copyi.asm \
mod_1_1.asm mpn/arm/v5/mod_1_1.asm \
rshift.asm mpn/arm/rshift.asm \
addmul_3.asm mpn/arm/v6/addmul_3.asm \
iorn_n.asm mpn/arm/logops_n.asm \
ior_n.asm mpn/arm/logops_n.asm \
mod_34lsub1.asm mpn/arm/mod_34lsub1.asm \
popcount.asm mpn/arm/v6/popham.asm \
xnor_n.asm mpn/arm/logops_n.asm \
lshiftc.asm mpn/arm/lshiftc.asm \
mode1o.asm mpn/arm/v6/mode1o.asm \
mode1o.asm mpn/arm/mode1o.asm \
addlsh1_n.asm mpn/arm/aorslsh1_n.asm \
mul_2.asm mpn/arm/v6/mul_2.asm \
invert_limb.asm mpn/arm/invert_limb.asm \
addmul_1.asm mpn/arm/v6/addmul_1.asm \
addmul_1.asm mpn/arm/aorsmul_1.asm \
sub_n.asm mpn/arm/aors_n.asm \

View File

@ -37,7 +37,7 @@ see https://www.gnu.org/licenses/.
/* The gmp-mparam.h file (a string) the tune program should suggest updating.
*/
#define GMP_MPARAM_H_SUGGEST "./mpn/arm/v7a/cora5/gmp-mparam.h"
#define GMP_MPARAM_H_SUGGEST "./mpn/arm/gmp-mparam.h"
/* Define to 1 if you have the `alarm' function. */
#define HAVE_ALARM 1
@ -278,8 +278,8 @@ see https://www.gnu.org/licenses/.
/* #undef HAVE_NATIVE_mpn_addlsh2_nc_ip2 */
/* #undef HAVE_NATIVE_mpn_addlsh_nc_ip2 */
/* #undef HAVE_NATIVE_mpn_addmul_1c */
#define HAVE_NATIVE_mpn_addmul_2 1
#define HAVE_NATIVE_mpn_addmul_3 1
/* #undef HAVE_NATIVE_mpn_addmul_2 */
/* #undef HAVE_NATIVE_mpn_addmul_3 */
/* #undef HAVE_NATIVE_mpn_addmul_4 */
/* #undef HAVE_NATIVE_mpn_addmul_5 */
/* #undef HAVE_NATIVE_mpn_addmul_6 */
@ -300,13 +300,13 @@ see https://www.gnu.org/licenses/.
/* #undef HAVE_NATIVE_mpn_div_qr_2 */
#define HAVE_NATIVE_mpn_divexact_1 1
/* #undef HAVE_NATIVE_mpn_divexact_by3c */
#define HAVE_NATIVE_mpn_divrem_1 1
/* #undef HAVE_NATIVE_mpn_divrem_1 */
/* #undef HAVE_NATIVE_mpn_divrem_1c */
/* #undef HAVE_NATIVE_mpn_divrem_2 */
/* #undef HAVE_NATIVE_mpn_gcd_1 */
#define HAVE_NATIVE_mpn_gcd_11 1
#define HAVE_NATIVE_mpn_gcd_22 1
#define HAVE_NATIVE_mpn_hamdist 1
/* #undef HAVE_NATIVE_mpn_gcd_11 */
/* #undef HAVE_NATIVE_mpn_gcd_22 */
/* #undef HAVE_NATIVE_mpn_hamdist */
#define HAVE_NATIVE_mpn_invert_limb 1
#define HAVE_NATIVE_mpn_ior_n 1
#define HAVE_NATIVE_mpn_iorn_n 1
@ -314,16 +314,16 @@ see https://www.gnu.org/licenses/.
#define HAVE_NATIVE_mpn_lshiftc 1
/* #undef HAVE_NATIVE_mpn_lshsub_n */
/* #undef HAVE_NATIVE_mpn_mod_1 */
#define HAVE_NATIVE_mpn_mod_1_1p 1
/* #undef HAVE_NATIVE_mpn_mod_1_1p */
/* #undef HAVE_NATIVE_mpn_mod_1c */
#define HAVE_NATIVE_mpn_mod_1s_2p 1
/* #undef HAVE_NATIVE_mpn_mod_1s_2p */
/* #undef HAVE_NATIVE_mpn_mod_1s_4p */
#define HAVE_NATIVE_mpn_mod_34lsub1 1
/* #undef HAVE_NATIVE_mpn_modexact_1_odd */
#define HAVE_NATIVE_mpn_modexact_1c_odd 1
#define HAVE_NATIVE_mpn_mul_1 1
/* #undef HAVE_NATIVE_mpn_mul_1c */
#define HAVE_NATIVE_mpn_mul_2 1
/* #undef HAVE_NATIVE_mpn_mul_2 */
/* #undef HAVE_NATIVE_mpn_mul_3 */
/* #undef HAVE_NATIVE_mpn_mul_4 */
/* #undef HAVE_NATIVE_mpn_mul_5 */
@ -332,8 +332,8 @@ see https://www.gnu.org/licenses/.
/* #undef HAVE_NATIVE_mpn_mullo_basecase */
#define HAVE_NATIVE_mpn_nand_n 1
#define HAVE_NATIVE_mpn_nior_n 1
#define HAVE_NATIVE_mpn_popcount 1
#define HAVE_NATIVE_mpn_preinv_divrem_1 1
/* #undef HAVE_NATIVE_mpn_popcount */
/* #undef HAVE_NATIVE_mpn_preinv_divrem_1 */
/* #undef HAVE_NATIVE_mpn_preinv_mod_1 */
/* #undef HAVE_NATIVE_mpn_redc_1 */
/* #undef HAVE_NATIVE_mpn_redc_2 */
@ -349,7 +349,7 @@ see https://www.gnu.org/licenses/.
/* #undef HAVE_NATIVE_mpn_rsh1sub_nc */
#define HAVE_NATIVE_mpn_rshift 1
/* #undef HAVE_NATIVE_mpn_sbpi1_bdiv_r */
#define HAVE_NATIVE_mpn_sqr_basecase 1
/* #undef HAVE_NATIVE_mpn_sqr_basecase */
/* #undef HAVE_NATIVE_mpn_sqr_diagonal */
/* #undef HAVE_NATIVE_mpn_sqr_diag_addlsh1 */
#define HAVE_NATIVE_mpn_sub_n 1
@ -587,7 +587,7 @@ see https://www.gnu.org/licenses/.
#define TIME_WITH_SYS_TIME 1
/* Maximum size the tune program can test for SQR_TOOM2_THRESHOLD */
/* #undef TUNE_SQR_TOOM2_MAX */
#define TUNE_SQR_TOOM2_MAX SQR_TOOM2_MAX_GENERIC
/* Version number of package */
#define VERSION "6.2.0"

View File

@ -4,6 +4,7 @@ ifdef(<__CONFIG_M4_INCLUDED__>,,<
define(<WANT_ASSERT>,0)
define(<WANT_PROFILING>,<`no'>)
define(<NOTHUMB>,1)
define(<M4WRAP_SPURIOUS>,<no>)
define(<TEXT>, <.text>)
define(<DATA>, <.data>)
@ -17,8 +18,8 @@ define(<SIZE>, <.size $1,$2>)
define(<LSYM_PREFIX>, <.L>)
define(<W32>, <.long>)
define(<ALIGN_LOGARITHMIC>,<yes>)
define(<SQR_TOOM2_THRESHOLD>,<66>)
define(<BMOD_1_TO_MOD_1_THRESHOLD>,<52>)
define(<SQR_TOOM2_THRESHOLD>,<78>)
define(<BMOD_1_TO_MOD_1_THRESHOLD>,<41>)
define(<SIZEOF_UNSIGNED>,<4>)
define(<GMP_LIMB_BITS>,32)
define(<GMP_NAIL_BITS>,0)
@ -28,7 +29,7 @@ changequote(`,')
ifdef(`__CONFIG_M4_INCLUDED__',,`
include(CONFIG_TOP_SRCDIR`/mpn/asm-defs.m4')
include_mpn(`arm/arm-defs.m4')
define_not_for_expansion(`HAVE_HOST_CPU_armv7eb')
define_not_for_expansion(`HAVE_HOST_CPU_armv4eb')
define_not_for_expansion(`HAVE_ABI_32')
define_not_for_expansion(`HAVE_LIMB_BIG_ENDIAN')
define_not_for_expansion(`HAVE_DOUBLE_IEEE_BIG_ENDIAN')

View File

@ -1,6 +1,7 @@
/* gmp-mparam.h -- Compiler/machine parameter header file.
Copyright 2019 Free Software Foundation, Inc.
Copyright 1991, 1993, 1994, 1999-2003, 2009, 2010 Free Software Foundation,
Inc.
This file is part of the GNU MP Library.
@ -31,175 +32,96 @@ see https://www.gnu.org/licenses/. */
#define GMP_LIMB_BITS 32
#define GMP_LIMB_BYTES 4
/* 1500 MHz Cortex-A5 (odroid c1) */
/* FFT tuning limit = 18,235,562 */
/* Generated by tuneup.c, 2019-10-22, gcc 4.9 */
/* 1193MHz ARM (gcc55.fsffrance.org) */
#define DIVREM_1_NORM_THRESHOLD 0 /* preinv always */
#define DIVREM_1_UNNORM_THRESHOLD 0 /* always */
#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 7
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 8
#define MOD_1N_TO_MOD_1_1_THRESHOLD 56
#define MOD_1U_TO_MOD_1_1_THRESHOLD 11
#define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */
#define MOD_1_2_TO_MOD_1_4_THRESHOLD MP_SIZE_T_MAX
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 23
#define USE_PREINV_DIVREM_1 1 /* native */
#define DIV_QR_1N_PI1_METHOD 1 /* 132.79% faster than 2 */
#define DIV_QR_1_NORM_THRESHOLD MP_SIZE_T_MAX /* never */
#define DIV_QR_1_UNNORM_THRESHOLD MP_SIZE_T_MAX /* never */
#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 52
#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 71
#define USE_PREINV_DIVREM_1 1 /* preinv always */
#define DIVREM_2_THRESHOLD 0 /* preinv always */
#define DIVEXACT_1_THRESHOLD 0 /* always */
#define BMOD_1_TO_MOD_1_THRESHOLD 41
#define DIV_1_VS_MUL_1_PERCENT 213
#define MUL_TOOM22_THRESHOLD 36
#define MUL_TOOM33_THRESHOLD 125
#define MUL_TOOM44_THRESHOLD 193
#define MUL_TOOM6H_THRESHOLD 303
#define MUL_TOOM8H_THRESHOLD 418
#define MUL_TOOM22_THRESHOLD 48
#define MUL_TOOM33_THRESHOLD 143
#define MUL_TOOM44_THRESHOLD 262
#define MUL_TOOM6H_THRESHOLD 414
#define MUL_TOOM8H_THRESHOLD 527
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 125
#define MUL_TOOM32_TO_TOOM53_THRESHOLD 176
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 114
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 129
#define MUL_TOOM32_TO_TOOM43_THRESHOLD 153
#define MUL_TOOM32_TO_TOOM53_THRESHOLD 168
#define MUL_TOOM42_TO_TOOM53_THRESHOLD 152
#define MUL_TOOM42_TO_TOOM63_THRESHOLD 180
#define MUL_TOOM43_TO_TOOM54_THRESHOLD 226
#define SQR_BASECASE_THRESHOLD 12
#define SQR_TOOM2_THRESHOLD 78
#define SQR_TOOM3_THRESHOLD 137
#define SQR_TOOM4_THRESHOLD 212
#define SQR_TOOM6_THRESHOLD 306
#define SQR_TOOM8_THRESHOLD 422
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
#define SQR_TOOM2_THRESHOLD 66
#define SQR_TOOM3_THRESHOLD 149
#define SQR_TOOM4_THRESHOLD 348
#define SQR_TOOM6_THRESHOLD 517
#define SQR_TOOM8_THRESHOLD 608
#define MULMOD_BNM1_THRESHOLD 20
#define SQRMOD_BNM1_THRESHOLD 26
#define MULMID_TOOM42_THRESHOLD 70
#define MULMOD_BNM1_THRESHOLD 26
#define SQRMOD_BNM1_THRESHOLD 28
#define MUL_FFT_MODF_THRESHOLD 660 /* k = 5 */
#define MUL_FFT_MODF_THRESHOLD 436 /* k = 5 */
#define MUL_FFT_TABLE3 \
{ { 660, 5}, { 29, 6}, { 15, 5}, { 33, 6}, \
{ 17, 5}, { 35, 6}, { 29, 7}, { 15, 6}, \
{ 37, 7}, { 19, 6}, { 40, 7}, { 21, 6}, \
{ 43, 7}, { 37, 8}, { 19, 7}, { 43, 8}, \
{ 23, 7}, { 51, 8}, { 27, 7}, { 55, 8}, \
{ 31, 7}, { 63, 8}, { 43, 9}, { 23, 8}, \
{ 55, 9}, { 31, 8}, { 71, 9}, { 39, 8}, \
{ 83, 9}, { 47, 8}, { 99, 9}, { 55,10}, \
{ 31, 9}, { 63, 8}, { 127, 9}, { 79,10}, \
{ 47, 9}, { 103,11}, { 31,10}, { 63, 9}, \
{ 135,10}, { 79, 9}, { 167,10}, { 95, 9}, \
{ 191,10}, { 111,11}, { 63,10}, { 159,11}, \
{ 95,10}, { 191, 9}, { 383,12}, { 63,11}, \
{ 127,10}, { 255, 9}, { 511,10}, { 271,11}, \
{ 159,10}, { 319, 9}, { 639,10}, { 335, 9}, \
{ 671,11}, { 191,10}, { 383, 9}, { 767,10}, \
{ 399, 9}, { 799,10}, { 415,11}, { 223,12}, \
{ 127,11}, { 255,10}, { 511, 9}, { 1023,10}, \
{ 543,11}, { 287,10}, { 607,11}, { 319,10}, \
{ 671,11}, { 351,12}, { 191,11}, { 383,10}, \
{ 799,11}, { 415,10}, { 831,13}, { 127,12}, \
{ 255,11}, { 511,10}, { 1023,11}, { 543,10}, \
{ 1087,11}, { 575,10}, { 1151,11}, { 607,12}, \
{ 319,11}, { 703,12}, { 383,11}, { 831,12}, \
{ 447,11}, { 895,13}, { 255,12}, { 511,11}, \
{ 1087,12}, { 575,11}, { 1183,12}, { 639,11}, \
{ 1279,12}, { 703,13}, { 383,12}, { 767,11}, \
{ 1535,12}, { 895,14}, { 255,13}, { 511,12}, \
{ 1151,13}, { 639,12}, { 1407,13}, { 767,12}, \
{ 1599,13}, { 895,12}, { 1791,14}, { 511,13}, \
{ 1023,12}, { 2111,13}, { 1151,12}, { 2367,13}, \
{ 1279,12}, { 2559,13}, { 1407,14}, { 767,13}, \
{ 1535,12}, { 3071,13}, { 1663,12}, { 3327,13}, \
{ 1791,15}, { 511,14}, { 1023,13}, { 2175,12}, \
{ 4351,13}, { 8192,14}, { 16384,15}, { 32768,16} }
#define MUL_FFT_TABLE3_SIZE 140
#define MUL_FFT_THRESHOLD 7552
{ { 436, 5}, { 27, 6}, { 28, 7}, { 15, 6}, \
{ 32, 7}, { 17, 6}, { 35, 7}, { 19, 6}, \
{ 39, 7}, { 29, 8}, { 15, 7}, { 35, 8}, \
{ 19, 7}, { 41, 8}, { 23, 7}, { 49, 8}, \
{ 27, 9}, { 15, 8}, { 31, 7}, { 63, 8}, \
{ 256, 9}, { 512,10}, { 1024,11}, { 2048,12}, \
{ 4096,13}, { 8192,14}, { 16384,15}, { 32768,16} }
#define MUL_FFT_TABLE3_SIZE 28
#define MUL_FFT_THRESHOLD 5760
#define SQR_FFT_MODF_THRESHOLD 590 /* k = 5 */
#define SQR_FFT_MODF_THRESHOLD 404 /* k = 5 */
#define SQR_FFT_TABLE3 \
{ { 590, 5}, { 33, 6}, { 17, 5}, { 35, 6}, \
{ 36, 7}, { 19, 6}, { 40, 7}, { 21, 6}, \
{ 43, 7}, { 23, 6}, { 47, 7}, { 37, 8}, \
{ 19, 7}, { 43, 8}, { 23, 7}, { 49, 8}, \
{ 27, 7}, { 55, 8}, { 31, 7}, { 63, 8}, \
{ 43, 9}, { 23, 8}, { 55, 9}, { 31, 8}, \
{ 67, 9}, { 39, 8}, { 83, 9}, { 47, 8}, \
{ 95, 9}, { 55,10}, { 31, 9}, { 79,10}, \
{ 47, 9}, { 103,11}, { 31,10}, { 63, 9}, \
{ 135,10}, { 79, 9}, { 167,10}, { 95, 9}, \
{ 191,10}, { 111,11}, { 63,10}, { 159,11}, \
{ 95,10}, { 191, 9}, { 383,12}, { 63,11}, \
{ 127,10}, { 255, 9}, { 511,10}, { 271, 9}, \
{ 543,11}, { 159,10}, { 319, 9}, { 639,10}, \
{ 335, 9}, { 671,10}, { 351,11}, { 191,10}, \
{ 383, 9}, { 767,10}, { 415,12}, { 127,11}, \
{ 255,10}, { 511, 9}, { 1023,10}, { 543, 9}, \
{ 1087,11}, { 287,10}, { 575, 9}, { 1151,10}, \
{ 607,11}, { 319,10}, { 671,11}, { 351,12}, \
{ 191,11}, { 383,10}, { 799,11}, { 415,10}, \
{ 831,13}, { 127,12}, { 255,11}, { 511,10}, \
{ 1023,11}, { 543,10}, { 1087,11}, { 575,10}, \
{ 1151,11}, { 607,12}, { 319,11}, { 735,12}, \
{ 383,11}, { 831,12}, { 447,11}, { 927,13}, \
{ 255,12}, { 511,11}, { 1087,12}, { 575,11}, \
{ 1151,12}, { 639,11}, { 1279,12}, { 703,13}, \
{ 383,12}, { 767,11}, { 1535,12}, { 831,11}, \
{ 1663,12}, { 895,11}, { 1791,12}, { 959,14}, \
{ 255,13}, { 511,12}, { 1023,11}, { 2047,12}, \
{ 1151,13}, { 639,12}, { 1407,13}, { 767,12}, \
{ 1599,13}, { 895,12}, { 1791,14}, { 511,13}, \
{ 1023,12}, { 2111,13}, { 1151,12}, { 2367,13}, \
{ 1279,12}, { 2559,13}, { 1407,14}, { 767,13}, \
{ 1535,12}, { 3071,13}, { 1663,12}, { 3327,13}, \
{ 1791,15}, { 511,14}, { 1023,13}, { 2175,12}, \
{ 4351,13}, { 8192,14}, { 16384,15}, { 32768,16} }
#define SQR_FFT_TABLE3_SIZE 144
#define SQR_FFT_THRESHOLD 5760
{ { 404, 5}, { 13, 4}, { 27, 5}, { 27, 6}, \
{ 28, 7}, { 15, 6}, { 32, 7}, { 17, 6}, \
{ 35, 7}, { 29, 8}, { 15, 7}, { 35, 8}, \
{ 19, 7}, { 41, 8}, { 23, 7}, { 47, 8}, \
{ 27, 9}, { 15, 8}, { 39, 9}, { 512,10}, \
{ 1024,11}, { 2048,12}, { 4096,13}, { 8192,14}, \
{ 16384,15}, { 32768,16} }
#define SQR_FFT_TABLE3_SIZE 26
#define SQR_FFT_THRESHOLD 3776
#define MULLO_BASECASE_THRESHOLD 0 /* always */
#define MULLO_DC_THRESHOLD 39
#define MULLO_MUL_N_THRESHOLD 14709
#define SQRLO_BASECASE_THRESHOLD 8
#define SQRLO_DC_THRESHOLD 33
#define SQRLO_SQR_THRESHOLD 11278
#define MULLO_DC_THRESHOLD 137
#define MULLO_MUL_N_THRESHOLD 11479
#define DC_DIV_QR_THRESHOLD 36
#define DC_DIVAPPR_Q_THRESHOLD 116
#define DC_BDIV_QR_THRESHOLD 48
#define DC_BDIV_Q_THRESHOLD 140
#define DC_DIV_QR_THRESHOLD 150
#define DC_DIVAPPR_Q_THRESHOLD 494
#define DC_BDIV_QR_THRESHOLD 148
#define DC_BDIV_Q_THRESHOLD 345
#define INV_MULMOD_BNM1_THRESHOLD 95
#define INV_NEWTON_THRESHOLD 181
#define INV_APPR_THRESHOLD 125
#define INV_MULMOD_BNM1_THRESHOLD 70
#define INV_NEWTON_THRESHOLD 474
#define INV_APPR_THRESHOLD 478
#define BINV_NEWTON_THRESHOLD 327
#define REDC_1_TO_REDC_2_THRESHOLD 0 /* always */
#define REDC_2_TO_REDC_N_THRESHOLD 152
#define BINV_NEWTON_THRESHOLD 542
#define REDC_1_TO_REDC_N_THRESHOLD 117
#define MU_DIV_QR_THRESHOLD 2350
#define MU_DIVAPPR_Q_THRESHOLD 2130
#define MUPI_DIV_QR_THRESHOLD 98
#define MU_BDIV_QR_THRESHOLD 1970
#define MU_BDIV_Q_THRESHOLD 2172
#define MU_DIV_QR_THRESHOLD 2089
#define MU_DIVAPPR_Q_THRESHOLD 2172
#define MUPI_DIV_QR_THRESHOLD 225
#define MU_BDIV_QR_THRESHOLD 1528
#define MU_BDIV_Q_THRESHOLD 2089
#define POWM_SEC_TABLE 6,37,108,624,2351
#define MATRIX22_STRASSEN_THRESHOLD 16
#define HGCD_THRESHOLD 197
#define GCD_DC_THRESHOLD 902
#define GCDEXT_DC_THRESHOLD 650
#define JACOBI_BASE_METHOD 2
#define GET_STR_DC_THRESHOLD 28
#define GET_STR_PRECOMPUTE_THRESHOLD 44
#define SET_STR_DC_THRESHOLD 309
#define SET_STR_PRECOMPUTE_THRESHOLD 762
#define FAC_DSC_THRESHOLD 236
#define FAC_ODD_THRESHOLD 29
#define MATRIX22_STRASSEN_THRESHOLD 25
#define HGCD2_DIV1_METHOD 5 /* 2.92% faster than 3 */
#define HGCD_THRESHOLD 70
#define HGCD_APPR_THRESHOLD 59
#define HGCD_REDUCE_THRESHOLD 4120
#define GCD_DC_THRESHOLD 229
#define GCDEXT_DC_THRESHOLD 233
#define JACOBI_BASE_METHOD 1 /* 17.07% faster than 4 */
/* Tuneup completed successfully, took 47845 seconds */
#define GET_STR_DC_THRESHOLD 20
#define GET_STR_PRECOMPUTE_THRESHOLD 39
#define SET_STR_DC_THRESHOLD 1045
#define SET_STR_PRECOMPUTE_THRESHOLD 2147

View File

@ -361,11 +361,9 @@ typedef __mpq_struct *mpq_ptr;
GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
inline semantics, unless -fgnu89-inline is used. */
#ifdef __GNUC__
#if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \
|| (defined __GNUC_GNU_INLINE__ && defined __cplusplus)
#if (defined __GNUC_STDC_INLINE__) || \
(__GNUC__ == 4 && __GNUC_MINOR__ >= 2) || (__GNUC__ > 4)
#define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))
#else
#define __GMP_EXTERN_INLINE extern __inline__
#endif
#define __GMP_INLINE_PROTOTYPES 1
#endif
@ -1693,6 +1691,9 @@ __GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitc
#define mpn_sec_invert_itch __MPN(sec_invert_itch)
__GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;
#define mpn_udiv_w_sdiv __MPN(udiv_w_sdiv)
__GMP_DECLSPEC mp_limb_t mpn_udiv_w_sdiv (mp_limb_t *, mp_limb_t, mp_limb_t, mp_limb_t);
/**************** mpz inlines ****************/
@ -2324,7 +2325,7 @@ enum
/* Define CC and CFLAGS which were used to build this version of GMP */
#define __GMP_CC "gcc"
#define __GMP_CFLAGS "-O2 -pedantic -fomit-frame-pointer -march=armv7-a -mfloat-abi=softfp -mtune=cortex-a5"
#define __GMP_CFLAGS "-O2 -pedantic -fomit-frame-pointer -march=armv4 -mfloat-abi=softfp"
/* Major version number is the value of __GNU_MP__ too, above. */
#define __GNU_MP_VERSION 6

View File

@ -9,12 +9,13 @@ C_SRCS_LIST= \
mulmid_basecase.c mpn/generic/mulmid_basecase.c \
jacobi_2.c mpn/generic/jacobi_2.c \
toom32_mul.c mpn/generic/toom32_mul.c \
toom2_sqr.c mpn/generic/toom2_sqr.c \
toom44_mul.c mpn/generic/toom44_mul.c \
toom8h_mul.c mpn/generic/toom8h_mul.c \
toom2_sqr.c mpn/generic/toom2_sqr.c \
zero.c mpn/generic/zero.c \
mod_1_4.c mpn/generic/mod_1_4.c \
gcdext.c mpn/generic/gcdext.c \
hamdist.c mpn/generic/popham.c \
sec_powm.c mpn/generic/sec_powm.c \
add_err3_n.c mpn/generic/add_err3_n.c \
binvert.c mpn/generic/binvert.c \
@ -27,6 +28,7 @@ C_SRCS_LIST= \
hgcd_reduce.c mpn/generic/hgcd_reduce.c \
matrix22_mul1_inverse_vector.c mpn/generic/matrix22_mul1_inverse_vector.c \
toom6_sqr.c mpn/generic/toom6_sqr.c \
divrem_1.c mpn/generic/divrem_1.c \
hgcd_step.c mpn/generic/hgcd_step.c \
sub_err3_n.c mpn/generic/sub_err3_n.c \
mod_1.c mpn/generic/mod_1.c \
@ -63,14 +65,17 @@ C_SRCS_LIST= \
jacbase.c mpn/generic/jacbase.c \
sec_sqr.c mpn/generic/sec_sqr.c \
hgcd_matrix.c mpn/generic/hgcd_matrix.c \
toom_eval_dgr3_pm1.c mpn/generic/toom_eval_dgr3_pm1.c \
mullo_n.c mpn/generic/mullo_n.c \
toom33_mul.c mpn/generic/toom33_mul.c \
toom_eval_dgr3_pm1.c mpn/generic/toom_eval_dgr3_pm1.c \
mod_1_2.c mpn/generic/mod_1_2.c \
gcd_22.c mpn/generic/gcd_22.c \
sqrlo.c mpn/generic/sqrlo.c \
sub_1.c mpn/generic/sub_1.c \
add_err2_n.c mpn/generic/add_err2_n.c \
trialdiv.c mpn/generic/trialdiv.c \
add_1.c mpn/generic/add_1.c \
sqr_basecase.c mpn/generic/sqr_basecase.c \
toom_interpolate_5pts.c mpn/generic/toom_interpolate_5pts.c \
sbpi1_bdiv_q.c mpn/generic/sbpi1_bdiv_q.c \
pre_mod_1.c mpn/generic/pre_mod_1.c \
@ -95,6 +100,7 @@ C_SRCS_LIST= \
sub_err2_n.c mpn/generic/sub_err2_n.c \
scan1.c mpn/generic/scan1.c \
brootinv.c mpn/generic/brootinv.c \
pre_divrem_1.c mpn/generic/pre_divrem_1.c \
perfpow.c mpn/generic/perfpow.c \
get_str.c mpn/generic/get_str.c \
mulmod_bnm1.c mpn/generic/mulmod_bnm1.c \
@ -103,6 +109,7 @@ C_SRCS_LIST= \
sec_pi1_div_qr.c mpn/generic/sec_pi1_div.c \
div_qr_2n_pi1.c mpn/generic/div_qr_2n_pi1.c \
toom43_mul.c mpn/generic/toom43_mul.c \
mod_1_1.c mpn/generic/mod_1_1.c \
matrix22_mul.c mpn/generic/matrix22_mul.c \
sec_pi1_div_r.c mpn/generic/sec_pi1_div.c \
divrem.c mpn/generic/divrem.c \
@ -111,6 +118,7 @@ C_SRCS_LIST= \
dcpi1_bdiv_qr.c mpn/generic/dcpi1_bdiv_qr.c \
mul_n.c mpn/generic/mul_n.c \
redc_2.c mpn/generic/redc_2.c \
gcd_11.c mpn/generic/gcd_11.c \
toom6h_mul.c mpn/generic/toom6h_mul.c \
sqrmod_bnm1.c mpn/generic/sqrmod_bnm1.c \
mul_fft.c mpn/generic/mul_fft.c \
@ -135,6 +143,7 @@ C_SRCS_LIST= \
sec_sub_1.c mpn/generic/sec_aors_1.c \
broot.c mpn/generic/broot.c \
sec_add_1.c mpn/generic/sec_aors_1.c \
popcount.c mpn/generic/popham.c \
dcpi1_bdiv_q.c mpn/generic/dcpi1_bdiv_q.c \
hgcd2_jacobi.c mpn/generic/hgcd2_jacobi.c \
add_err1_n.c mpn/generic/add_err1_n.c \
@ -154,8 +163,8 @@ C_SRCS_LIST= \
bdiv_qr.c mpn/generic/bdiv_qr.c \
hgcd_jacobi.c mpn/generic/hgcd_jacobi.c \
div_qr_1n_pi1.c mpn/generic/div_qr_1n_pi1.c \
sizeinbase.c mpn/generic/sizeinbase.c \
toom3_sqr.c mpn/generic/toom3_sqr.c \
sizeinbase.c mpn/generic/sizeinbase.c \
gcd.c mpn/generic/gcd.c \
redc_n.c mpn/generic/redc_n.c \
sub_err1_n.c mpn/generic/sub_err1_n.c \
@ -164,44 +173,33 @@ ASM_SRCS_LIST= \
nand_n.asm mpn/arm/logops_n.asm \
rsh1sub_n.asm mpn/arm/rsh1aors_n.asm \
sec_tabselect.asm mpn/arm/sec_tabselect.asm \
gcd_11.asm mpn/arm/v6t2/gcd_11.asm \
mod_1_2.asm mpn/arm/v5/mod_1_2.asm \
add_n.asm mpn/arm/aors_n.asm \
rsh1add_n.asm mpn/arm/rsh1aors_n.asm \
sqr_basecase.asm mpn/arm/v6/sqr_basecase.asm \
sublsh1_n.asm mpn/arm/aorslsh1_n.asm \
bdiv_q_1.asm mpn/arm/bdiv_q_1.asm \
xor_n.asm mpn/arm/logops_n.asm \
addmul_2.asm mpn/arm/v6/addmul_2.asm \
submul_1.asm mpn/arm/v6/submul_1.asm \
submul_1.asm mpn/arm/aorsmul_1.asm \
nior_n.asm mpn/arm/logops_n.asm \
lshift.asm mpn/arm/lshift.asm \
and_n.asm mpn/arm/logops_n.asm \
hamdist.asm mpn/arm/v6/popham.asm \
cnd_sub_n.asm mpn/arm/cnd_aors_n.asm \
mul_1.asm mpn/arm/v6/mul_1.asm \
divrem_1.asm mpn/arm/v6t2/divrem_1.asm \
mul_1.asm mpn/arm/mul_1.asm \
copyd.asm mpn/arm/copyd.asm \
bdiv_dbm1c.asm mpn/arm/bdiv_dbm1c.asm \
gcd_22.asm mpn/arm/v6t2/gcd_22.asm \
udiv.asm mpn/arm/udiv.asm \
dive_1.asm mpn/arm/v6/dive_1.asm \
dive_1.asm mpn/arm/dive_1.asm \
cnd_add_n.asm mpn/arm/cnd_aors_n.asm \
andn_n.asm mpn/arm/logops_n.asm \
com.asm mpn/arm/com.asm \
copyi.asm mpn/arm/copyi.asm \
mod_1_1.asm mpn/arm/v5/mod_1_1.asm \
rshift.asm mpn/arm/rshift.asm \
addmul_3.asm mpn/arm/v6/addmul_3.asm \
iorn_n.asm mpn/arm/logops_n.asm \
ior_n.asm mpn/arm/logops_n.asm \
mod_34lsub1.asm mpn/arm/mod_34lsub1.asm \
popcount.asm mpn/arm/v6/popham.asm \
xnor_n.asm mpn/arm/logops_n.asm \
lshiftc.asm mpn/arm/lshiftc.asm \
mode1o.asm mpn/arm/v6/mode1o.asm \
mode1o.asm mpn/arm/mode1o.asm \
addlsh1_n.asm mpn/arm/aorslsh1_n.asm \
mul_2.asm mpn/arm/v6/mul_2.asm \
invert_limb.asm mpn/arm/invert_limb.asm \
addmul_1.asm mpn/arm/v6/addmul_1.asm \
addmul_1.asm mpn/arm/aorsmul_1.asm \
sub_n.asm mpn/arm/aors_n.asm \