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 */