1169695Skan/* Intel P6/sse2 gmp-mparam.h -- Compiler/machine parameter header file. 2169695Skan 3169695SkanCopyright 1991, 1993, 1994, 1999, 2000, 2001, 2002, 2003, 2008, 2009, 2010 Free 4169695SkanSoftware Foundation, Inc. 5169695Skan 6169695SkanThis file is part of the GNU MP Library. 7169695Skan 8169695SkanThe GNU MP Library is free software; you can redistribute it and/or modify 9169695Skanit under the terms of the GNU Lesser General Public License as published by 10169695Skanthe Free Software Foundation; either version 3 of the License, or (at your 11169695Skanoption) any later version. 12169695Skan 13169695SkanThe GNU MP Library is distributed in the hope that it will be useful, but 14169695SkanWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15169695Skanor FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 16169695SkanLicense for more details. 17169695Skan 18169695SkanYou should have received a copy of the GNU Lesser General Public License 19169695Skanalong with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ 20169695Skan 21169695Skan 22169695Skan#define GMP_LIMB_BITS 32 23169695Skan#define BYTES_PER_MP_LIMB 4 24169695Skan 25169695Skan 26169695Skan/* NOTE: In a fat binary build SQR_TOOM2_THRESHOLD here cannot be more than the 27169695Skan value in mpn/x86/p6/gmp-mparam.h. The latter is used as a hard limit in 28169695Skan mpn/x86/p6/sqr_basecase.asm. */ 29169695Skan 30169695Skan 31169695Skan/* 1867 MHz P6 model 13 */ 32169695Skan 33169695Skan#define MOD_1_NORM_THRESHOLD 4 34169695Skan#define MOD_1_UNNORM_THRESHOLD 6 35169695Skan#define MOD_1N_TO_MOD_1_1_THRESHOLD 9 36169695Skan#define MOD_1U_TO_MOD_1_1_THRESHOLD 6 37169695Skan#define MOD_1_1_TO_MOD_1_2_THRESHOLD 0 /* never mpn_mod_1_1p */ 38169695Skan#define MOD_1_2_TO_MOD_1_4_THRESHOLD 8 39169695Skan#define PREINV_MOD_1_TO_MOD_1_THRESHOLD 15 40169695Skan#define USE_PREINV_DIVREM_1 1 /* native */ 41169695Skan#define DIVEXACT_1_THRESHOLD 0 /* always (native) */ 42169695Skan#define BMOD_1_TO_MOD_1_THRESHOLD 22 43169695Skan 44169695Skan#define MUL_TOOM22_THRESHOLD 20 45169695Skan#define MUL_TOOM33_THRESHOLD 77 46169695Skan#define MUL_TOOM44_THRESHOLD 182 47169695Skan#define MUL_TOOM6H_THRESHOLD 252 48169695Skan#define MUL_TOOM8H_THRESHOLD 381 49169695Skan 50169695Skan#define MUL_TOOM32_TO_TOOM43_THRESHOLD 75 51169695Skan#define MUL_TOOM32_TO_TOOM53_THRESHOLD 122 52169695Skan#define MUL_TOOM42_TO_TOOM53_THRESHOLD 115 53169695Skan#define MUL_TOOM42_TO_TOOM63_THRESHOLD 79 54169695Skan 55169695Skan#define SQR_BASECASE_THRESHOLD 0 /* always (native) */ 56169695Skan#define SQR_TOOM2_THRESHOLD 30 57169695Skan#define SQR_TOOM3_THRESHOLD 101 58169695Skan#define SQR_TOOM4_THRESHOLD 154 59169695Skan#define SQR_TOOM6_THRESHOLD 222 60169695Skan#define SQR_TOOM8_THRESHOLD 547 61169695Skan 62169695Skan#define MULMOD_BNM1_THRESHOLD 13 63169695Skan#define SQRMOD_BNM1_THRESHOLD 18 64169695Skan 65169695Skan#define MUL_FFT_MODF_THRESHOLD 565 /* k = 5 */ 66169695Skan#define MUL_FFT_TABLE3 \ 67169695Skan { { 565, 5}, { 25, 6}, { 13, 5}, { 27, 6}, \ 68169695Skan { 25, 7}, { 13, 6}, { 28, 7}, { 15, 6}, \ 69169695Skan { 31, 7}, { 17, 6}, { 35, 7}, { 27, 8}, \ 70169695Skan { 15, 7}, { 35, 8}, { 19, 7}, { 41, 8}, \ 71169695Skan { 23, 7}, { 47, 8}, { 27, 9}, { 15, 8}, \ 72169695Skan { 31, 7}, { 63, 8}, { 39, 9}, { 23, 5}, \ 73169695Skan { 383, 4}, { 991, 5}, { 511, 6}, { 267, 7}, \ 74169695Skan { 157, 8}, { 91, 9}, { 47, 8}, { 111, 9}, \ 75169695Skan { 63, 8}, { 127, 9}, { 79,10}, { 47, 9}, \ 76169695Skan { 95,11}, { 31,10}, { 63, 9}, { 135,10}, \ 77169695Skan { 79, 9}, { 159,10}, { 95,11}, { 63,10}, \ 78169695Skan { 143, 9}, { 287,10}, { 159,11}, { 95,10}, \ 79169695Skan { 191,12}, { 63,11}, { 127,10}, { 255, 9}, \ 80169695Skan { 511,10}, { 271, 9}, { 543,10}, { 287,11}, \ 81169695Skan { 159,10}, { 335, 9}, { 671,11}, { 191,10}, \ 82169695Skan { 383, 9}, { 767,10}, { 399, 9}, { 799,10}, \ 83169695Skan { 415,11}, { 223,12}, { 127,11}, { 255,10}, \ 84169695Skan { 543, 9}, { 1087,11}, { 287,10}, { 607,11}, \ 85169695Skan { 319,10}, { 671,12}, { 191,11}, { 383,10}, \ 86169695Skan { 799,11}, { 415,10}, { 831,13}, { 127,12}, \ 87169695Skan { 255,11}, { 543,10}, { 1087,11}, { 607,10}, \ 88169695Skan { 1215,12}, { 319,11}, { 671,10}, { 1343,11}, \ 89169695Skan { 735,10}, { 1471,12}, { 383,11}, { 799,10}, \ 90169695Skan { 1599,11}, { 863,12}, { 447,11}, { 959,13}, \ 91169695Skan { 255,12}, { 511,11}, { 1087,12}, { 575,11}, \ 92169695Skan { 1215,12}, { 639,11}, { 1343,12}, { 703,11}, \ 93169695Skan { 1471,13}, { 383,12}, { 831,11}, { 1727,12}, \ 94169695Skan { 959,14}, { 255,13}, { 511,12}, { 1215,13}, \ 95169695Skan { 639,12}, { 1471,11}, { 2943,13}, { 767,12}, \ 96169695Skan { 1727,13}, { 895,12}, { 1919,14}, { 511,13}, \ 97169695Skan { 1023,12}, { 2111,13}, { 1151,12}, { 2431,13}, \ 98169695Skan { 1407,12}, { 2815,14}, { 767,13}, { 1663,12}, \ 99169695Skan { 3455,13}, { 8192,14}, { 16384,15}, { 32768,16} } 100169695Skan#define MUL_FFT_TABLE3_SIZE 132 101169695Skan#define MUL_FFT_THRESHOLD 6784 102169695Skan 103169695Skan#define SQR_FFT_MODF_THRESHOLD 472 /* k = 5 */ 104169695Skan#define SQR_FFT_TABLE3 \ 105169695Skan { { 472, 5}, { 25, 6}, { 13, 5}, { 27, 6}, \ 106169695Skan { 25, 7}, { 13, 6}, { 27, 7}, { 15, 6}, \ 107169695Skan { 31, 7}, { 17, 6}, { 35, 7}, { 27, 8}, \ 108169695Skan { 15, 7}, { 35, 8}, { 19, 7}, { 41, 8}, \ 109169695Skan { 23, 7}, { 49, 8}, { 27, 9}, { 15, 8}, \ 110169695Skan { 39, 9}, { 23, 8}, { 51,10}, { 15, 9}, \ 111169695Skan { 31, 8}, { 63, 4}, { 1023, 8}, { 67, 9}, \ 112169695Skan { 39, 5}, { 639, 4}, { 1471, 6}, { 383, 7}, \ 113169695Skan { 209, 8}, { 119, 9}, { 63, 7}, { 255, 8}, \ 114169695Skan { 139, 9}, { 71, 8}, { 143, 9}, { 79,10}, \ 115169695Skan { 47, 9}, { 95,11}, { 31,10}, { 63, 9}, \ 116169695Skan { 135,10}, { 79, 9}, { 159, 8}, { 319, 9}, \ 117169695Skan { 167,10}, { 95,11}, { 63,10}, { 143, 9}, \ 118169695Skan { 287,10}, { 159,11}, { 95,10}, { 191,12}, \ 119169695Skan { 63,11}, { 127,10}, { 255, 9}, { 543, 8}, \ 120169695Skan { 1087,10}, { 287, 9}, { 575,11}, { 159,10}, \ 121169695Skan { 319, 9}, { 639,10}, { 335, 9}, { 671,10}, \ 122169695Skan { 351, 9}, { 703,11}, { 191,10}, { 383, 9}, \ 123169695Skan { 767,10}, { 399, 9}, { 799,10}, { 415, 9}, \ 124169695Skan { 831,11}, { 223,12}, { 127,11}, { 255,10}, \ 125169695Skan { 543, 9}, { 1087,11}, { 287,10}, { 607, 9}, \ 126169695Skan { 1215,11}, { 319,10}, { 671, 9}, { 1343,11}, \ 127169695Skan { 351,10}, { 703,12}, { 191,11}, { 383,10}, \ 128169695Skan { 799,11}, { 415,10}, { 831,13}, { 127,12}, \ 129169695Skan { 255,11}, { 543,10}, { 1087,11}, { 607,12}, \ 130169695Skan { 319,11}, { 671,10}, { 1343,11}, { 735,12}, \ 131169695Skan { 383,11}, { 799,10}, { 1599,11}, { 863,12}, \ 132169695Skan { 447,11}, { 959,13}, { 255,12}, { 511,11}, \ 133169695Skan { 1087,12}, { 575,11}, { 1215,12}, { 639,11}, \ 134169695Skan { 1343,12}, { 703,11}, { 1471,13}, { 383,12}, \ 135169695Skan { 767,11}, { 1599,12}, { 831,11}, { 1727,12}, \ 136169695Skan { 959,14}, { 255,13}, { 511,12}, { 1215,13}, \ 137169695Skan { 639,12}, { 1471,13}, { 767,12}, { 1727,13}, \ 138169695Skan { 895,12}, { 1919,14}, { 511,13}, { 1023,12}, \ 139169695Skan { 2111,13}, { 1151,12}, { 2431,13}, { 1407,14}, \ 140169695Skan { 767,13}, { 1663,12}, { 3455,13}, { 8192,14}, \ 141169695Skan { 16384,15}, { 32768,16} } 142169695Skan#define SQR_FFT_TABLE3_SIZE 146 143169695Skan#define SQR_FFT_THRESHOLD 5760 144169695Skan 145169695Skan#define MULLO_BASECASE_THRESHOLD 0 /* always */ 146169695Skan#define MULLO_DC_THRESHOLD 34 147169695Skan#define MULLO_MUL_N_THRESHOLD 13463 148169695Skan 149169695Skan#define DC_DIV_QR_THRESHOLD 19 150169695Skan#define DC_DIVAPPR_Q_THRESHOLD 56 151169695Skan#define DC_BDIV_QR_THRESHOLD 60 152169695Skan#define DC_BDIV_Q_THRESHOLD 132 153169695Skan 154169695Skan#define INV_MULMOD_BNM1_THRESHOLD 38 155169695Skan#define INV_NEWTON_THRESHOLD 69 156169695Skan#define INV_APPR_THRESHOLD 65 157169695Skan 158169695Skan#define BINV_NEWTON_THRESHOLD 276 159169695Skan#define REDC_1_TO_REDC_N_THRESHOLD 63 160169695Skan 161169695Skan#define MU_DIV_QR_THRESHOLD 1308 162169695Skan#define MU_DIVAPPR_Q_THRESHOLD 998 163169695Skan#define MUPI_DIV_QR_THRESHOLD 62 164169695Skan#define MU_BDIV_QR_THRESHOLD 1442 165169695Skan#define MU_BDIV_Q_THRESHOLD 1470 166169695Skan 167169695Skan#define MATRIX22_STRASSEN_THRESHOLD 17 168169695Skan#define HGCD_THRESHOLD 60 169169695Skan#define GCD_DC_THRESHOLD 393 170169695Skan#define GCDEXT_DC_THRESHOLD 303 171169695Skan#define JACOBI_BASE_METHOD 1 172169695Skan 173169695Skan#define GET_STR_DC_THRESHOLD 13 174169695Skan#define GET_STR_PRECOMPUTE_THRESHOLD 22 175169695Skan#define SET_STR_DC_THRESHOLD 587 176169695Skan#define SET_STR_PRECOMPUTE_THRESHOLD 983 177169695Skan