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