1 /* Intel P55 gmp-mparam.h -- Compiler/machine parameter header file.
3 Copyright 1991, 1993, 1994, 1999, 2000, 2001, 2002, 2004, 2009, 2010 Free
4 Software Foundation, Inc.
6 This file is part of the GNU MP Library.
8 The GNU MP Library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or (at your
11 option) any later version.
13 The GNU MP Library is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
16 License for more details.
18 You should have received a copy of the GNU Lesser General Public License
19 along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
22 #define GMP_LIMB_BITS 32
23 #define BYTES_PER_MP_LIMB 4
26 /* For mpn/x86/pentium/mod_1.asm */
27 #define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
32 #define MOD_1_NORM_THRESHOLD 5
33 #define MOD_1_UNNORM_THRESHOLD MP_SIZE_T_MAX /* never */
34 #define MOD_1N_TO_MOD_1_1_THRESHOLD MP_SIZE_T_MAX /* never */
35 #define MOD_1U_TO_MOD_1_1_THRESHOLD 12
36 #define MOD_1_1_TO_MOD_1_2_THRESHOLD 0
37 #define MOD_1_2_TO_MOD_1_4_THRESHOLD 11
38 #define PREINV_MOD_1_TO_MOD_1_THRESHOLD 63
39 #define USE_PREINV_DIVREM_1 0
40 #define DIVEXACT_1_THRESHOLD 0 /* always (native) */
41 #define BMOD_1_TO_MOD_1_THRESHOLD 51
43 #define MUL_TOOM22_THRESHOLD 16
44 #define MUL_TOOM33_THRESHOLD 53
45 #define MUL_TOOM44_THRESHOLD 128
46 #define MUL_TOOM6H_THRESHOLD 189
47 #define MUL_TOOM8H_THRESHOLD 260
49 #define MUL_TOOM32_TO_TOOM43_THRESHOLD 89
50 #define MUL_TOOM32_TO_TOOM53_THRESHOLD 91
51 #define MUL_TOOM42_TO_TOOM53_THRESHOLD 90
52 #define MUL_TOOM42_TO_TOOM63_THRESHOLD 88
54 #define SQR_BASECASE_THRESHOLD 0 /* always (native) */
55 #define SQR_TOOM2_THRESHOLD 20
56 #define SQR_TOOM3_THRESHOLD 73
57 #define SQR_TOOM4_THRESHOLD 178
58 #define SQR_TOOM6_THRESHOLD 210
59 #define SQR_TOOM8_THRESHOLD 375
61 #define MULMOD_BNM1_THRESHOLD 11
62 #define SQRMOD_BNM1_THRESHOLD 12
64 #define MUL_FFT_MODF_THRESHOLD 364 /* k = 5 */
65 #define MUL_FFT_TABLE3 \
66 { { 364, 5}, { 15, 6}, { 8, 5}, { 17, 6}, \
67 { 9, 5}, { 19, 6}, { 17, 7}, { 9, 6}, \
68 { 21, 7}, { 11, 6}, { 23, 7}, { 15, 6}, \
69 { 31, 7}, { 21, 8}, { 11, 7}, { 27, 8}, \
70 { 15, 7}, { 33, 8}, { 19, 7}, { 39, 8}, \
71 { 23, 7}, { 47, 8}, { 27, 9}, { 15, 8}, \
72 { 31, 7}, { 63, 8}, { 39, 9}, { 23, 8}, \
73 { 47,10}, { 15, 9}, { 31, 8}, { 67, 9}, \
74 { 39, 8}, { 79, 9}, { 47, 8}, { 95, 9}, \
75 { 55,10}, { 31, 9}, { 79,10}, { 47, 9}, \
76 { 95,11}, { 31,10}, { 63, 9}, { 135,10}, \
77 { 79, 9}, { 159, 8}, { 319, 9}, { 167,10}, \
78 { 95, 9}, { 191, 8}, { 383,11}, { 63,10}, \
79 { 127, 9}, { 255,10}, { 143, 9}, { 287,10}, \
80 { 159, 9}, { 319,11}, { 95,10}, { 191, 9}, \
81 { 383,12}, { 63,11}, { 127,10}, { 271, 9}, \
82 { 543,10}, { 287,11}, { 159,10}, { 351,11}, \
83 { 191,10}, { 415,11}, { 223,12}, { 127,11}, \
84 { 255,10}, { 511,11}, { 287,10}, { 575,11}, \
85 { 351,12}, { 191,11}, { 415,13}, { 127,12}, \
86 { 255,11}, { 575,12}, { 319,11}, { 703,12}, \
87 { 383,11}, { 831,12}, { 447,13}, { 8192,14}, \
88 { 16384,15}, { 32768,16} }
89 #define MUL_FFT_TABLE3_SIZE 90
90 #define MUL_FFT_THRESHOLD 3520
92 #define SQR_FFT_MODF_THRESHOLD 340 /* k = 5 */
93 #define SQR_FFT_TABLE3 \
94 { { 340, 5}, { 17, 6}, { 9, 5}, { 19, 6}, \
95 { 17, 7}, { 9, 6}, { 21, 7}, { 11, 6}, \
96 { 23, 7}, { 15, 6}, { 31, 7}, { 21, 8}, \
97 { 11, 7}, { 29, 8}, { 15, 7}, { 33, 8}, \
98 { 19, 7}, { 39, 8}, { 27, 7}, { 55, 9}, \
99 { 15, 8}, { 31, 7}, { 65, 8}, { 43, 9}, \
100 { 23, 8}, { 47,10}, { 15, 9}, { 31, 8}, \
101 { 67, 9}, { 39, 8}, { 83, 9}, { 47, 8}, \
102 { 95,10}, { 31, 9}, { 63, 8}, { 127, 9}, \
103 { 79,10}, { 47, 9}, { 95,11}, { 31,10}, \
104 { 63, 9}, { 127, 8}, { 255, 9}, { 135,10}, \
105 { 79, 9}, { 159, 8}, { 319,10}, { 95, 9}, \
106 { 191,11}, { 63,10}, { 127, 9}, { 255, 8}, \
107 { 511, 9}, { 271,10}, { 143, 9}, { 287, 8}, \
108 { 575, 9}, { 303,10}, { 159, 9}, { 319,11}, \
109 { 95,10}, { 191, 9}, { 383,10}, { 207,12}, \
110 { 63,11}, { 127,10}, { 271, 9}, { 543,10}, \
111 { 287, 9}, { 575,10}, { 303,11}, { 159,10}, \
112 { 351,11}, { 191,10}, { 415,11}, { 223,10}, \
113 { 447,12}, { 127,11}, { 255,10}, { 543,11}, \
114 { 287,10}, { 607,11}, { 351,12}, { 191,11}, \
115 { 479,13}, { 127,12}, { 255,11}, { 575,12}, \
116 { 319,11}, { 703,12}, { 383,11}, { 767,12}, \
117 { 447,13}, { 8192,14}, { 16384,15}, { 32768,16} }
118 #define SQR_FFT_TABLE3_SIZE 96
119 #define SQR_FFT_THRESHOLD 5504
121 #define MULLO_BASECASE_THRESHOLD 0 /* always */
122 #define MULLO_DC_THRESHOLD 48
123 #define MULLO_MUL_N_THRESHOLD 6633
125 #define DC_DIV_QR_THRESHOLD 43
126 #define DC_DIVAPPR_Q_THRESHOLD 170
127 #define DC_BDIV_QR_THRESHOLD 43
128 #define DC_BDIV_Q_THRESHOLD 110
130 #define INV_MULMOD_BNM1_THRESHOLD 30
131 #define INV_NEWTON_THRESHOLD 177
132 #define INV_APPR_THRESHOLD 171
134 #define BINV_NEWTON_THRESHOLD 194
135 #define REDC_1_TO_REDC_N_THRESHOLD 50
137 #define MU_DIV_QR_THRESHOLD 1142
138 #define MU_DIVAPPR_Q_THRESHOLD 1142
139 #define MUPI_DIV_QR_THRESHOLD 90
140 #define MU_BDIV_QR_THRESHOLD 942
141 #define MU_BDIV_Q_THRESHOLD 1017
143 #define MATRIX22_STRASSEN_THRESHOLD 13
144 #define HGCD_THRESHOLD 92
145 #define GCD_DC_THRESHOLD 283
146 #define GCDEXT_DC_THRESHOLD 221
147 #define JACOBI_BASE_METHOD 2
149 #define GET_STR_DC_THRESHOLD 18
150 #define GET_STR_PRECOMPUTE_THRESHOLD 31
151 #define SET_STR_DC_THRESHOLD 490
152 #define SET_STR_PRECOMPUTE_THRESHOLD 994