1227825Stheraven/* gmp-mparam.h -- Compiler/machine parameter header file. 2227825Stheraven 3227825StheravenCopyright 2019 Free Software Foundation, Inc. 4227825Stheraven 5227825StheravenThis file is part of the GNU MP Library. 6227825Stheraven 7227825StheravenThe GNU MP Library is free software; you can redistribute it and/or modify 8227825Stheravenit under the terms of either: 9227825Stheraven 10227825Stheraven * the GNU Lesser General Public License as published by the Free 11227825Stheraven Software Foundation; either version 3 of the License, or (at your 12227825Stheraven option) any later version. 13227825Stheraven 14227825Stheravenor 15227825Stheraven 16227825Stheraven * the GNU General Public License as published by the Free Software 17227825Stheraven Foundation; either version 2 of the License, or (at your option) any 18227825Stheraven later version. 19227825Stheraven 20227825Stheravenor both in parallel, as here. 21227825Stheraven 22227825StheravenThe GNU MP Library is distributed in the hope that it will be useful, but 23227825StheravenWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 24227825Stheravenor FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 25227825Stheravenfor more details. 26227825Stheraven 27227825StheravenYou should have received copies of the GNU General Public License and the 28227825StheravenGNU Lesser General Public License along with the GNU MP Library. If not, 29227825Stheravensee https://www.gnu.org/licenses/. */ 30227825Stheraven 31227825Stheraven#define GMP_LIMB_BITS 32 32262801Sdim#define GMP_LIMB_BYTES 4 33262801Sdim 34227825Stheraven/* 1000 MHz Cortex-A8 (beaglebone black) */ 35227825Stheraven/* FFT tuning limit = 9,464,348 */ 36227825Stheraven/* Generated by tuneup.c, 2019-10-23, gcc 6.3 */ 37227825Stheraven 38227825Stheraven#define MOD_1_NORM_THRESHOLD 0 /* always */ 39227825Stheraven#define MOD_1_UNNORM_THRESHOLD 0 /* always */ 40227825Stheraven#define MOD_1N_TO_MOD_1_1_THRESHOLD 5 41262801Sdim#define MOD_1U_TO_MOD_1_1_THRESHOLD 5 42262801Sdim#define MOD_1_1_TO_MOD_1_2_THRESHOLD MP_SIZE_T_MAX 43227825Stheraven#define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */ 44227825Stheraven#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 12 45227825Stheraven#define USE_PREINV_DIVREM_1 1 /* native */ 46227825Stheraven#define DIV_QR_1N_PI1_METHOD 1 /* 50.65% faster than 2 */ 47227825Stheraven#define DIV_QR_1_NORM_THRESHOLD MP_SIZE_T_MAX /* never */ 48227825Stheraven#define DIV_QR_1_UNNORM_THRESHOLD MP_SIZE_T_MAX /* never */ 49227825Stheraven#define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */ 50262801Sdim#define DIVEXACT_1_THRESHOLD 0 /* always (native) */ 51262801Sdim#define BMOD_1_TO_MOD_1_THRESHOLD 31 52227825Stheraven 53227825Stheraven#define DIV_1_VS_MUL_1_PERCENT 192 54227825Stheraven 55227825Stheraven#define MUL_TOOM22_THRESHOLD 39 56227825Stheraven#define MUL_TOOM33_THRESHOLD 129 57227825Stheraven#define MUL_TOOM44_THRESHOLD 226 58227825Stheraven#define MUL_TOOM6H_THRESHOLD 366 59227825Stheraven#define MUL_TOOM8H_THRESHOLD 620 60227825Stheraven 61227825Stheraven#define MUL_TOOM32_TO_TOOM43_THRESHOLD 141 62227825Stheraven#define MUL_TOOM32_TO_TOOM53_THRESHOLD 183 63227825Stheraven#define MUL_TOOM42_TO_TOOM53_THRESHOLD 154 64227825Stheraven#define MUL_TOOM42_TO_TOOM63_THRESHOLD 160 65227825Stheraven#define MUL_TOOM43_TO_TOOM54_THRESHOLD 193 66227825Stheraven 67227825Stheraven#define SQR_BASECASE_THRESHOLD 0 /* always (native) */ 68227825Stheraven#define SQR_TOOM2_THRESHOLD 46 69227825Stheraven#define SQR_TOOM3_THRESHOLD 145 70227825Stheraven#define SQR_TOOM4_THRESHOLD 375 71227825Stheraven#define SQR_TOOM6_THRESHOLD 0 /* always */ 72227825Stheraven#define SQR_TOOM8_THRESHOLD 547 73227825Stheraven 74227825Stheraven#define MULMID_TOOM42_THRESHOLD 38 75227825Stheraven 76227825Stheraven#define MULMOD_BNM1_THRESHOLD 22 77227825Stheraven#define SQRMOD_BNM1_THRESHOLD 23 78227825Stheraven 79262801Sdim#define MUL_FFT_MODF_THRESHOLD 476 /* k = 5 */ 80227825Stheraven#define MUL_FFT_TABLE3 \ 81227825Stheraven { { 476, 5}, { 28, 6}, { 15, 5}, { 31, 6}, \ 82227825Stheraven { 28, 7}, { 15, 6}, { 33, 7}, { 19, 6}, \ 83227825Stheraven { 39, 7}, { 27, 8}, { 15, 7}, { 35, 8}, \ 84227825Stheraven { 19, 7}, { 43, 8}, { 23, 7}, { 51, 8}, \ 85227825Stheraven { 27, 7}, { 55, 8}, { 31, 7}, { 63, 8}, \ 86227825Stheraven { 43, 9}, { 23, 8}, { 55, 9}, { 31, 8}, \ 87227825Stheraven { 71, 9}, { 39, 8}, { 83, 9}, { 47, 8}, \ 88227825Stheraven { 99, 9}, { 55,10}, { 31, 9}, { 87,10}, \ 89227825Stheraven { 47, 9}, { 103,11}, { 31,10}, { 63, 9}, \ 90227825Stheraven { 135,10}, { 79, 9}, { 167,10}, { 95, 9}, \ 91227825Stheraven { 199,10}, { 111,11}, { 63,10}, { 127, 9}, \ 92227825Stheraven { 255,10}, { 143, 9}, { 287, 8}, { 575,10}, \ 93227825Stheraven { 159, 9}, { 319,11}, { 95,10}, { 191, 9}, \ 94227825Stheraven { 383, 8}, { 767, 9}, { 399,10}, { 207,12}, \ 95227825Stheraven { 63,11}, { 127,10}, { 255, 9}, { 511,10}, \ 96227825Stheraven { 271, 9}, { 543,10}, { 287, 9}, { 575,11}, \ 97227825Stheraven { 159,10}, { 319, 9}, { 639,10}, { 335, 9}, \ 98227825Stheraven { 671,10}, { 351, 9}, { 703,10}, { 367,11}, \ 99227825Stheraven { 191,10}, { 399, 9}, { 799,10}, { 415,11}, \ 100227825Stheraven { 223,12}, { 127,11}, { 255,10}, { 543,11}, \ 101227825Stheraven { 287,10}, { 607, 9}, { 1215,11}, { 319,10}, \ 102227825Stheraven { 671,11}, { 351,10}, { 703,12}, { 191,11}, \ 103227825Stheraven { 383,10}, { 799,11}, { 415,10}, { 863,11}, \ 104227825Stheraven { 447,13}, { 127,12}, { 255,11}, { 543,10}, \ 105227825Stheraven { 1087,11}, { 607,12}, { 319,11}, { 671,10}, \ 106227825Stheraven { 1343,11}, { 735,12}, { 383,11}, { 799,10}, \ 107227825Stheraven { 1599,11}, { 863,12}, { 447,11}, { 959,13}, \ 108227825Stheraven { 255,12}, { 511,11}, { 1087,12}, { 575,11}, \ 109227825Stheraven { 1215,12}, { 639,11}, { 1343,12}, { 703,13}, \ 110227825Stheraven { 383,12}, { 767,11}, { 1599,12}, { 831,11}, \ 111227825Stheraven { 1663,12}, { 959,14}, { 255,13}, { 511,12}, \ 112227825Stheraven { 1215,13}, { 639,12}, { 1407,13}, { 767,12}, \ 113227825Stheraven { 1663,13}, { 895,12}, { 1791,14}, { 511,13}, \ 114262801Sdim { 1023,12}, { 2111,13}, { 1151,12}, { 4096,13}, \ 115227825Stheraven { 8192,14}, { 16384,15}, { 32768,16} } 116227825Stheraven#define MUL_FFT_TABLE3_SIZE 139 117227825Stheraven#define MUL_FFT_THRESHOLD 6784 118227825Stheraven 119227825Stheraven#define SQR_FFT_MODF_THRESHOLD 436 /* k = 5 */ 120227825Stheraven#define SQR_FFT_TABLE3 \ 121227825Stheraven { { 436, 5}, { 25, 6}, { 13, 5}, { 27, 6}, \ 122227825Stheraven { 28, 7}, { 15, 6}, { 32, 7}, { 17, 6}, \ 123227825Stheraven { 35, 7}, { 19, 6}, { 39, 7}, { 29, 8}, \ 124227825Stheraven { 15, 7}, { 35, 8}, { 19, 7}, { 41, 8}, \ 125227825Stheraven { 23, 7}, { 49, 8}, { 27, 9}, { 15, 8}, \ 126227825Stheraven { 43, 9}, { 23, 8}, { 55,10}, { 15, 9}, \ 127227825Stheraven { 31, 8}, { 67, 9}, { 39, 8}, { 79, 9}, \ 128227825Stheraven { 47, 8}, { 95, 9}, { 55,10}, { 31, 9}, \ 129227825Stheraven { 79,10}, { 47, 9}, { 103,11}, { 31,10}, \ 130227825Stheraven { 63, 9}, { 135,10}, { 79, 9}, { 159, 8}, \ 131227825Stheraven { 319, 9}, { 167,10}, { 95, 9}, { 191,10}, \ 132227825Stheraven { 111,11}, { 63,10}, { 127, 9}, { 255, 8}, \ 133227825Stheraven { 511, 9}, { 271,10}, { 143, 9}, { 287, 8}, \ 134227825Stheraven { 575, 9}, { 303,10}, { 159, 9}, { 319,11}, \ 135227825Stheraven { 95,10}, { 191, 9}, { 383, 8}, { 767, 9}, \ 136227825Stheraven { 399,12}, { 63,11}, { 127,10}, { 255, 9}, \ 137227825Stheraven { 511,10}, { 271, 9}, { 543,10}, { 287, 9}, \ 138227825Stheraven { 575,10}, { 303,11}, { 159,10}, { 319, 9}, \ 139227825Stheraven { 639,10}, { 335, 9}, { 671,10}, { 351, 9}, \ 140227825Stheraven { 703,10}, { 367,11}, { 191,10}, { 383, 9}, \ 141227825Stheraven { 767,10}, { 399, 9}, { 799,10}, { 415, 9}, \ 142227825Stheraven { 831,11}, { 223,10}, { 447,12}, { 127,11}, \ 143227825Stheraven { 255,10}, { 511, 9}, { 1023,10}, { 543,11}, \ 144227825Stheraven { 287,10}, { 607,11}, { 319,10}, { 671,11}, \ 145227825Stheraven { 351,10}, { 735,12}, { 191,11}, { 383,10}, \ 146227825Stheraven { 799,11}, { 415,10}, { 863,11}, { 447,10}, \ 147227825Stheraven { 895,13}, { 127,12}, { 255,11}, { 511,10}, \ 148227825Stheraven { 1023,11}, { 543,10}, { 1087,11}, { 607,12}, \ 149262801Sdim { 319,11}, { 671,10}, { 1343,11}, { 735,12}, \ 150227825Stheraven { 383,11}, { 863,12}, { 447,11}, { 959,13}, \ 151227825Stheraven { 255,12}, { 511,11}, { 1087,12}, { 575,11}, \ 152227825Stheraven { 1215,12}, { 639,11}, { 1343,12}, { 703,11}, \ 153227825Stheraven { 1407,13}, { 383,12}, { 767,11}, { 1599,12}, \ 154227825Stheraven { 831,11}, { 1663,12}, { 959,14}, { 255,13}, \ 155227825Stheraven { 511,12}, { 1215,13}, { 639,12}, { 1471,13}, \ 156227825Stheraven { 767,12}, { 1663,13}, { 895,12}, { 1855,14}, \ 157227825Stheraven { 511,13}, { 1023,12}, { 2111,13}, { 1151,12}, \ 158227825Stheraven { 4096,13}, { 8192,14}, { 16384,15}, { 32768,16} } 159227825Stheraven#define SQR_FFT_TABLE3_SIZE 152 160227825Stheraven#define SQR_FFT_THRESHOLD 3712 161227825Stheraven 162227825Stheraven#define MULLO_BASECASE_THRESHOLD 21 163227825Stheraven#define MULLO_DC_THRESHOLD 0 /* never mpn_mullo_basecase */ 164227825Stheraven#define MULLO_MUL_N_THRESHOLD 13463 165227825Stheraven#define SQRLO_BASECASE_THRESHOLD 9 166227825Stheraven#define SQRLO_DC_THRESHOLD 17 167227825Stheraven#define SQRLO_SQR_THRESHOLD 7246 168227825Stheraven 169227825Stheraven#define DC_DIV_QR_THRESHOLD 27 170227825Stheraven#define DC_DIVAPPR_Q_THRESHOLD 74 171227825Stheraven#define DC_BDIV_QR_THRESHOLD 21 172227825Stheraven#define DC_BDIV_Q_THRESHOLD 64 173227825Stheraven 174227825Stheraven#define INV_MULMOD_BNM1_THRESHOLD 78 175227825Stheraven#define INV_NEWTON_THRESHOLD 31 176227825Stheraven#define INV_APPR_THRESHOLD 37 177227825Stheraven 178227825Stheraven#define BINV_NEWTON_THRESHOLD 167 179227825Stheraven#define REDC_1_TO_REDC_2_THRESHOLD 4 180227825Stheraven#define REDC_2_TO_REDC_N_THRESHOLD 198 181227825Stheraven 182227825Stheraven#define MU_DIV_QR_THRESHOLD 1858 183227825Stheraven#define MU_DIVAPPR_Q_THRESHOLD 1685 184227825Stheraven#define MUPI_DIV_QR_THRESHOLD 43 185262801Sdim#define MU_BDIV_QR_THRESHOLD 1589 186227825Stheraven#define MU_BDIV_Q_THRESHOLD 1685 187227825Stheraven 188227825Stheraven#define POWM_SEC_TABLE 1,13,96,487,1378 189227825Stheraven 190227825Stheraven#define GET_STR_DC_THRESHOLD 18 191227825Stheraven#define GET_STR_PRECOMPUTE_THRESHOLD 36 192227825Stheraven#define SET_STR_DC_THRESHOLD 145 193227825Stheraven#define SET_STR_PRECOMPUTE_THRESHOLD 505 194227825Stheraven 195227825Stheraven#define FAC_DSC_THRESHOLD 137 196227825Stheraven#define FAC_ODD_THRESHOLD 29 197227825Stheraven 198227825Stheraven#define MATRIX22_STRASSEN_THRESHOLD 24 199227825Stheraven#define HGCD2_DIV1_METHOD 5 /* 4.29% faster than 4 */ 200227825Stheraven#define HGCD_THRESHOLD 39 201227825Stheraven#define HGCD_APPR_THRESHOLD 50 202262801Sdim#define HGCD_REDUCE_THRESHOLD 3524 203227825Stheraven#define GCD_DC_THRESHOLD 116 204227825Stheraven#define GCDEXT_DC_THRESHOLD 124 205227825Stheraven#define JACOBI_BASE_METHOD 4 /* 5.89% faster than 1 */ 206227825Stheraven 207227825Stheraven/* Tuneup completed successfully, took 48230 seconds */ 208227825Stheraven