1 /* gmp-mparam.h -- Compiler/machine parameter header file.
2 
3 Copyright 2019 Free Software Foundation, Inc.
4 
5 This file is part of the GNU MP Library.
6 
7 The GNU MP Library is free software; you can redistribute it and/or modify
8 it under the terms of either:
9 
10   * the GNU Lesser General Public License as published by the Free
11     Software Foundation; either version 3 of the License, or (at your
12     option) any later version.
13 
14 or
15 
16   * the GNU General Public License as published by the Free Software
17     Foundation; either version 2 of the License, or (at your option) any
18     later version.
19 
20 or both in parallel, as here.
21 
22 The GNU MP Library is distributed in the hope that it will be useful, but
23 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
24 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
25 for more details.
26 
27 You should have received copies of the GNU General Public License and the
28 GNU Lesser General Public License along with the GNU MP Library.  If not,
29 see https://www.gnu.org/licenses/.  */
30 
31 #define GMP_LIMB_BITS 32
32 #define GMP_LIMB_BYTES 4
33 
34 /* 900 MHz Cortex-A7 (raspberry pi2) */
35 /* FFT tuning limit = 21,559,921 */
36 /* Generated by tuneup.c, 2019-10-22, gcc 8.3 */
37 
38 #define MOD_1_NORM_THRESHOLD                 0  /* always */
39 #define MOD_1_UNNORM_THRESHOLD               0  /* always */
40 #define MOD_1N_TO_MOD_1_1_THRESHOLD          7
41 #define MOD_1U_TO_MOD_1_1_THRESHOLD          8
42 #define MOD_1_1_TO_MOD_1_2_THRESHOLD         0  /* never mpn_mod_1_1p */
43 #define MOD_1_2_TO_MOD_1_4_THRESHOLD     MP_SIZE_T_MAX
44 #define PREINV_MOD_1_TO_MOD_1_THRESHOLD     18
45 #define USE_PREINV_DIVREM_1                  1  /* native */
46 #define DIV_QR_1N_PI1_METHOD                 1  /* 64.16% faster than 2 */
47 #define DIV_QR_1_NORM_THRESHOLD          MP_SIZE_T_MAX  /* never */
48 #define DIV_QR_1_UNNORM_THRESHOLD        MP_SIZE_T_MAX  /* never */
49 #define DIV_QR_2_PI2_THRESHOLD           MP_SIZE_T_MAX  /* never */
50 #define DIVEXACT_1_THRESHOLD                 0  /* always (native) */
51 #define BMOD_1_TO_MOD_1_THRESHOLD           48
52 
53 #define DIV_1_VS_MUL_1_PERCENT             216
54 
55 #define MUL_TOOM22_THRESHOLD                39
56 #define MUL_TOOM33_THRESHOLD               129
57 #define MUL_TOOM44_THRESHOLD               196
58 #define MUL_TOOM6H_THRESHOLD               327
59 #define MUL_TOOM8H_THRESHOLD               478
60 
61 #define MUL_TOOM32_TO_TOOM43_THRESHOLD     129
62 #define MUL_TOOM32_TO_TOOM53_THRESHOLD     183
63 #define MUL_TOOM42_TO_TOOM53_THRESHOLD     132
64 #define MUL_TOOM42_TO_TOOM63_THRESHOLD     144
65 #define MUL_TOOM43_TO_TOOM54_THRESHOLD     190
66 
67 #define SQR_BASECASE_THRESHOLD               0  /* always (native) */
68 #define SQR_TOOM2_THRESHOLD                 52
69 #define SQR_TOOM3_THRESHOLD                162
70 #define SQR_TOOM4_THRESHOLD                268
71 #define SQR_TOOM6_THRESHOLD                399
72 #define SQR_TOOM8_THRESHOLD                547
73 
74 #define MULMID_TOOM42_THRESHOLD             50
75 
76 #define MULMOD_BNM1_THRESHOLD               21
77 #define SQRMOD_BNM1_THRESHOLD               25
78 
79 #define MUL_FFT_MODF_THRESHOLD             636  /* k = 5 */
80 #define MUL_FFT_TABLE3                                      \
81   { {    636, 5}, {     28, 6}, {     15, 5}, {     31, 6}, \
82     {     29, 7}, {     15, 6}, {     33, 7}, {     17, 6}, \
83     {     35, 7}, {     19, 6}, {     39, 7}, {     29, 8}, \
84     {     15, 7}, {     35, 8}, {     19, 7}, {     43, 8}, \
85     {     23, 7}, {     49, 8}, {     27, 7}, {     55, 8}, \
86     {     31, 7}, {     63, 8}, {     43, 9}, {     23, 8}, \
87     {     55, 9}, {     31, 8}, {     67, 9}, {     39, 8}, \
88     {     83, 9}, {     47, 8}, {     95, 9}, {     55,10}, \
89     {     31, 9}, {     79,10}, {     47, 9}, {    103,11}, \
90     {     31,10}, {     63, 9}, {    135,10}, {     79, 9}, \
91     {    159,10}, {     95, 9}, {    191,10}, {    111,11}, \
92     {     63,10}, {    159,11}, {     95,10}, {    191,12}, \
93     {     63,11}, {    127,10}, {    255, 9}, {    511,10}, \
94     {    271, 9}, {    543,11}, {    159,10}, {    319, 9}, \
95     {    639,10}, {    335, 9}, {    671,10}, {    351,11}, \
96     {    191,10}, {    383, 9}, {    767,10}, {    399, 9}, \
97     {    799,10}, {    415,11}, {    223,12}, {    127,11}, \
98     {    255,10}, {    511, 9}, {   1023,10}, {    543,11}, \
99     {    287,10}, {    607,11}, {    319,10}, {    671,11}, \
100     {    351,12}, {    191,11}, {    383,10}, {    799,11}, \
101     {    415,10}, {    831,13}, {    127,12}, {    255,11}, \
102     {    511,10}, {   1023,11}, {    543,10}, {   1087,11}, \
103     {    607,12}, {    319,11}, {    735,12}, {    383,11}, \
104     {    863,12}, {    447,11}, {    959,13}, {    255,12}, \
105     {    511,11}, {   1087,12}, {    575,11}, {   1215,12}, \
106     {    639,11}, {   1279,12}, {    703,13}, {    383,12}, \
107     {    767,11}, {   1599,12}, {    959,14}, {    255,13}, \
108     {    511,12}, {   1215,13}, {    639,12}, {   1471,13}, \
109     {    767,12}, {   1663,13}, {    895,12}, {   1855,14}, \
110     {    511,13}, {   1023,12}, {   2111,13}, {   1151,12}, \
111     {   2431,13}, {   1407,14}, {    767,13}, {   1663,12}, \
112     {   3327,13}, {   1791,15}, {    511,14}, {   1023,13}, \
113     {   2431,14}, {   1279,13}, {   8192,14}, {  16384,15}, \
114     {  32768,16} }
115 #define MUL_FFT_TABLE3_SIZE 133
116 #define MUL_FFT_THRESHOLD                 6784
117 
118 #define SQR_FFT_MODF_THRESHOLD             535  /* k = 5 */
119 #define SQR_FFT_TABLE3                                      \
120   { {    535, 5}, {     25, 6}, {     13, 5}, {     28, 6}, \
121     {     15, 5}, {     31, 6}, {     29, 7}, {     15, 6}, \
122     {     33, 7}, {     17, 6}, {     36, 7}, {     19, 6}, \
123     {     39, 7}, {     29, 8}, {     15, 7}, {     37, 8}, \
124     {     19, 7}, {     43, 8}, {     23, 7}, {     49, 8}, \
125     {     27, 7}, {     55, 8}, {     31, 7}, {     63, 8}, \
126     {     43, 9}, {     23, 8}, {     55, 9}, {     31, 8}, \
127     {     67, 9}, {     39, 8}, {     79, 9}, {     47, 8}, \
128     {     95, 9}, {     55,10}, {     31, 9}, {     79,10}, \
129     {     47, 9}, {    103,11}, {     31,10}, {     63, 9}, \
130     {    135,10}, {     79, 9}, {    159,10}, {     95, 9}, \
131     {    191,10}, {    111,11}, {     63,10}, {    143, 9}, \
132     {    287,10}, {    159,11}, {     95,10}, {    191,12}, \
133     {     63,11}, {    127,10}, {    255, 9}, {    511,10}, \
134     {    271, 9}, {    543,10}, {    287,11}, {    159,10}, \
135     {    319, 9}, {    639,10}, {    335, 9}, {    671,10}, \
136     {    351,11}, {    191,10}, {    383, 9}, {    767,10}, \
137     {    399, 9}, {    799,10}, {    415, 9}, {    831,11}, \
138     {    223,12}, {    127,10}, {    543,11}, {    287,10}, \
139     {    607,11}, {    319,10}, {    671,11}, {    351,10}, \
140     {    703,12}, {    191,11}, {    383,10}, {    799,11}, \
141     {    415,10}, {    831,13}, {    127,11}, {    511,10}, \
142     {   1023,11}, {    543,10}, {   1087,11}, {    607,12}, \
143     {    319,11}, {    735,12}, {    383,11}, {    863,12}, \
144     {    447,11}, {    991,12}, {    511,11}, {   1087,12}, \
145     {    575,11}, {   1215,12}, {    639,11}, {   1279,12}, \
146     {    703,13}, {    383,12}, {    767,11}, {   1535,12}, \
147     {    831,11}, {   1663,12}, {    959,13}, {    511,12}, \
148     {   1215,13}, {    639,12}, {   1471,13}, {    767,12}, \
149     {   1663,13}, {    895,12}, {   1855,14}, {    511,13}, \
150     {   1023,12}, {   2111,13}, {   1151,12}, {   2431,13}, \
151     {   1407,14}, {    767,13}, {   1791,15}, {    511,14}, \
152     {   1023,13}, {   2431,14}, {   1279,13}, {   8192,14}, \
153     {  16384,15}, {  32768,16} }
154 #define SQR_FFT_TABLE3_SIZE 134
155 #define SQR_FFT_THRESHOLD                 4736
156 
157 #define MULLO_BASECASE_THRESHOLD             0  /* always */
158 #define MULLO_DC_THRESHOLD                  27
159 #define MULLO_MUL_N_THRESHOLD            13463
160 #define SQRLO_BASECASE_THRESHOLD             5
161 #define SQRLO_DC_THRESHOLD                  31
162 #define SQRLO_SQR_THRESHOLD               9449
163 
164 #define DC_DIV_QR_THRESHOLD                 28
165 #define DC_DIVAPPR_Q_THRESHOLD              90
166 #define DC_BDIV_QR_THRESHOLD                32
167 #define DC_BDIV_Q_THRESHOLD                110
168 
169 #define INV_MULMOD_BNM1_THRESHOLD           78
170 #define INV_NEWTON_THRESHOLD               134
171 #define INV_APPR_THRESHOLD                  98
172 
173 #define BINV_NEWTON_THRESHOLD              278
174 #define REDC_1_TO_REDC_2_THRESHOLD           4
175 #define REDC_2_TO_REDC_N_THRESHOLD         123
176 
177 #define MU_DIV_QR_THRESHOLD               1718
178 #define MU_DIVAPPR_Q_THRESHOLD            1685
179 #define MUPI_DIV_QR_THRESHOLD               62
180 #define MU_BDIV_QR_THRESHOLD              1528
181 #define MU_BDIV_Q_THRESHOLD               1718
182 
183 #define POWM_SEC_TABLE  1,22,95,563,1955
184 
185 #define GET_STR_DC_THRESHOLD                28
186 #define GET_STR_PRECOMPUTE_THRESHOLD        51
187 #define SET_STR_DC_THRESHOLD               182
188 #define SET_STR_PRECOMPUTE_THRESHOLD       638
189 
190 #define FAC_DSC_THRESHOLD                  153
191 #define FAC_ODD_THRESHOLD                   56
192 
193 #define MATRIX22_STRASSEN_THRESHOLD         25
194 #define HGCD2_DIV1_METHOD                    1  /* 5.04% faster than 3 */
195 #define HGCD_THRESHOLD                      55
196 #define HGCD_APPR_THRESHOLD                 50
197 #define HGCD_REDUCE_THRESHOLD             3389
198 #define GCD_DC_THRESHOLD                   153
199 #define GCDEXT_DC_THRESHOLD                180
200 #define JACOBI_BASE_METHOD                   1  /* 30.60% faster than 4 */
201 
202 /* Tuneup completed successfully, took 75202 seconds */
203