1*671ea119Smrg /* gmp-mparam.h -- Compiler/machine parameter header file for a72. 2*671ea119Smrg 3*671ea119Smrg Copyright 2019 Free Software Foundation, Inc. 4*671ea119Smrg 5*671ea119Smrg This file is part of the GNU MP Library. 6*671ea119Smrg 7*671ea119Smrg The GNU MP Library is free software; you can redistribute it and/or modify 8*671ea119Smrg it under the terms of either: 9*671ea119Smrg 10*671ea119Smrg * the GNU Lesser General Public License as published by the Free 11*671ea119Smrg Software Foundation; either version 3 of the License, or (at your 12*671ea119Smrg option) any later version. 13*671ea119Smrg 14*671ea119Smrg or 15*671ea119Smrg 16*671ea119Smrg * the GNU General Public License as published by the Free Software 17*671ea119Smrg Foundation; either version 2 of the License, or (at your option) any 18*671ea119Smrg later version. 19*671ea119Smrg 20*671ea119Smrg or both in parallel, as here. 21*671ea119Smrg 22*671ea119Smrg The GNU MP Library is distributed in the hope that it will be useful, but 23*671ea119Smrg WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 24*671ea119Smrg or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 25*671ea119Smrg for more details. 26*671ea119Smrg 27*671ea119Smrg You should have received copies of the GNU General Public License and the 28*671ea119Smrg GNU Lesser General Public License along with the GNU MP Library. If not, 29*671ea119Smrg see https://www.gnu.org/licenses/. */ 30*671ea119Smrg 31*671ea119Smrg #define GMP_LIMB_BITS 64 32*671ea119Smrg #define GMP_LIMB_BYTES 8 33*671ea119Smrg 34*671ea119Smrg /* 1800 MHz Cortex-A72 */ 35*671ea119Smrg /* FFT tuning limit = 50,811,960 */ 36*671ea119Smrg /* Generated by tuneup.c, 2019-10-22, gcc 7.3 */ 37*671ea119Smrg 38*671ea119Smrg #define DIVREM_1_NORM_THRESHOLD 3 39*671ea119Smrg #define DIVREM_1_UNNORM_THRESHOLD 3 40*671ea119Smrg #define MOD_1_1P_METHOD 2 /* 12.09% faster than 1 */ 41*671ea119Smrg #define MOD_1_NORM_THRESHOLD 3 42*671ea119Smrg #define MOD_1_UNNORM_THRESHOLD 3 43*671ea119Smrg #define MOD_1N_TO_MOD_1_1_THRESHOLD 8 44*671ea119Smrg #define MOD_1U_TO_MOD_1_1_THRESHOLD 5 45*671ea119Smrg #define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */ 46*671ea119Smrg #define MOD_1_2_TO_MOD_1_4_THRESHOLD 26 47*671ea119Smrg #define PREINV_MOD_1_TO_MOD_1_THRESHOLD 15 48*671ea119Smrg #define USE_PREINV_DIVREM_1 1 49*671ea119Smrg #define DIV_QR_1N_PI1_METHOD 1 /* 13.42% faster than 2 */ 50*671ea119Smrg #define DIV_QR_1_NORM_THRESHOLD 4 51*671ea119Smrg #define DIV_QR_1_UNNORM_THRESHOLD 4 52*671ea119Smrg #define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */ 53*671ea119Smrg #define DIVEXACT_1_THRESHOLD 0 /* always */ 54*671ea119Smrg #define BMOD_1_TO_MOD_1_THRESHOLD 38 55*671ea119Smrg 56*671ea119Smrg #define DIV_1_VS_MUL_1_PERCENT 168 57*671ea119Smrg 58*671ea119Smrg #define MUL_TOOM22_THRESHOLD 8 59*671ea119Smrg #define MUL_TOOM33_THRESHOLD 57 60*671ea119Smrg #define MUL_TOOM44_THRESHOLD 153 61*671ea119Smrg #define MUL_TOOM6H_THRESHOLD 222 62*671ea119Smrg #define MUL_TOOM8H_THRESHOLD 333 63*671ea119Smrg 64*671ea119Smrg #define MUL_TOOM32_TO_TOOM43_THRESHOLD 57 65*671ea119Smrg #define MUL_TOOM32_TO_TOOM53_THRESHOLD 108 66*671ea119Smrg #define MUL_TOOM42_TO_TOOM53_THRESHOLD 104 67*671ea119Smrg #define MUL_TOOM42_TO_TOOM63_THRESHOLD 56 68*671ea119Smrg #define MUL_TOOM43_TO_TOOM54_THRESHOLD 82 69*671ea119Smrg 70*671ea119Smrg #define SQR_BASECASE_THRESHOLD 0 /* always */ 71*671ea119Smrg #define SQR_TOOM2_THRESHOLD 16 72*671ea119Smrg #define SQR_TOOM3_THRESHOLD 73 73*671ea119Smrg #define SQR_TOOM4_THRESHOLD 154 74*671ea119Smrg #define SQR_TOOM6_THRESHOLD 206 75*671ea119Smrg #define SQR_TOOM8_THRESHOLD 333 76*671ea119Smrg 77*671ea119Smrg #define MULMID_TOOM42_THRESHOLD 18 78*671ea119Smrg 79*671ea119Smrg #define MULMOD_BNM1_THRESHOLD 8 80*671ea119Smrg #define SQRMOD_BNM1_THRESHOLD 10 81*671ea119Smrg 82*671ea119Smrg #define MUL_FFT_MODF_THRESHOLD 268 /* k = 5 */ 83*671ea119Smrg #define MUL_FFT_TABLE3 \ 84*671ea119Smrg { { 268, 5}, { 11, 6}, { 6, 5}, { 13, 6}, \ 85*671ea119Smrg { 15, 7}, { 13, 8}, { 7, 7}, { 16, 8}, \ 86*671ea119Smrg { 9, 7}, { 19, 8}, { 11, 7}, { 23, 8}, \ 87*671ea119Smrg { 13, 9}, { 7, 8}, { 15, 7}, { 31, 8}, \ 88*671ea119Smrg { 19, 9}, { 11, 8}, { 27,10}, { 7, 9}, \ 89*671ea119Smrg { 15, 8}, { 33, 9}, { 19, 8}, { 39, 9}, \ 90*671ea119Smrg { 27,10}, { 15, 9}, { 39,10}, { 23, 9}, \ 91*671ea119Smrg { 51,11}, { 15,10}, { 31, 9}, { 71,10}, \ 92*671ea119Smrg { 39, 9}, { 79, 8}, { 159, 7}, { 319, 9}, \ 93*671ea119Smrg { 83,10}, { 47, 9}, { 95, 7}, { 383, 9}, \ 94*671ea119Smrg { 99,10}, { 55,11}, { 31,10}, { 63, 8}, \ 95*671ea119Smrg { 255, 7}, { 511, 9}, { 131,10}, { 71, 9}, \ 96*671ea119Smrg { 143, 8}, { 287, 7}, { 575, 6}, { 1151,10}, \ 97*671ea119Smrg { 79, 8}, { 319, 7}, { 639,10}, { 87, 8}, \ 98*671ea119Smrg { 351,11}, { 47,10}, { 95, 8}, { 383, 7}, \ 99*671ea119Smrg { 767,10}, { 103, 8}, { 415, 7}, { 831, 6}, \ 100*671ea119Smrg { 1663, 9}, { 223, 8}, { 447,12}, { 31,11}, \ 101*671ea119Smrg { 63, 9}, { 255, 8}, { 511, 7}, { 1023, 9}, \ 102*671ea119Smrg { 287, 8}, { 575, 7}, { 1151, 6}, { 2303, 7}, \ 103*671ea119Smrg { 1215,11}, { 79, 9}, { 319, 8}, { 639, 7}, \ 104*671ea119Smrg { 1279, 9}, { 351, 8}, { 703, 7}, { 1407, 6}, \ 105*671ea119Smrg { 2815, 9}, { 383, 8}, { 831, 7}, { 1663, 9}, \ 106*671ea119Smrg { 447, 8}, { 895, 7}, { 1791, 6}, { 3583, 8}, \ 107*671ea119Smrg { 959, 6}, { 3839, 5}, { 7679, 9}, { 511, 8}, \ 108*671ea119Smrg { 1023, 7}, { 2175, 9}, { 575, 8}, { 1151, 7}, \ 109*671ea119Smrg { 2303, 8}, { 1215,10}, { 351, 9}, { 703, 7}, \ 110*671ea119Smrg { 3071, 8}, { 1663, 9}, { 895, 8}, { 1791, 7}, \ 111*671ea119Smrg { 3583, 8}, { 1919, 6}, { 7679, 7}, { 3967, 9}, \ 112*671ea119Smrg { 1023,10}, { 575, 9}, { 1151, 8}, { 2559,10}, \ 113*671ea119Smrg { 703, 8}, { 2815, 9}, { 1471, 7}, { 5887,10}, \ 114*671ea119Smrg { 767,11}, { 415, 9}, { 1791, 8}, { 3583,11}, \ 115*671ea119Smrg { 479,10}, { 959, 8}, { 3967,11}, { 511, 9}, \ 116*671ea119Smrg { 2175,10}, { 1151, 8}, { 4607, 9}, { 2815,10}, \ 117*671ea119Smrg { 1471, 9}, { 2943,11}, { 767,10}, { 1535,11}, \ 118*671ea119Smrg { 831,10}, { 1791,11}, { 959,10}, { 1919, 9}, \ 119*671ea119Smrg { 3839, 8}, { 7679,10}, { 1983,12}, { 511,10}, \ 120*671ea119Smrg { 2047,11}, { 1215,12}, { 639,11}, { 1407,10}, \ 121*671ea119Smrg { 2815,11}, { 1471,12}, { 767,11}, { 1663,12}, \ 122*671ea119Smrg { 895,11}, { 1791,12}, { 959,11}, { 1919,10}, \ 123*671ea119Smrg { 3839,14}, { 255,13}, { 511,12}, { 1023,11}, \ 124*671ea119Smrg { 2047,12}, { 1215,13}, { 639,12}, { 1279,13}, \ 125*671ea119Smrg { 703,12}, { 1407,11}, { 2815,13}, { 767,12}, \ 126*671ea119Smrg { 1535,13}, { 831,12}, { 1663,13}, { 895,12}, \ 127*671ea119Smrg { 1791,11}, { 3583,13}, { 959,12}, { 1919,11}, \ 128*671ea119Smrg { 3839,14}, { 511,13}, { 1023,12}, { 2047,13}, \ 129*671ea119Smrg { 1215,12}, { 2431,14}, { 639,13}, { 1407,12}, \ 130*671ea119Smrg { 2815,13}, { 1471,12}, { 2943,14}, { 767,13}, \ 131*671ea119Smrg { 1535,12}, { 3071,13}, { 1791,12}, { 3583,13}, \ 132*671ea119Smrg { 1919,14}, { 1023,13}, { 2175,14}, { 1151,13}, \ 133*671ea119Smrg { 2431,14}, { 1279,13}, { 2559,15}, { 767,14}, \ 134*671ea119Smrg { 1791,13}, { 3839,15}, { 1023,14}, { 2431,13}, \ 135*671ea119Smrg { 4863,15}, { 1279,14}, { 2943,15}, { 1535,14}, \ 136*671ea119Smrg { 16384,15}, { 32768,16}, { 65536,17}, { 131072,18}, \ 137*671ea119Smrg { 262144,19}, { 524288,20}, {1048576,21}, {2097152,22}, \ 138*671ea119Smrg {4194304,23}, {8388608,24} } 139*671ea119Smrg #define MUL_FFT_TABLE3_SIZE 218 140*671ea119Smrg #define MUL_FFT_THRESHOLD 2688 141*671ea119Smrg 142*671ea119Smrg #define SQR_FFT_MODF_THRESHOLD 236 /* k = 5 */ 143*671ea119Smrg #define SQR_FFT_TABLE3 \ 144*671ea119Smrg { { 236, 5}, { 13, 6}, { 7, 5}, { 15, 6}, \ 145*671ea119Smrg { 15, 7}, { 8, 6}, { 17, 7}, { 13, 8}, \ 146*671ea119Smrg { 7, 7}, { 17, 8}, { 9, 7}, { 20, 8}, \ 147*671ea119Smrg { 11, 7}, { 23, 8}, { 13, 9}, { 7, 8}, \ 148*671ea119Smrg { 19, 9}, { 11, 8}, { 25,10}, { 7, 9}, \ 149*671ea119Smrg { 15, 8}, { 33, 9}, { 19, 8}, { 39, 9}, \ 150*671ea119Smrg { 27,10}, { 15, 9}, { 39,10}, { 23, 9}, \ 151*671ea119Smrg { 47,11}, { 15,10}, { 31, 9}, { 67,10}, \ 152*671ea119Smrg { 39, 9}, { 79, 8}, { 159,10}, { 47, 9}, \ 153*671ea119Smrg { 95, 8}, { 191, 7}, { 383,10}, { 55,11}, \ 154*671ea119Smrg { 31,10}, { 63, 9}, { 127, 8}, { 255, 7}, \ 155*671ea119Smrg { 511,10}, { 71, 9}, { 143, 8}, { 287, 7}, \ 156*671ea119Smrg { 575,10}, { 79, 8}, { 319, 7}, { 639,11}, \ 157*671ea119Smrg { 47,10}, { 95, 8}, { 383, 7}, { 767, 8}, \ 158*671ea119Smrg { 415,12}, { 31,11}, { 63,10}, { 127, 9}, \ 159*671ea119Smrg { 255, 8}, { 543, 9}, { 287, 8}, { 575, 7}, \ 160*671ea119Smrg { 1151, 9}, { 319, 8}, { 639, 9}, { 351, 8}, \ 161*671ea119Smrg { 703, 7}, { 1407, 6}, { 2815,10}, { 191, 9}, \ 162*671ea119Smrg { 383, 8}, { 767, 9}, { 415, 8}, { 831, 7}, \ 163*671ea119Smrg { 1663,10}, { 223, 9}, { 447, 8}, { 895, 7}, \ 164*671ea119Smrg { 1791, 9}, { 479, 8}, { 959,12}, { 63,11}, \ 165*671ea119Smrg { 127, 9}, { 543, 8}, { 1087,10}, { 287, 9}, \ 166*671ea119Smrg { 575, 8}, { 1151,10}, { 319, 9}, { 639,10}, \ 167*671ea119Smrg { 351, 9}, { 703, 8}, { 1407, 7}, { 2815, 8}, \ 168*671ea119Smrg { 1471, 5}, { 11775, 9}, { 767, 8}, { 1535,10}, \ 169*671ea119Smrg { 415, 9}, { 895, 8}, { 1919, 6}, { 7679, 7}, \ 170*671ea119Smrg { 3967,11}, { 255,10}, { 543, 9}, { 1087, 8}, \ 171*671ea119Smrg { 2175,10}, { 575, 9}, { 1151, 8}, { 2431,10}, \ 172*671ea119Smrg { 639, 9}, { 1279,10}, { 703, 9}, { 1407, 8}, \ 173*671ea119Smrg { 2943,11}, { 383,10}, { 767,11}, { 447,10}, \ 174*671ea119Smrg { 895,11}, { 479,10}, { 959, 9}, { 1919, 8}, \ 175*671ea119Smrg { 3839,10}, { 1023, 9}, { 2175,10}, { 1215, 9}, \ 176*671ea119Smrg { 2431,11}, { 703, 9}, { 2815,10}, { 1471,11}, \ 177*671ea119Smrg { 767,10}, { 1663,11}, { 895,10}, { 1791,11}, \ 178*671ea119Smrg { 959, 9}, { 3839,12}, { 511,11}, { 1087,10}, \ 179*671ea119Smrg { 2175,11}, { 1215,10}, { 2431,12}, { 639,11}, \ 180*671ea119Smrg { 1279,12}, { 703,11}, { 1471,12}, { 767,11}, \ 181*671ea119Smrg { 1663,12}, { 895,11}, { 1919,10}, { 3839,13}, \ 182*671ea119Smrg { 511,12}, { 1087,11}, { 2175,12}, { 1215,11}, \ 183*671ea119Smrg { 2431,13}, { 639,12}, { 1279,13}, { 703,12}, \ 184*671ea119Smrg { 1407,13}, { 767,12}, { 1535,13}, { 831,12}, \ 185*671ea119Smrg { 1791,13}, { 1151,12}, { 2303,13}, { 1215,14}, \ 186*671ea119Smrg { 639,12}, { 2559,13}, { 1407,14}, { 767,12}, \ 187*671ea119Smrg { 3071,14}, { 895,13}, { 1919,12}, { 3839,14}, \ 188*671ea119Smrg { 1023,13}, { 2175,14}, { 1151,12}, { 4607,14}, \ 189*671ea119Smrg { 1279,13}, { 2559,14}, { 1407,13}, { 2943,15}, \ 190*671ea119Smrg { 767,14}, { 1663,13}, { 3583,14}, { 1919,15}, \ 191*671ea119Smrg { 1023,14}, { 2047,13}, { 4095,14}, { 2943,15}, \ 192*671ea119Smrg { 1535,14}, { 16384,15}, { 32768,16}, { 65536,17}, \ 193*671ea119Smrg { 131072,18}, { 262144,19}, { 524288,20}, {1048576,21}, \ 194*671ea119Smrg {2097152,22}, {4194304,23}, {8388608,24} } 195*671ea119Smrg #define SQR_FFT_TABLE3_SIZE 203 196*671ea119Smrg #define SQR_FFT_THRESHOLD 2176 197*671ea119Smrg 198*671ea119Smrg #define MULLO_BASECASE_THRESHOLD 0 /* always */ 199*671ea119Smrg #define MULLO_DC_THRESHOLD 33 200*671ea119Smrg #define MULLO_MUL_N_THRESHOLD 5240 201*671ea119Smrg #define SQRLO_BASECASE_THRESHOLD 6 202*671ea119Smrg #define SQRLO_DC_THRESHOLD 45 203*671ea119Smrg #define SQRLO_SQR_THRESHOLD 4265 204*671ea119Smrg 205*671ea119Smrg #define DC_DIV_QR_THRESHOLD 38 206*671ea119Smrg #define DC_DIVAPPR_Q_THRESHOLD 108 207*671ea119Smrg #define DC_BDIV_QR_THRESHOLD 36 208*671ea119Smrg #define DC_BDIV_Q_THRESHOLD 71 209*671ea119Smrg 210*671ea119Smrg #define INV_MULMOD_BNM1_THRESHOLD 14 211*671ea119Smrg #define INV_NEWTON_THRESHOLD 132 212*671ea119Smrg #define INV_APPR_THRESHOLD 124 213*671ea119Smrg 214*671ea119Smrg #define BINV_NEWTON_THRESHOLD 199 215*671ea119Smrg #define REDC_1_TO_REDC_N_THRESHOLD 34 216*671ea119Smrg 217*671ea119Smrg #define MU_DIV_QR_THRESHOLD 979 218*671ea119Smrg #define MU_DIVAPPR_Q_THRESHOLD 979 219*671ea119Smrg #define MUPI_DIV_QR_THRESHOLD 61 220*671ea119Smrg #define MU_BDIV_QR_THRESHOLD 734 221*671ea119Smrg #define MU_BDIV_Q_THRESHOLD 942 222*671ea119Smrg 223*671ea119Smrg #define POWM_SEC_TABLE 6,30,110,579,1730 224*671ea119Smrg 225*671ea119Smrg #define GET_STR_DC_THRESHOLD 12 226*671ea119Smrg #define GET_STR_PRECOMPUTE_THRESHOLD 19 227*671ea119Smrg #define SET_STR_DC_THRESHOLD 458 228*671ea119Smrg #define SET_STR_PRECOMPUTE_THRESHOLD 875 229*671ea119Smrg 230*671ea119Smrg #define FAC_DSC_THRESHOLD 153 231*671ea119Smrg #define FAC_ODD_THRESHOLD 24 232*671ea119Smrg 233*671ea119Smrg #define MATRIX22_STRASSEN_THRESHOLD 15 234*671ea119Smrg #define HGCD2_DIV1_METHOD 1 /* 8.41% faster than 3 */ 235*671ea119Smrg #define HGCD_THRESHOLD 81 236*671ea119Smrg #define HGCD_APPR_THRESHOLD 80 237*671ea119Smrg #define HGCD_REDUCE_THRESHOLD 1494 238*671ea119Smrg #define GCD_DC_THRESHOLD 268 239*671ea119Smrg #define GCDEXT_DC_THRESHOLD 189 240*671ea119Smrg #define JACOBI_BASE_METHOD 1 /* 10.80% faster than 4 */ 241*671ea119Smrg 242*671ea119Smrg /* Tuneup completed successfully, took 96906 seconds */ 243