113137Speter/* gmp-mparam.h -- Compiler/machine parameter header file.
256626Speter
313137SpeterCopyright 1991, 1993, 1994, 1999, 2000, 2001, 2002, 2003, 2009, 2010 Free
496199SdesSoftware Foundation, Inc.
596199Sdes
613137SpeterThis file is part of the GNU MP Library.
796199Sdes
896199SdesThe GNU MP Library is free software; you can redistribute it and/or modify
996199Sdesit under the terms of the GNU Lesser General Public License as published by
1096199Sdesthe Free Software Foundation; either version 3 of the License, or (at your
1196199Sdesoption) any later version.
1213137Speter
1313137SpeterThe GNU MP Library is distributed in the hope that it will be useful, but
1413137SpeterWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
1513137Speteror FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
1656626SpeterLicense for more details.
1713137Speter
1813137SpeterYou should have received a copy of the GNU Lesser General Public License
1913137Speteralong with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
2096199Sdes
2196199Sdes#define GMP_LIMB_BITS 64
2296199Sdes#define BYTES_PER_MP_LIMB 8
2313137Speter
2456626Speter/* POWER5 (friggms.hpc.ntnu.no) */
2556626Speter
2656626Speter#define MOD_1_NORM_THRESHOLD                 0  /* always */
2756626Speter#define MOD_1_UNNORM_THRESHOLD               0  /* always */
2856626Speter#define MOD_1N_TO_MOD_1_1_THRESHOLD          9
2956626Speter#define MOD_1U_TO_MOD_1_1_THRESHOLD         10
3056626Speter#define MOD_1_1_TO_MOD_1_2_THRESHOLD         0  /* never mpn_mod_1_1p */
3156626Speter#define MOD_1_2_TO_MOD_1_4_THRESHOLD        22
3256626Speter#define PREINV_MOD_1_TO_MOD_1_THRESHOLD     16
3356626Speter#define USE_PREINV_DIVREM_1                  0
3456626Speter#define DIVEXACT_1_THRESHOLD                 0  /* always (native) */
3556626Speter#define BMOD_1_TO_MOD_1_THRESHOLD           59
3650476Speter
3713137Speter#define MUL_TOOM22_THRESHOLD                16
3813137Speter#define MUL_TOOM33_THRESHOLD                56
3913137Speter#define MUL_TOOM44_THRESHOLD               118
4013137Speter#define MUL_TOOM6H_THRESHOLD               206
4113137Speter#define MUL_TOOM8H_THRESHOLD               309
42200035Sed
43200035Sed#define MUL_TOOM32_TO_TOOM43_THRESHOLD      82
44221502Sobrien#define MUL_TOOM32_TO_TOOM53_THRESHOLD      91
45200035Sed#define MUL_TOOM42_TO_TOOM53_THRESHOLD      81
46200035Sed#define MUL_TOOM42_TO_TOOM63_THRESHOLD      88
47200035Sed
48200035Sed#define SQR_BASECASE_THRESHOLD              10
49200035Sed#define SQR_TOOM2_THRESHOLD                 51
50200035Sed#define SQR_TOOM3_THRESHOLD                 78
51230037Sghelmer#define SQR_TOOM4_THRESHOLD                100
52230233Sghelmer#define SQR_TOOM6_THRESHOLD                150
53230233Sghelmer#define SQR_TOOM8_THRESHOLD                309
54230037Sghelmer
55230037Sghelmer#define MULMOD_BNM1_THRESHOLD                5
56200035Sed#define SQRMOD_BNM1_THRESHOLD                7
57200035Sed
58200035Sed#define MUL_FFT_MODF_THRESHOLD             348  /* k = 5 */
59200035Sed#define MUL_FFT_TABLE3                                      \
60200035Sed  { {    348, 5}, {     17, 6}, {      9, 5}, {     19, 6}, \
61200035Sed    {     10, 5}, {     21, 6}, {     21, 7}, {     11, 6}, \
62200035Sed    {     23, 7}, {     12, 6}, {     25, 7}, {     21, 8}, \
63200035Sed    {     11, 7}, {     25, 8}, {     13, 7}, {     27, 8}, \
64200035Sed    {     15, 7}, {     31, 8}, {     21, 9}, {     11, 8}, \
65200035Sed    {     27, 9}, {     15, 8}, {     33, 9}, {     19, 8}, \
66200035Sed    {     39, 9}, {     23, 8}, {     47, 9}, {     27,10}, \
67200035Sed    {     15, 9}, {     39,10}, {     23, 9}, {     51,11}, \
68200035Sed    {     15,10}, {     31, 9}, {     67,10}, {     39, 9}, \
69200035Sed    {     79,10}, {     47, 9}, {     95,10}, {     55,11}, \
70200035Sed    {     31,10}, {     79,11}, {     47,10}, {     95,12}, \
71230233Sghelmer    {     31,11}, {     63,10}, {    127, 9}, {    255,10}, \
72230233Sghelmer    {    135,11}, {     79,10}, {    159, 9}, {    319,11}, \
7368488Smurray    {     95,10}, {    191, 9}, {    383,12}, {     63,11}, \
74230600Sghelmer    {    127,10}, {    255, 9}, {    511,10}, {    271,11}, \
7540040Sjkh    {    143,10}, {    287, 9}, {    575,10}, {    319,12}, \
7640040Sjkh    {     95,11}, {    191,10}, {    383,13}, {     63,12}, \
77230011Sghelmer    {    127,11}, {    255,10}, {    511,11}, {    271,10}, \
78230011Sghelmer    {    543,11}, {    287,10}, {    575, 9}, {   1151,11}, \
7940040Sjkh    {    319,10}, {    639,11}, {    351,10}, {    703,12}, \
8040040Sjkh    {    191,11}, {    383,10}, {    767,11}, {    415,12}, \
81230600Sghelmer    {    223,11}, {    447,13}, {    127,12}, {    255,11}, \
8245392Sbrian    {    511,10}, {   1023,11}, {    543,10}, {   1087,12}, \
83230037Sghelmer    {    287,11}, {    575,10}, {   1151,12}, {    319,11}, \
84229985Sghelmer    {    639,12}, {    351,11}, {    703,13}, {    191,12}, \
85229985Sghelmer    {    383,11}, {    767,12}, {    415,11}, {    831,12}, \
86229985Sghelmer    {    447,11}, {    895,14}, {    127,13}, {    255,12}, \
8713137Speter    {    511,11}, {   1023,12}, {    543,11}, {   1087,10}, \
8813137Speter    {   2175,12}, {    575,11}, {   1151,12}, {    607,13}, \
89229986Sghelmer    {    319,12}, {    639,11}, {   1279,12}, {    671,11}, \
90126299Skientzle    {   1343,12}, {    703,11}, {   1407,13}, {    383,12}, \
91126299Skientzle    {    767,11}, {   1535,12}, {    831,13}, {    447,12}, \
92229985Sghelmer    {    959,11}, {   1919,14}, {    255,13}, {    511,12}, \
9392917Sobrien    {   1087,11}, {   2175,13}, {    575,12}, {   1215,11}, \
9492941Sobrien    {   2431,10}, {   4863,13}, {    639,12}, {   1343,13}, \
95169450Sdes    {    703,12}, {   1407,14}, {    383,13}, {    767,12}, \
9692941Sobrien    {   1535,13}, {    831,12}, {   1663,13}, {    959,12}, \
97229988Sghelmer    {   1919,11}, {   3839,15}, {    255,14}, {    511,13}, \
98229986Sghelmer    {   1087,12}, {   2175,13}, {   1215,12}, {   2431,11}, \
99129677Spjd    {   4863,14}, {    639,13}, {   1343,12}, {   2687,13}, \
100129677Spjd    {   1407,12}, {   2815,13}, {   1471,12}, {   2943,14}, \
101185548Speter    {    767,13}, {   1599,12}, {   3199,13}, {   1663,14}, \
102185548Speter    {    895,13}, {   1919,12}, {   3839,15}, {    511,14}, \
103185548Speter    {   1023,13}, {   2175,14}, {   1151,13}, {   2431,12}, \
104185548Speter    {   4863,14}, {   1279,13}, {   2687,14}, {   1407,13}, \
105221807Sstas    {   2943,15}, {    767,14}, {   1535,13}, {   3199,14}, \
106221807Sstas    {   1663,13}, {   3327,14}, {   1919,13}, {   3839,16}, \
107221807Sstas    {    511,15}, {   1023,14}, {   2431,13}, {   4863,15}, \
108221807Sstas    {   1279,14}, {   2943,12}, {  11775,15}, {   1535,14}, \
109229986Sghelmer    {   3327,15}, {   1791,14}, {  16384,15}, {  32768,16}, \
110229986Sghelmer    {  65536,17}, { 131072,18}, { 262144,19}, { 524288,20}, \
111229985Sghelmer    {1048576,21}, {2097152,22}, {4194304,23}, {8388608,24} }
112229985Sghelmer#define MUL_FFT_TABLE3_SIZE 208
113229988Sghelmer#define MUL_FFT_THRESHOLD                 3712
114230233Sghelmer
115230233Sghelmer#define SQR_FFT_MODF_THRESHOLD             272  /* k = 5 */
116230233Sghelmer#define SQR_FFT_TABLE3                                      \
117230233Sghelmer  { {    272, 5}, {     15, 6}, {      8, 5}, {     17, 6}, \
118230233Sghelmer    {     19, 7}, {     17, 8}, {      9, 7}, {     21, 8}, \
119230233Sghelmer    {     11, 7}, {     24, 8}, {     13, 7}, {     27, 8}, \
120229986Sghelmer    {     15, 7}, {     31, 8}, {     21, 9}, {     11, 8}, \
121229986Sghelmer    {     27, 9}, {     15, 8}, {     33, 9}, {     19, 8}, \
122229988Sghelmer    {     39, 9}, {     23, 8}, {     47, 9}, {     27,10}, \
123230011Sghelmer    {     15, 9}, {     39,10}, {     23, 9}, {     47,11}, \
124229986Sghelmer    {     15,10}, {     31, 9}, {     63,10}, {     47,11}, \
125229986Sghelmer    {     31,10}, {     71, 9}, {    143,10}, {     79,11}, \
126229988Sghelmer    {     47,10}, {     95,12}, {     31,11}, {     63,10}, \
127229985Sghelmer    {    127, 9}, {    255, 8}, {    511, 9}, {    271,10}, \
128229985Sghelmer    {    143,11}, {     79,10}, {    159, 9}, {    319,10}, \
129229988Sghelmer    {    175, 9}, {    351,11}, {     95,10}, {    191, 9}, \
130229988Sghelmer    {    383,10}, {    207, 9}, {    415,12}, {     63,11}, \
131229985Sghelmer    {    127,10}, {    255, 9}, {    511,10}, {    271,11}, \
132229985Sghelmer    {    143,10}, {    287, 9}, {    575,11}, {    159,10}, \
133229985Sghelmer    {    319,11}, {    175,10}, {    351,12}, {     95,11}, \
134155804Sdes    {    191,10}, {    383,11}, {    207,10}, {    415,13}, \
135230600Sghelmer    {     63,12}, {    127,11}, {    255,10}, {    511,11}, \
136230600Sghelmer    {    271,10}, {    543,11}, {    287,10}, {    575,12}, \
137230600Sghelmer    {    159,11}, {    319,10}, {    639,11}, {    351,10}, \
138230600Sghelmer    {    703,12}, {    191,11}, {    383,10}, {    767,11}, \
139230600Sghelmer    {    415,12}, {    223,11}, {    447,10}, {    895,11}, \
140229988Sghelmer    {    479,10}, {    959,12}, {    255,11}, {    511,10}, \
141229988Sghelmer    {   1023,11}, {    543,12}, {    287,11}, {    575,12}, \
14255227Speter    {    319,11}, {    639,12}, {    351,11}, {    703,13}, \
14396199Sdes    {    191,12}, {    383,11}, {    767,12}, {    415,11}, \
14496199Sdes    {    831,12}, {    447,11}, {    895,12}, {    479,11}, \
145230011Sghelmer    {    959,13}, {    255,12}, {    511,11}, {   1023,12}, \
146230011Sghelmer    {    543,11}, {   1087,12}, {    575,13}, {    319,12}, \
147230011Sghelmer    {    639,11}, {   1279,12}, {    703,11}, {   1407,13}, \
148230011Sghelmer    {    383,12}, {    831,13}, {    447,12}, {    959,14}, \
14996199Sdes    {    255,13}, {    511,12}, {   1087,13}, {    575,12}, \
150121193Smarkm    {   1215,13}, {    639,12}, {   1279,13}, {    703,12}, \
15196199Sdes    {   1407,14}, {    383,13}, {    831,12}, {   1663,13}, \
15296199Sdes    {    959,12}, {   1919,15}, {    255,14}, {    511,13}, \
153121193Smarkm    {   1023,12}, {   2047,13}, {   1087,12}, {   2175,13}, \
154229572Sbapt    {   1215,14}, {    639,13}, {   1407,12}, {   2815,14}, \
15596199Sdes    {    767,13}, {   1663,14}, {    895,13}, {   1919,15}, \
15696199Sdes    {    511,14}, {   1023,13}, {   2175,14}, {   1151,13}, \
157230601Sghelmer    {   2431,12}, {   4863,14}, {   1407,13}, {   2815,15}, \
158230601Sghelmer    {    767,14}, {   1663,13}, {   3327,14}, {   1919,13}, \
159230601Sghelmer    {   3839,16}, {    511,15}, {   1023,14}, {   2431,13}, \
160230601Sghelmer    {   4863,15}, {   1279,14}, {   2943,13}, {   5887,12}, \
16196199Sdes    {  11775,15}, {   1535,14}, {   3327,15}, {   1791,14}, \
16296199Sdes    {  16384,15}, {  32768,16}, {  65536,17}, { 131072,18}, \
163149423Spjd    { 262144,19}, { 524288,20}, {1048576,21}, {2097152,22}, \
164178431Sscf    {4194304,23}, {8388608,24} }
165230011Sghelmer#define SQR_FFT_TABLE3_SIZE 190
166230011Sghelmer#define SQR_FFT_THRESHOLD                 2752
167230601Sghelmer
168230601Sghelmer#define MULLO_BASECASE_THRESHOLD             5
169244736Sbapt#define MULLO_DC_THRESHOLD                  25
170247919Sdb#define MULLO_MUL_N_THRESHOLD             6633
171229986Sghelmer
172228545Sbapt#define DC_DIV_QR_THRESHOLD                 29
173228545Sbapt#define DC_DIVAPPR_Q_THRESHOLD             102
174228545Sbapt#define DC_BDIV_QR_THRESHOLD                47
175229986Sghelmer#define DC_BDIV_Q_THRESHOLD                112
176228545Sbapt
177230601Sghelmer#define INV_MULMOD_BNM1_THRESHOLD           76
178230601Sghelmer#define INV_NEWTON_THRESHOLD               129
179228545Sbapt#define INV_APPR_THRESHOLD                 109
180178431Sscf
181178431Sscf#define BINV_NEWTON_THRESHOLD              197
182207736Smckusick#define REDC_1_TO_REDC_N_THRESHOLD          54
183229985Sghelmer
184207736Smckusick#define MU_DIV_QR_THRESHOLD                872
185229988Sghelmer#define MU_DIVAPPR_Q_THRESHOLD             855
186229988Sghelmer#define MUPI_DIV_QR_THRESHOLD               53
187229988Sghelmer#define MU_BDIV_QR_THRESHOLD               792
188229988Sghelmer#define MU_BDIV_Q_THRESHOLD                942
189229988Sghelmer
190229988Sghelmer#define MATRIX22_STRASSEN_THRESHOLD         15
191229988Sghelmer#define HGCD_THRESHOLD                      86
192229988Sghelmer#define GCD_DC_THRESHOLD                   241
193229988Sghelmer#define GCDEXT_DC_THRESHOLD                229
194229988Sghelmer#define JACOBI_BASE_METHOD                   1
195229988Sghelmer
196229988Sghelmer#define GET_STR_DC_THRESHOLD                12
197229988Sghelmer#define GET_STR_PRECOMPUTE_THRESHOLD        21
198229988Sghelmer#define SET_STR_DC_THRESHOLD               532
199229988Sghelmer#define SET_STR_PRECOMPUTE_THRESHOLD      1655
200207736Smckusick