14a1767b4Smrg /* ultrasparc3/4 gmp-mparam.h -- Compiler/machine parameter header file. 24a1767b4Smrg 3*f81b1c5bSmrg Copyright 1991, 1993, 1994, 1999-2002, 2004, 2006, 2008-2010, 2014, 2015 Free 4*f81b1c5bSmrg Software Foundation, Inc. 54a1767b4Smrg 64a1767b4Smrg This file is part of the GNU MP Library. 74a1767b4Smrg 84a1767b4Smrg The GNU MP Library is free software; you can redistribute it and/or modify 9*f81b1c5bSmrg it under the terms of either: 10*f81b1c5bSmrg 11*f81b1c5bSmrg * the GNU Lesser General Public License as published by the Free 12*f81b1c5bSmrg Software Foundation; either version 3 of the License, or (at your 134a1767b4Smrg option) any later version. 144a1767b4Smrg 15*f81b1c5bSmrg or 16*f81b1c5bSmrg 17*f81b1c5bSmrg * the GNU General Public License as published by the Free Software 18*f81b1c5bSmrg Foundation; either version 2 of the License, or (at your option) any 19*f81b1c5bSmrg later version. 20*f81b1c5bSmrg 21*f81b1c5bSmrg or both in parallel, as here. 22*f81b1c5bSmrg 234a1767b4Smrg The GNU MP Library is distributed in the hope that it will be useful, but 244a1767b4Smrg WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 25*f81b1c5bSmrg or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 26*f81b1c5bSmrg for more details. 274a1767b4Smrg 28*f81b1c5bSmrg You should have received copies of the GNU General Public License and the 29*f81b1c5bSmrg GNU Lesser General Public License along with the GNU MP Library. If not, 30*f81b1c5bSmrg see https://www.gnu.org/licenses/. */ 314a1767b4Smrg 324a1767b4Smrg #define GMP_LIMB_BITS 64 33*f81b1c5bSmrg #define GMP_LIMB_BYTES 8 344a1767b4Smrg 354a1767b4Smrg /* 1593 MHz ultrasparc3 running Solaris 10 (swift.nada.kth.se) */ 36*f81b1c5bSmrg /* FFT tuning limit = 100 M */ 37*f81b1c5bSmrg /* Generated by tuneup.c, 2015-10-09, gcc 3.4 */ 384a1767b4Smrg 394a1767b4Smrg #define DIVREM_1_NORM_THRESHOLD 0 /* always */ 404a1767b4Smrg #define DIVREM_1_UNNORM_THRESHOLD 0 /* always */ 41d25e02daSmrg #define MOD_1_1P_METHOD 2 424a1767b4Smrg #define MOD_1_NORM_THRESHOLD 0 /* always */ 434a1767b4Smrg #define MOD_1_UNNORM_THRESHOLD 0 /* always */ 44*f81b1c5bSmrg #define MOD_1N_TO_MOD_1_1_THRESHOLD 7 45d25e02daSmrg #define MOD_1U_TO_MOD_1_1_THRESHOLD 5 46*f81b1c5bSmrg #define MOD_1_1_TO_MOD_1_2_THRESHOLD 22 47d25e02daSmrg #define MOD_1_2_TO_MOD_1_4_THRESHOLD 0 /* never mpn_mod_1s_2p */ 48d25e02daSmrg #define PREINV_MOD_1_TO_MOD_1_THRESHOLD 29 494a1767b4Smrg #define USE_PREINV_DIVREM_1 1 50*f81b1c5bSmrg #define DIV_QR_1N_PI1_METHOD 1 51*f81b1c5bSmrg #define DIV_QR_1_NORM_THRESHOLD 2 52*f81b1c5bSmrg #define DIV_QR_1_UNNORM_THRESHOLD 1 53d25e02daSmrg #define DIV_QR_2_PI2_THRESHOLD MP_SIZE_T_MAX /* never */ 544a1767b4Smrg #define DIVEXACT_1_THRESHOLD 0 /* always */ 554a1767b4Smrg #define BMOD_1_TO_MOD_1_THRESHOLD MP_SIZE_T_MAX /* never */ 564a1767b4Smrg 57*f81b1c5bSmrg #define MUL_TOOM22_THRESHOLD 28 584a1767b4Smrg #define MUL_TOOM33_THRESHOLD 93 59*f81b1c5bSmrg #define MUL_TOOM44_THRESHOLD 142 604a1767b4Smrg #define MUL_TOOM6H_THRESHOLD 165 61d25e02daSmrg #define MUL_TOOM8H_THRESHOLD 278 624a1767b4Smrg 63*f81b1c5bSmrg #define MUL_TOOM32_TO_TOOM43_THRESHOLD 93 64*f81b1c5bSmrg #define MUL_TOOM32_TO_TOOM53_THRESHOLD 114 65*f81b1c5bSmrg #define MUL_TOOM42_TO_TOOM53_THRESHOLD 88 66*f81b1c5bSmrg #define MUL_TOOM42_TO_TOOM63_THRESHOLD 50 67d25e02daSmrg #define MUL_TOOM43_TO_TOOM54_THRESHOLD 67 684a1767b4Smrg 69*f81b1c5bSmrg #define SQR_BASECASE_THRESHOLD 7 70*f81b1c5bSmrg #define SQR_TOOM2_THRESHOLD 70 71*f81b1c5bSmrg #define SQR_TOOM3_THRESHOLD 101 72d25e02daSmrg #define SQR_TOOM4_THRESHOLD 184 73d25e02daSmrg #define SQR_TOOM6_THRESHOLD 0 /* always */ 744a1767b4Smrg #define SQR_TOOM8_THRESHOLD 339 754a1767b4Smrg 76d25e02daSmrg #define MULMID_TOOM42_THRESHOLD 40 77d25e02daSmrg 78*f81b1c5bSmrg #define MULMOD_BNM1_THRESHOLD 14 794a1767b4Smrg #define SQRMOD_BNM1_THRESHOLD 9 804a1767b4Smrg 814a1767b4Smrg #define MUL_FFT_MODF_THRESHOLD 212 /* k = 5 */ 824a1767b4Smrg #define MUL_FFT_TABLE3 \ 834a1767b4Smrg { { 212, 5}, { 13, 6}, { 17, 7}, { 9, 6}, \ 844a1767b4Smrg { 19, 7}, { 17, 8}, { 9, 7}, { 20, 8}, \ 85*f81b1c5bSmrg { 11, 7}, { 23, 8}, { 13, 9}, { 7, 8}, \ 864a1767b4Smrg { 19, 9}, { 11, 8}, { 25,10}, { 7, 9}, \ 874a1767b4Smrg { 15, 8}, { 33, 9}, { 19, 8}, { 39, 9}, \ 884a1767b4Smrg { 23, 8}, { 47, 9}, { 27,10}, { 15, 9}, \ 894a1767b4Smrg { 39,10}, { 23, 9}, { 47,11}, { 15,10}, \ 90*f81b1c5bSmrg { 31, 9}, { 63, 8}, { 127, 7}, { 255, 9}, \ 91*f81b1c5bSmrg { 67,10}, { 39, 9}, { 79, 8}, { 159, 7}, \ 92*f81b1c5bSmrg { 319, 9}, { 83,10}, { 47, 9}, { 95, 8}, \ 93*f81b1c5bSmrg { 191, 7}, { 383,10}, { 55,11}, { 31,10}, \ 94*f81b1c5bSmrg { 63, 9}, { 127, 8}, { 255, 7}, { 511,10}, \ 954a1767b4Smrg { 71, 9}, { 143, 8}, { 287,10}, { 79, 9}, \ 96*f81b1c5bSmrg { 159, 8}, { 319, 9}, { 175, 8}, { 351,11}, \ 97*f81b1c5bSmrg { 47,10}, { 95, 9}, { 191, 8}, { 383, 7}, \ 98*f81b1c5bSmrg { 767,10}, { 103,12}, { 31,11}, { 63,10}, \ 99*f81b1c5bSmrg { 127, 9}, { 287,11}, { 79,10}, { 159, 9}, \ 100*f81b1c5bSmrg { 319, 8}, { 639,10}, { 175, 9}, { 351, 8}, \ 101*f81b1c5bSmrg { 703,11}, { 95,10}, { 207, 9}, { 415,11}, \ 102*f81b1c5bSmrg { 111,10}, { 223, 9}, { 479,12}, { 63,11}, \ 103*f81b1c5bSmrg { 127,10}, { 255,11}, { 143,10}, { 287, 9}, \ 104*f81b1c5bSmrg { 575,10}, { 319, 9}, { 639,11}, { 175,10}, \ 105*f81b1c5bSmrg { 351,11}, { 191,10}, { 383,11}, { 207,10}, \ 1064a1767b4Smrg { 415,11}, { 223,10}, { 447,13}, { 63,12}, \ 107*f81b1c5bSmrg { 127,11}, { 287,10}, { 575,11}, { 319,10}, \ 108*f81b1c5bSmrg { 703,12}, { 191,11}, { 383,12}, { 223,11}, \ 109*f81b1c5bSmrg { 447,13}, { 127,12}, { 287,11}, { 575,12}, \ 110*f81b1c5bSmrg { 351,13}, { 191,12}, { 479,14}, { 127,13}, \ 111*f81b1c5bSmrg { 255,12}, { 575,13}, { 319,12}, { 703,13}, \ 112*f81b1c5bSmrg { 383,12}, { 767,13}, { 447,12}, { 895,14}, \ 113*f81b1c5bSmrg { 255,13}, { 511,12}, { 1023,13}, { 575,12}, \ 114*f81b1c5bSmrg { 1151,13}, { 703,14}, { 383,13}, { 831,12}, \ 115*f81b1c5bSmrg { 1663,13}, { 895,15}, { 255,14}, { 511,13}, \ 116*f81b1c5bSmrg { 1151,14}, { 639,13}, { 1407,12}, { 2815,14}, \ 117*f81b1c5bSmrg { 767,13}, { 1663,14}, { 895,13}, { 1791,15}, \ 118*f81b1c5bSmrg { 511,14}, { 1023,13}, { 2047,14}, { 1151,13}, \ 119*f81b1c5bSmrg { 2303,14}, { 1407,13}, { 2815,15}, { 767,14}, \ 1204a1767b4Smrg { 1791,16}, { 511,15}, { 1023,14}, { 2303,15}, \ 1214a1767b4Smrg { 1279,14}, { 2815,15}, { 1535,14}, { 3199,15}, \ 122*f81b1c5bSmrg { 1791,16}, { 1023,15}, { 2047,14}, { 4223,15}, \ 123*f81b1c5bSmrg { 2303,14}, { 4863,15}, { 2815,16}, { 65536,17}, \ 124*f81b1c5bSmrg { 131072,18}, { 262144,19}, { 524288,20}, {1048576,21}, \ 125*f81b1c5bSmrg {2097152,22}, {4194304,23}, {8388608,24} } 126*f81b1c5bSmrg #define MUL_FFT_TABLE3_SIZE 171 127*f81b1c5bSmrg #define MUL_FFT_THRESHOLD 2240 1284a1767b4Smrg 129*f81b1c5bSmrg #define SQR_FFT_MODF_THRESHOLD 244 /* k = 5 */ 1304a1767b4Smrg #define SQR_FFT_TABLE3 \ 131*f81b1c5bSmrg { { 244, 5}, { 8, 4}, { 17, 5}, { 15, 6}, \ 132*f81b1c5bSmrg { 8, 5}, { 17, 6}, { 17, 7}, { 9, 6}, \ 133*f81b1c5bSmrg { 19, 7}, { 17, 8}, { 9, 7}, { 20, 8}, \ 134*f81b1c5bSmrg { 11, 7}, { 23, 8}, { 13, 9}, { 7, 8}, \ 135*f81b1c5bSmrg { 19, 9}, { 11, 8}, { 25,10}, { 7, 9}, \ 136*f81b1c5bSmrg { 15, 8}, { 31, 9}, { 19, 8}, { 39, 9}, \ 137*f81b1c5bSmrg { 27,10}, { 15, 9}, { 39,10}, { 23, 9}, \ 138*f81b1c5bSmrg { 47,11}, { 15,10}, { 31, 9}, { 67,10}, \ 139*f81b1c5bSmrg { 39, 9}, { 79, 8}, { 159,10}, { 47, 9}, \ 140*f81b1c5bSmrg { 95,10}, { 55,11}, { 31,10}, { 63, 9}, \ 1414a1767b4Smrg { 127, 8}, { 255,10}, { 71, 9}, { 143, 8}, \ 142*f81b1c5bSmrg { 287, 7}, { 575,10}, { 79, 9}, { 159,11}, \ 143*f81b1c5bSmrg { 47, 9}, { 191, 8}, { 383, 7}, { 767, 9}, \ 144*f81b1c5bSmrg { 207,12}, { 31,11}, { 63,10}, { 127, 9}, \ 145*f81b1c5bSmrg { 255, 8}, { 511,10}, { 135, 9}, { 271,10}, \ 146*f81b1c5bSmrg { 143, 9}, { 287,11}, { 79,10}, { 159, 9}, \ 147*f81b1c5bSmrg { 319, 8}, { 639,10}, { 175, 9}, { 351, 8}, \ 148*f81b1c5bSmrg { 703, 7}, { 1407,11}, { 95,10}, { 191, 9}, \ 149*f81b1c5bSmrg { 383, 8}, { 767,10}, { 207, 9}, { 415,10}, \ 150*f81b1c5bSmrg { 223, 9}, { 447,12}, { 63,11}, { 127,10}, \ 151*f81b1c5bSmrg { 271, 9}, { 543,10}, { 287, 9}, { 575, 8}, \ 152*f81b1c5bSmrg { 1151,11}, { 159,10}, { 319, 9}, { 639,10}, \ 153*f81b1c5bSmrg { 351, 9}, { 703, 8}, { 1407, 7}, { 2815,11}, \ 154*f81b1c5bSmrg { 207,10}, { 415, 9}, { 831,11}, { 223,10}, \ 155*f81b1c5bSmrg { 447, 9}, { 895,13}, { 63,11}, { 271,10}, \ 156*f81b1c5bSmrg { 543,11}, { 287,12}, { 159,11}, { 351,10}, \ 1574a1767b4Smrg { 703,12}, { 191,11}, { 415,10}, { 831,12}, \ 158*f81b1c5bSmrg { 223,13}, { 127,12}, { 255,11}, { 511,10}, \ 159*f81b1c5bSmrg { 1023,11}, { 543,12}, { 287,11}, { 607,12}, \ 160*f81b1c5bSmrg { 319,11}, { 639,12}, { 415,11}, { 895,12}, \ 161*f81b1c5bSmrg { 479,14}, { 127,13}, { 255,12}, { 543,11}, \ 162*f81b1c5bSmrg { 1087,12}, { 575,11}, { 1151,13}, { 319,12}, \ 163*f81b1c5bSmrg { 639,11}, { 1279,12}, { 703,10}, { 2815,12}, \ 164*f81b1c5bSmrg { 831,11}, { 1663,13}, { 447,12}, { 959,14}, \ 165*f81b1c5bSmrg { 255,13}, { 511,12}, { 1087,13}, { 703,12}, \ 166*f81b1c5bSmrg { 1407,14}, { 383,13}, { 767,12}, { 1535,13}, \ 167*f81b1c5bSmrg { 895,15}, { 255,14}, { 511,13}, { 1215,14}, \ 168*f81b1c5bSmrg { 639,13}, { 1279,14}, { 767,13}, { 1663,14}, \ 169*f81b1c5bSmrg { 895,13}, { 1919,15}, { 511,14}, { 1023,13}, \ 170*f81b1c5bSmrg { 2175,14}, { 1151,13}, { 2431,14}, { 1407,15}, \ 1714a1767b4Smrg { 767,14}, { 1791,16}, { 511,15}, { 1023,14}, \ 1724a1767b4Smrg { 2303,15}, { 1279,14}, { 2815,15}, { 1535,14}, \ 173*f81b1c5bSmrg { 3199,15}, { 1791,16}, { 1023,15}, { 2047,14}, \ 174*f81b1c5bSmrg { 4351,15}, { 2303,14}, { 4863,15}, { 2815,16}, \ 175*f81b1c5bSmrg { 65536,17}, { 131072,18}, { 262144,19}, { 524288,20}, \ 176*f81b1c5bSmrg {1048576,21}, {2097152,22}, {4194304,23}, {8388608,24} } 177*f81b1c5bSmrg #define SQR_FFT_TABLE3_SIZE 184 178d25e02daSmrg #define SQR_FFT_THRESHOLD 1728 1794a1767b4Smrg 180*f81b1c5bSmrg #define MULLO_BASECASE_THRESHOLD 0 /* always */ 181*f81b1c5bSmrg #define MULLO_DC_THRESHOLD 29 182*f81b1c5bSmrg #define MULLO_MUL_N_THRESHOLD 4392 183*f81b1c5bSmrg #define SQRLO_BASECASE_THRESHOLD 2 184*f81b1c5bSmrg #define SQRLO_DC_THRESHOLD 63 185*f81b1c5bSmrg #define SQRLO_SQR_THRESHOLD 3176 1864a1767b4Smrg 1874a1767b4Smrg #define DC_DIV_QR_THRESHOLD 16 188*f81b1c5bSmrg #define DC_DIVAPPR_Q_THRESHOLD 64 189*f81b1c5bSmrg #define DC_BDIV_QR_THRESHOLD 30 190d25e02daSmrg #define DC_BDIV_Q_THRESHOLD 86 1914a1767b4Smrg 1924a1767b4Smrg #define INV_MULMOD_BNM1_THRESHOLD 58 193*f81b1c5bSmrg #define INV_NEWTON_THRESHOLD 17 194*f81b1c5bSmrg #define INV_APPR_THRESHOLD 15 1954a1767b4Smrg 196*f81b1c5bSmrg #define BINV_NEWTON_THRESHOLD 109 197d25e02daSmrg #define REDC_1_TO_REDC_2_THRESHOLD 0 /* always */ 198*f81b1c5bSmrg #define REDC_2_TO_REDC_N_THRESHOLD 117 1994a1767b4Smrg 200d25e02daSmrg #define MU_DIV_QR_THRESHOLD 618 201*f81b1c5bSmrg #define MU_DIVAPPR_Q_THRESHOLD 618 2024a1767b4Smrg #define MUPI_DIV_QR_THRESHOLD 0 /* always */ 203*f81b1c5bSmrg #define MU_BDIV_QR_THRESHOLD 680 204*f81b1c5bSmrg #define MU_BDIV_Q_THRESHOLD 807 205d25e02daSmrg 206*f81b1c5bSmrg #define POWM_SEC_TABLE 3,22,102,579,1555 2074a1767b4Smrg 208*f81b1c5bSmrg #define GET_STR_DC_THRESHOLD 20 209d25e02daSmrg #define GET_STR_PRECOMPUTE_THRESHOLD 28 210*f81b1c5bSmrg #define SET_STR_DC_THRESHOLD 381 211*f81b1c5bSmrg #define SET_STR_PRECOMPUTE_THRESHOLD 1042 212d25e02daSmrg 213d25e02daSmrg #define FAC_DSC_THRESHOLD 462 214d25e02daSmrg #define FAC_ODD_THRESHOLD 0 /* always */ 215*f81b1c5bSmrg 216*f81b1c5bSmrg #define MATRIX22_STRASSEN_THRESHOLD 12 217*f81b1c5bSmrg #define HGCD_THRESHOLD 45 218*f81b1c5bSmrg #define HGCD_APPR_THRESHOLD 50 219*f81b1c5bSmrg #define HGCD_REDUCE_THRESHOLD 1094 220*f81b1c5bSmrg #define GCD_DC_THRESHOLD 126 221*f81b1c5bSmrg #define GCDEXT_DC_THRESHOLD 132 222*f81b1c5bSmrg #define JACOBI_BASE_METHOD 4 223