Newer
Older
2019-09-14 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/hgcd2.c (HGCD2_DIV1_METHOD): Rename, and change
default to 3. Updated all usage.
(HGCD2_METHOD): ... the old name, deleted.
2019-09-14 Torbjörn Granlund <tg@gmplib.org>
* configure.ac: Remove obsolete path-triggered invocation of
GMP_ASM_X86_ADX and GMP_ASM_X86_MULX.
* acinclude.m4 (GMP_ASM_X86_MULX): Set X86_ASM_MULX to config.h.
* configure.ac (x86): Set x86_have_mulx for relevant CPUs.
Use if to conditionally invoke GMP_ASM_X86_MULX.
* longlong.h (x86 umul_ppmm): Test also X86_ASM_MULX for when to use
mulx variant.
2019-09-13 Niels Möller <nisse@lysator.liu.se>
* tune/tuneup.c (one_method): New helper function, to measure
several functions for a fix size.
(tune_hgcd2, tune_div_qr_1, tune_mod_1, tune_jacobi_base): Use it.
2019-09-13 Torbjörn Granlund <tg@gmplib.org>
* configure.ac (HAVE_HOST_CPU_1): Add many x86_64 CPU types.
* longlong.h (x86 umul_ppmm): Fix criterion for when to use mulx.
(count_leading_zeros): Use lzcnt for appropriate CPUs.
(count_trailing_zeros): Use tzcnt for appropriate CPUs.
* mpn/generic/hgcd2.c (HGCD2_METHOD=2 div1): Rewrite.
2019-09-09 Torbjörn Granlund <tg@gmplib.org>
* mpn/generic/mul.c: Call mpn_mul_basecase early when in range. Never
call mpn_sqr.
* mpn/generic/gcd.c: Rewrite tail of function, for n <= 2.
2019-09-08 Torbjörn Granlund <tg@gmplib.org>
* configure.ac (arm): Select arch armv7ve for a7, a12, a15, and a17,
this enables the use of the udiv instruction.
* mpn/generic/hgcd2.c (disabled div2): Micro-optimise.
2019-09-07 Torbjörn Granlund <tg@gmplib.org>
* mpn/generic/hgcd2.c (HGCD2_METHOD=3 div1): Micro-optimise.
2019-09-07 Vincent Lefevre <vincent@vinc17.net>
* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Append EXEEXT for executable.
2019-09-05 Torbjörn Granlund <tg@gmplib.org>
* mpn/arm64/gcd_22.asm: Rewrite to make better use of Arm conditional
execution.
* mpn/arm32/gcd_22.asm: Likewise.
2019-09-05 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/hgcd2.c (div1): Return both r and q as a
mp_double_limb_t, replacing the DIV1 macro.
(div1) [HGCD2_METHOD == 3]: New implementation handling q <= 7
specially and without branches. Based on Torbjörn's mail to the
gmp-devel list.
* tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add
corresponding speed support.
* tune/hgcd2-3.c: New file.
* tune/tuneup.c (print_define_with_speedup): New function, to
output a comment with speedup compared to next-best method.
(tune_hgcd2): Update tuning.
2019-09-04 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/hgcd2.c (HGCD2_METHOD): New parameter.
(DIV1): New macro, using either the div1 function or plain
division, depending on the value of HGCD2_METHOD.
(mpn_hgcd2): Use DIV1.
* tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add
measuring of mpn_hgcd2 methods.
* tune/hgcd2-1.c, tune/hgcd2-2.c: New files.
* tune/tuneup.c: Tune HGCD2_METHOD.
* tune/speed.h (SPEED_ROUTINE_MPN_HGCD2): New macro.
* tune/common.c (speed_mpn_hgcd2): New function.
* tune/speed.c (routine): Add mpn_hgcd2.
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
2019-09-04 Torbjörn Granlund <tg@gmplib.org>
* mpn/arm/v6t2/gcd_22.asm: New file.
* mpn/arm64/gcd_22.asm: New file.
* mpn/ia64/gcd_11.asm: New file.
2019-09-01 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bt1/gcd_11.asm: Replace grabber with bt1 optimised code.
2019-08-30 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bd4/gcd_22.asm: New grabber file.
* mpn/x86_64/zen/gcd_22.asm: Use coreihwl instead of bd2 gcd_22.
* mpn/x86_64/bd2/gcd_22.asm: Fix typo in FUNC_ENTRY (currently unused).
Avoid a register copy before return.
* mpn/x86_64/core2/gcd_22.asm: Likewise.
* mpn/x86_64/k10/gcd_22.asm: Likewise.
* mpn/x86_64/gcd_22.asm: Likewise.
* mpn/x86_64/coreihwl/gcd_22.asm: Optimise, now runs well on more CPUs.
* mpn/x86_64/gcd_11.asm: Remove PROTECT from symbols as they are
actually local.
* mpn/x86_64/gcd_22.asm: Likewise.
2019-08-25 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bd2/gcd_22.asm: Repeat tzcnt for exceptional lowz case.
Remove dead code.
* mpn/powerpc64/mode64/p7/gcd_22.asm: Make logic for determining ABI
wrt struct return more robust.
* mpn/powerpc64/mode64/p9/gcd_22.asm: Likewise.
2019-08-24 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bt1/gcd_11.asm: New grabber.
* mpn/x86_64/bt1/gcd_22.asm: New grabber.
* mpn/x86_64/bt2/gcd_22.asm: New grabber.
* mpn/x86_64/atom/gcd_22.asm: Remove stale grabber file.
* mpn/x86_64/zen/gcd_22.asm: Grab bd2 instead of hwl code.
* mpn/x86_64/bd2/gcd_22.asm: New file.
* mpn/x86_64/k8/gcd_22.asm: Remove, rely on top-level code instead.
* mpn/x86_64/bt1/gcd_22.asm: Remove.
* x86_64/gcd_22.asm: New file, improved version of removed bt1 code.
2019-08-22 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/coreihwl/gcd_11.asm: Remove as it was never beneficial.
* mpn/x86_64/bd2/gcd_11.asm: Make sure rdx is zero on return to benefit
gcd_22's private calls. Make gcd_11 files more similar in register use.
* mpn/x86_64/bd4/gcd_11.asm: Likewise.
* mpn/x86_64/core2/gcd_11.asm: Likewise.
* mpn/x86_64/gcd_11.asm:: Likewise.
2019-08-22 Niels Möller <nisse@lysator.liu.se>
From Hugh McMaster:
* gmp.pc.in, gmpxx.pc.in: New files.
* configure.ac: New output files gmp.pc and gmpxx.pc.
* Makefile.am (pkgconfigdir, pkgconfig_DATA): New automake
settings, to install gmp.pc and optionally gmpxx.pc for use with
pkg-config.
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
2019-08-21 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/core2/gcd_22.asm: New file.
* mpn/x86_64/k8/gcd_22.asm: New file.
* mpn/x86_64/k10/gcd_22.asm: New file.
* mpn/x86_64/coreihwl/gcd_22.asm: New file.
* mpn/x86_64/bt1/gcd_22.asm: New file.
* mpn/x86_64/bd4/gcd_22.asm: New grabber.
* mpn/x86_64/zen/gcd_22.asm: New grabber.
* mpn/x86_64/atom/gcd_22.asm: New grabber.
2019-08-19 Torbjörn Granlund <tg@gmplib.org>
* configure.ac: Check for ELFv1 ABI on PowerPC.
2019-08-18 Torbjörn Granlund <tg@gmplib.org>
* longlong.h (arm32 sub_ddmmss): Define separately for thumb and
non-thumb as rsc instruction is missing for thumb.
* mpn/powerpc64/mode64/p7/gcd_22.asm: New file.
* mpn/powerpc64/mode64/p9/gcd_22.asm: New file.
2019-08-17 Torbjörn Granlund <tg@gmplib.org>
* demos/expr/t-expr.c: #include gmp-impl.h as it includes tests.h.
* mpn/asm-defs.m4: Add gcd_22.
* tests/refmpn.c (refmpn_gcd_22): New function.
* tests/tests.h: Declare it.
* tests/t-constants.c: #include gmp-impl.h.
* tests/mpf/t-get_d.c: Likewise.
2019-08-17 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/gcd_22.c (mpn_gcd_22): New implementation with less
branches.
2019-08-16 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mpn/generic/brootinv.c: Shorten computations, using even exponent.
* mpn/generic/powlo.c: Avoid copies with a flipflop.
2019-08-16 Niels Möller <nisse@lysator.liu.se>
Speed support for gcd_22. Calls mpn_gcd_22(al, al, bl, bl), so
that B+1 is a common factor.
* tune/speed.h (SPEED_ROUTINE_MPN_GCD_22): New macro.
* tune/speed.c (routine): Add mpn_gcd_22.
* tune/common.c (speed_mpn_gcd_22): New function.
* mpn/generic/gcd.c (gcd_2): Moved to gcd_22.c below.
(mpn_gcd): Adapt for calling gcd_22.
* mpn/generic/gcd_22.c (mpn_gcd_22): New file and function.
* gmp-impl.h (mp_double_limb_t): New (typedef) struct.
* configure.ac (gmp_mpn_functions): Added gcd_22.
* tests/mpn/t-gcd_22.c: New test.
* tests/mpn/Makefile.am (check_PROGRAMS): Add t-gcd_22.
* tests/refmpz.c (refmpz_gcd): New function (plain binary gcd).
2019-08-15 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/zen/gcd_11.asm: Use bd2 instead of bd4 code.
2019-08-13 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64: Add more gcd_11 variants of of x86_64 gcd_11.asm and
tweak existing ones.
2019-08-13 Marco Bodrato <bodrato@mail.dm.unipi.it>
From Seth Troisi:
* doc/gmp.texi: Update mpz_millerrabin documentation.
* mpn/x86_64/bd2/gcd_11.asm: Micro-optimisation.
* doc/gmp.texi: Further update in mpz_millerrabin.
* tests/misc.c: Silence a warning.
* tests/mpz/t-pprime_p.c (const primes): One more prime in the list.
* mpz/millerrabin.c: Return 2 for surely prime numbers (BPSW checked).
2019-08-08 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86/gcd_11.asm: New file.
* config.sub: Make arm cpu types match what config.guess returns.
2019-08-08 Niels Möller <nisse@lysator.liu.se>
* tests/refmpn.c (refmpn_gcd_11): New function, based on refmpn_gcd_1.
(refmpn_gcd_1): Use it.
* tests/mpn/t-gcd_11.c: New file, test mpn_gcd_11.
* tests/mpn/Makefile.am (check_PROGRAMS): Add t-gcd_11.
2019-08-07 Torbjörn Granlund <tg@gmplib.org>
* mpn/alpha/ev67/gcd_11.asm: New file, mostly extracted from gcd_1.asm.
* mpn/arm/v5/gcd_11.asm: Likewise.
* mpn/arm/v6t2/gcd_11.asm: Likewise.
* mpn/arm64/gcd_11.asm: Likewise.
* mpn/powerpc64/mode64/gcd_11.asm: Likewise.
* mpn/powerpc64/mode64/p7/gcd_11.asm: Likewise.
* mpn/powerpc64/mode64/p9/gcd_11.asm: Likewise.
* mpn/sparc64/gcd_11.asm: Likewise.
* mpn/x86/k7/gcd_11.asm: Likewise.
* mpn/x86/p6/gcd_11.asm: Likewise.
* mpn/x86_64/bd2/gcd_11.asm: Likewise.
* mpn/x86_64/core2/gcd_11.asm: Likewise.
* mpn/x86_64/gcd_11.asm: Likewise.
2019-08-06 Niels Möller <nisse@lysator.liu.se>
* tune/common.c (speed_mpn_gcd_11): New function.
* tune/speed.h (speed_mpn_gcd_11): Declare it.
(SPEED_ROUTINE_MPN_GCD_11): New macro.
* tune/speed.c (routine): Add mpn_gcd_11.
* configure.ac (gmp_mpn_functions): Added gcd_11. Also add
HAVE_NATIVE_mpn_gcd_11.
* mpn/generic/gcd_11.c (mpn_gcd_11): New file and function,
extracted from mpn_gcd_1.
* gmp-h.in (mpn_gcd_11): Declare it.
* mpn/generic/gcd_1.c (mpn_gcd_1): Adapted to call mpn_gcd_11.
2019-08-04 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bt2/gcd_1.asm: New grabber file.
* mpn/x86_64/zen/gcd_1.asm: Grab from "bd2" directory, was "core2".
2019-08-02 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bd2/gcd_1.asm: New file.
2019-08-01 Torbjörn Granlund <tg@gmplib.org>
* tests/mpf/t-conv.c: Add several more fixed test cases.
* mpf/set_str.c: Ignore leading zeros including ones after radix point
to avoid invalid output formats.
2019-07-30 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/p9/gcd_1.asm: New file.
2019-07-30 Niels Möller <nisse@lysator.liu.se>
From Seth Troisi:
* doc/gmp.texi (Jacobi Symbol): Update algorithm documentation.
* tests/mpz/t-jac.c: Comment update.
2019-07-13 Torbjörn Granlund <tg@gmplib.org>
* configure.ac (arm): Generalise arm a72 pattern to match a73...a79.
2019-07-08 Torbjörn Granlund <tg@gmplib.org>
* mpn/arm/arm-defs.m4 (ASM_START): Rewrite (fix broken error handling).
2019-07-02 Torbjörn Granlund <tg@gmplib.org>
* acinclude.m4 (GMP_C_DOUBLE_FORMAT): Compile conftest.c to executable
in order to trigger final compile in case of LTO.
2019-06-17 Torbjörn Granlund <tg@gmplib.org>
* config.guess: Work around upstream configfsf.guess's regression wrt
mips vs mips64.
2019-06-14 Torbjörn Granlund <tg@gmplib.org>
* longlong.h (mips64): Provide r6 asm code as default expression yields
libcall.
* configure.ac (mips64): Use separate paths for r6 and non-r6 as these
architectures are mutually incompatible.
* mpn/mips64/{addmul_1,mul_1,sqr_diagonal,submul_1,umul}.asm:
Move into hilo subdir.
2019-05-28 Torbjörn Granlund <tg@gmplib.org>
* config.sub: Fixes to which cpu types end with a "*".
2019-04-20 Niels Möller <nisse@lysator.liu.se>
* doc/gmp.texi (References): Link to paper on subquadratic GCD.
* mpn/x86_64/bd1/hamdist.asm: Really make 2017-06-01 change: Use
3-operand DEF_OBJECT.
* mpn/x86_64/invert_limb.asm: Simplify mpn_invert_limb_table ref.
* mpn/x86_64/x86_64-defs.m4 (LEA): Use rip addressing for non-PIC.
2019-04-17 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/jacobi.c (mpn_jacobi_n): Use JACOBI_DC_THRESHOLD,
not GCD_DC_THRESHOLD. Inconsistency spotted by Seth Troisi.
2019-04-02 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init):
Split out silvermont handling, add handling of goldmont.
* configure.ac: Setup distinct paths for silvermont and goldmont.
(fat_path): Add missing x86_64/goldmont.
* config.guess: Recognise "Goldmont Plus".
2018-12-09 Torbjörn Granlund <tg@gmplib.org>
* mpn/generic/mul_fft.c (mpn_fft_add_sub_modF): New function.
(mpn_fft_fft, mpn_fft_fftinv): Use it.
2018-11-30 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/p9/gmp-mparam.h: New file.
* mpn/powerpc64/mode64/p9/add_n_sub_n.asm: New file.
2018-11-28 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/p9/sqr_basecase.asm: New file.
* mpn/powerpc64/mode64/p9/mul_1.asm: New file.
2018-11-18 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/p9/mul_basecase.asm: New file.
* mpn/powerpc64/mode64/p9/addmul_1.asm: Optimise.
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
2018-11-12 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/p9/aorsmul_1.asm: New file, providing fast
submul_1 (and redundant addmul_1).
2018-11-11 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/p9/addmul_1.asm: Tweak for slightly better
speed.
* mpn/powerpc32/powerpc-defs.m4: Define addex.
* mpn/powerpc64/mode64/p9/mul_2.asm: Use it.
* mpn/powerpc64/mode64/p9/addmul_2.asm: Likewise.
2018-11-08 Torbjörn Granlund <tg@gmplib.org>
* tests/devel/cnd_aors_n.c: New file.
* mpn/arm/neon/lorrshift.asm: Declare use of neon insns.
* mpn/arm/neon/lshiftc.asm: Likewise + cleanup.
* tests/devel/Makefile.am (EXTRA_PROGRAMS): Add missing files.
* mpn/powerpc64/mode64/p9/mul_2.asm: New file.
* mpn/powerpc64/mode64/p9/addmul_2.asm: New file.
2018-11-07 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mpz/lucnum2_ui.c: Use mpn_rsblsh1_n if available.
* tests/mpz/t-nextprime.c: Add one more interval.
* tests/mpz/t-pprime_p.c (check_fermat_mersenne): New tests.
* mpn/generic/mod_1_3.c: typo in a comment.
* mpn/generic/fib2m.c: New file, Fibonacci numbers modulo.
* configure.ac (gmp_mpn_functions): Add it.
* gmp-impl.h: Declare mpn_fib2m.
* tests/mpn/t-fib2m.c: New file, tests for mpn_fib2m.
* tests/mpn/Makefile.am (check_PROGRAMS): Add t-fib2m.
* mpn/generic/mod_34lsub1.c: Initialise c[012] once.
* tests/mpz/t-pprime_p.c (check_primes): Two more primes.
* tests/mp?: Use TESTS_REPS in many files.
* mpn/generic/strongfibo.c: New file, Fibonacci primality test.
* configure.ac (gmp_mpn_functions): Add it.
* gmp-impl.h: Declare mpn_strongfibo.
* mpz/stronglucas.c: New file, strong Lucas primality test.
* Makefile.am (MPZ_OBJECTS): Add it.
* mpz/Makefile.am (libmpz_la_SOURCES): Add it.
* gmp-impl.h: Declare mpz_stronglucas.
* mpz/millerrabin.c: Implement BPSW test for primality.
2018-11-07 Torbjörn Granlund <tg@gmplib.org>
* configure.ac (arm): Support a12 and a17.
* config.sub: Generalise arm matching.
* config.guess: Recognise additional arm CPUs.
* mpn/arm/arm-defs.m4 (ASM_START): Provide local definition.
2018-10-30 Torbjörn Granlund <tg@gmplib.org>
* mpn/arm/v7a/cora17/mod_34lsub1.asm: New file.
* mpn/arm/v7a/cora17/gmp-mparam.h: New file.
* mpn/arm/v7a/cora17/mul_1.asm: New grabber file.
* mpn/arm/v7a/cora17/addmul_1.asm: Likewise.
* mpn/arm/v7a/cora17/submul_1.asm: Likewise.
2018-10-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mpn/generic/fib2_ui.c: Simplify the possible -2 case.
2018-07-19 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mpz/millerrabin.c (mod_eq_m1): New function, equality with -1.
* mpz/powm_ui.c: Small optimisations.
2018-07-03 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/lshift.asm: Remove cnt = 1 special code.
* mpn/x86_64/silvermont/popcount.asm: Add missing ABI_SUPPORT decls.
* mpn/x86_64/silvermont/hamdist.asm: Likewise.
* mpn/x86_64/zen/mul_1.asm: Likewise.
* mpn/x86_64/fastsse/lshift.asm: Support DOS64.
* mpn/x86_64/fastsse/lshiftc.asm: Likewise.
* mpn/x86_64/pentium4/gmp-mparam.h: Retune.
2018-07-01 Torbjörn Granlund <tg@gmplib.org>
* lshift.asm: Replace with grabber file.
* lshiftc.asm: Replace with grabber file.
* x86_64/pentium4/addmul_2.asm: New grabber file.
* x86_64/pentium4/aorsmul_1.asm: New grabber file.
* x86_64/pentium4/mul_1.asm: New grabber file.
* x86_64/pentium4/mul_2.asm: New grabber file.
* x86_64/pentium4/mul_basecase.asm: New grabber file.
* x86_64/pentium4/mullo_basecase.asm: New grabber file.
* x86_64/pentium4/redc_1.asm: New grabber file.
* x86_64/pentium4/sqr_basecase.asm: New grabber file.
2018-06-13 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/gcd_1.c (mpn_gcd_1): Delete unused code variant for
GCD_1_METHOD == 1, and delete GCD_1_METHOD macro. Simplify the
structure of the remaining code variant, without gotos to the
mid-loop strip_u_maybe label.
2018-05-30 Torbjörn Granlund <tg@gmplib.org>
* configure.ac (x86): Provide goldmont specific path.
* mpn/x86_64/goldmont/gmp-mparam.h: New file.
2018-05-29 Torbjörn Granlund <tg@gmplib.org>
* configure.ac (x86): Pass more exact arch/tune options for nehalem.
2018-05-28 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/gcd_1.c (mpn_gcd_1) [USE_ZEROTAB]: Delete unused code
variant for USE_ZEROTAB != 0.
2018-05-20 Marco Bodrato <bodrato@mail.dm.unipi.it>
* bootstrap.c: Define DONT_USE_FLOAT_H before including mini-gmp.
2018-05-14 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n): Decl. static.
(mpn_dcpi1_bdiv_q_n_itch): Declare static.
* mpn/generic/dcpi1_divappr_q.c (mpn_dcpi1_divappr_q_n): static.
* mpn/generic/matrix22_mul.c (mpn_matrix22_mul_strassen): static.
* mpn/generic/mu_div_qr.c (mpn_mu_div_qr_choose_in): static.
* mpn/generic/mu_divappr_q.c (mpn_preinv_mu_divappr_q): static.
(mpn_mu_divappr_q_choose_in): static.
* gmp-impl.h: Remove declaration of previous functions.
* mpn/generic/get_d.c: Enhance generic code using DBL_MANT_DIG.
* printf/repl-vsnprintf.c: Better handling floating-point
specifiers "EeGgFf" (Thanks Vincent Lefevre).
2018-05-04 Marco Bodrato <bodrato@mail.dm.unipi.it>
* doc/gmp.texi (mpq_*_str): Document the full base allowed range.
* mpq/get_str.c: Make all bases either work or return an error.
* doc/gmp.texi (Integer Internals): Lazy allocation and read-only.
2018-04-27 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/div_q.c (mpn_div_q): Replace dead code with ASSERT.
Spotted by Paul Zimmermann and Raphaël Rieu-Hleft.
* tests/mpn/t-div.c (main): Fill quotient area with junk before
calling mpn_div_q.
2018-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it>
* Makefile.am (EXTRA_DIST): Add mini-gmp/mini-mpq.[ch].
2018-04-23 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mpn/generic/toom2_sqr.c: Handle the cy=-1 branch slightly faster.
* mpn/generic/toom22_mul.c: Likewise. (Thanks Paul and Raphaël!)
2018-04-22 Niels Möller <nisse@lysator.liu.se>
From Martin Storsjö:
* configure.ac (aarch64): Just as on windows/x86_64, "long" still
is 32 bit on aarch64. To distinguish between 32-bit and 64-bit
ABI, test sizeof(void*) instead of sizeof(long). Use long long for
mp_limb_t for mingw targets.
* acinclude.m4 (GMP_C_TEST_SIZEOF): Allow '*' in the type name,
e.g., void*.
2018-04-18 Marc Glisse <marc.glisse@inria.fr>
* mpq/clear.c: Handle lazy numerator.
* mpq/clears.c: Likewise.
* mpq/init.c: Likewise.
* mpq/set_si.c: Likewise.
* mpq/set_ui.c: Likewise.
* tests/cxx/t-ops2z.cc: Add parentheses to quiet a warning.
2018-03-28 Torbjörn Granlund <tg@gmplib.org>
* configure.ac (mips): Recognise "mipsisa64*".
2018-03-23 Torbjörn Granlund <tg@gmplib.org>
* mpn/generic/sec_powm.c: Remove unused macros.
Simplify code for choosing between redc_1 and redc_2.
Compute power table with squaring for even powers.
2018-02-28 Marco Bodrato <bodrato@mail.dm.unipi.it>
* gmpxx.h (__gmp_binary_plus): Special case for mpq + 1.
(__gmp_binary_minus): Special case for mpq - 1.
(__gmp_binary_equal): Optimised comparison mpq == integer.
* tests/cxx/t-ops2qf.cc (checkqf): Some check for +/- 1, +/- 0.
2018-02-18 Marco Bodrato <bodrato@mail.dm.unipi.it>
* tune/Makefile.am: Disallow parallel make (thanks Vincent Lefevre).
* mpq/swap.c: Use *_SWAP_* macros.
* mpq/cmp_ui.c: One more little shortcut, comparing fractions to 1.
* mpq/get_d.c: Compare (zeros > 0) once, replace tdiv_qr with div_q.
* mpq/equal.c: Check size early.
* printf/obprintf.c: Adda dummy typedef to avoid empty unit.
* printf/obvprintf.c: Likewise.
* printf/obprntffuns.c: Likewise.
* printf/repl-vsnprintf.c: Move #ifdef after #include gmp-impl.h .
2018-02-08 Marco Bodrato <bodrato@mail.dm.unipi.it>
* printf/snprntffuns.c: Report -1 as an error.
* acinclude.m4 (GMP_FUNC_VSNPRINTF): Refuse -1 as return value.
* mpz/bin_uiui.c (mpz_smallk_bin_uiui): One more shortcut for small k.
* gmp-impl.h (popc_limb): Use fewer constants (GMP_LIMB_BITS == 16).
* mpz/divegcd.c (mpz_divexact_limb): Use MPN_DIVREM_OR_DIVEXACT_1.
* primesieve.c (fill_bitpattern): Use MPN_FILL.
2018-02-01 Marc Glisse <marc.glisse@inria.fr>
* longlong.h (i586): Remove assert.
2018-01-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mpz/and.c: Rearrange the 3 cases, both <0, both >=0, one and one.
* mpz/ior.c: Likewise.
* mpz/xor.c: Likewise.
* mpz/bin_uiui.c (mul[4-8]): Reduce the number of multiplications.
* printf/doprnt.c: Use __GMP_FREE_FUNC_TYPE.
* printf/doprntf.c: Likewise.
* printf/snprntffuns.c: Likewise, and use size_t instead of int.
2018-01-15 Marco Bodrato <bodrato@mail.dm.unipi.it>
* tests/mpz/t-bin.c: Extended tests for bin_ui and uint border cases.
2018-01-10 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Fix old pentium recog.
* config.guess: Likewise.
* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Add many 64-bit CPUs.
2018-01-07 Torbjörn Granlund <tg@gmplib.org>
* mpn/arm: Revert last change, it hides a symbol needed for testing.
2018-01-04 Torbjörn Granlund <tg@gmplib.org>
* bdiv_q_1.asm (binvert_limb_table): Declare as ".hidden".
* v7a/cora8/bdiv_q_1.asm: Likewise.
* dive_1.asm: Likewise.
* v6/dive_1.asm: Likewise.
* mode1o.asm (binvert_limb_table): Remove ".protected", add ".hidden".
* v6/mode1o.asm: Likewise.
2018-01-02 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/divrem_2.asm: Use different rlwinm variant (to
2018-01-01 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc32/powerpc-defs.m4: Define maddld, maddhdu, popcntd, and
divdeu.
* mpn/powerpc64/mode64/p8/invert_limb.asm: Use new insn defs.
* mpn/powerpc64/mode64/p9/addmul_1.asm: Use new insn defs.
* mpn/powerpc64/p7/hamdist.asm: Use new insn defs.
* mpn/powerpc64/p7/popcount.asm: Use new insn defs.
2017-12-31 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/p9/addmul_1.asm: Moved from
mpn/powerpc64/p9/addmul_1.asm.
2017-12-30 Marco Bodrato <bodrato@mail.dm.unipi.it>
* mpz/bin_ui.c: Rewrite, using Fredrik Johansson's suggestions.
2017-12-27 Niels Möller <nisse@lysator.liu.se>
* longlong.h (arm32/arm64): Leave COUNT_LEADING_ZEROS_0 undefined,
since we use gcc's __builtin_clzl, which doesn't allow zero inputs.
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
2017-12-27 Torbjörn Granlund <tg@gmplib.org>
* mpn/powerpc64/mode64/bdiv_q_1.asm: Use 64-bit cmp for sizes.
* mpn/powerpc64/p9/addmul_1.asm: New file.
* configure.ac: Separate handling of POWER8 and POWER9.
* config.guess: Recognise POWER9 and more variants of POWER8.
Reorder recog code to favour PVR over proc/cpuinfo.
2017-12-14 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/fastsse/com.asm: Adhere to DOS64 xmm callee-saves rules.
* mpn/x86_64/fastsse/com-palignr.asm: Likewise.
* mpn/x86_64/fastsse/copyd.asm: Likewise.
* mpn/x86_64/fastsse/copyi.asm: Likewise.
* mpn/x86_64/fastsse/lshiftc.asm: Likewise.
* mpn/x86_64/fastsse/sec_tabselect.asm: Likewise.
2017-12-11 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bd1/aorrlsh_n.asm: New grabber file.
2017-12-10 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bd1/aors_n.asm: New grabber file.
* mpn/x86_64/bd4/aorrlsh_n.asm: New grabber file.
2017-08-31 Torbjörn Granlund <tg@gmplib.org>
* mpn/sparc32/sparc-defs.m4 (LEA64): Rewrite for both PIC and non-PIC.
* mpn/sparc64/ultrasparct3/cnd_aors_n.asm: Allow arbitrary cnd arg.
2017-08-29 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/silvermont/gmp-mparam.h: Disable mul_2 and addmul_2.
2017-08-28 Torbjörn Granlund <tg@gmplib.org>
* mpn/sparc64: Revert 2017-07-23 PIC changes.
* mpn/powerpc32/divrem_2.asm: Avoid bc+ insn form to accommodate clang.
* mpn/generic/sbpi1_bdiv_qr.c: Correct ASSERT.
* mpn/generic/sbpi1_bdiv_q.c: Likewise.
* mpn/generic/sbpi1_bdiv_r.c: Likewise.
2017-08-18 Torbjörn Granlund <tg@gmplib.org>
* acinclude.m4 (X86_64_PATTERN): Match zen*.
* configure.ac (x86): Support AVX challenged systems for Zen.
2017-07-24 Torbjörn Granlund <tg@gmplib.org>
* mpn/generic/sbpi1_bdiv_q.c: Add ASSERT for inverse correctness.
* mpn/generic/sbpi1_bdiv_qr.c: Likewise.
* tests/mpn/t-bdiv.c (main): Amend last change.
* tests/devel/try.c (choice_array): Amend 2013-05-03 change to include
more functions.
* mpn/sparc64/gcd_1.asm: Enforce PIC as GNU/Linux toolchain workaround.
* mpn/sparc64/ultrasparct3/bdiv_q_1.asm: Likewise.
* mpn/sparc64/ultrasparct3/dive_1.asm: Likewise.
* mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise.
* mpn/sparc64/ultrasparct3/mode1o.asm: Likewise.
* gmp-impl.h: Reorganise foolshC_ip1 -> foolshC -> foolsh chain to make
it transitive.
2017-07-23 Niels Möller <nisse@lysator.liu.se>
* longlong.h: Purge definitions of obsolete UMUL_TIME and
UDIV_TIME constants. Also mentioned (but unused) in
mpn/cray/gmp-mparam.h and tune/common.c.
2017-07-21 Torbjörn Granlund <tg@gmplib.org>
* tests/mpn/t-bdiv.c (main): Test mpn_sbpi1_bdiv_r.
* tune/common.c (speed_mpn_sbpi1_bdiv_r): New function.
* tune/speed.h: Declare it.
(SPEED_ROUTINE_MPN_PI1_BDIV_R): New macro.
* tune/speed.c (routine): Add mpn_sbpi1_bdiv_r.
* gmp-impl.h (mpn_sbpi1_bdiv_r): Declare.
* mpn/asm-defs.m4 (define_mpn): Add sbpi1_bdiv_q, sbpi1_bdiv_qr,
sbpi1_bdiv_r.
* mpn/generic/sbpi1_bdiv_r.c: New file.
* mpn/x86_64/zen/sbpi1_bdiv_r.asm: New file.
2017-07-19 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86/p6/sse2/submul_1.asm: Get pentium4 code instead of k6 code
for better speed on modern Intel P6 cores.
2017-07-02 Torbjörn Granlund <tg@gmplib.org>
* tune/tuneup.c (tune_mullo): For MULLO_BASECASE_THRESHOLD start at 2.
(tune_sqrlo): Likewise.
2017-06-28 Torbjörn Granlund <tg@gmplib.org>
* tests/Makefile.am tests/*/Makefile.am tune/Makefile.am (AM_LDFLAGS):
Define. (Thanks to Emmanuel Thomé and Vincent Lefevre.)
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
2017-06-27 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/zen/sqr_basecase.asm: Expand to use 4 addmul_1 loops.
* mpn/x86_64/x86_64-defs.m4 (sarx): New macro.
2017-06-26 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/coreibwl/sqr_basecase.asm: Rewrite to do 2x and limb
squaring in main loop.
2017-06-20 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/atom/cnd_add_n.asm: New grabber file.
* mpn/x86_64/atom/cnd_sub_n.asm: Likewise.
* mpn/x86_64/coreihwl/aorrlsh_n.asm: New grabber file.
2017-06-16 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/zen/mul_basecase.asm: Do overlapped software pipelining.
* mpn/x86_64/silvermont/mul_basecase.asm: New grabber file.
* mpn/x86_64/silvermont/sqr_basecase.asm: Likewise.
* mpn/x86_64/silvermont/mullo_basecase.asm: Likewise.
2017-06-14 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/zen/mullo_basecase.asm: New file.
* mpn/x86_64/coreibwl/mullo_basecase.asm: New file.
2017-06-11 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/popham.asm: Crossjump for code size and mix lead-in insns
for lower overhead.
2017-06-09 Torbjörn Granlund <tg@gmplib.org>
* configure.ac: Set GMP_NONSTD_ABI protecting against dots in the abi.
(hppa): Remove old GNU/Linux restriction to 32-bit ABI.
2017-06-07 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bd1/addmul_2.asm: New file.
* mpn/x86_64/x86_64-defs.m4 (c4_helper): New macro.
(mulx, shlx, shrx): Use c4_helper.
* mpn/x86_64/zen/mul_basecase.asm: Use 8-bit imm operands for "test".
* mpn/x86_64/zen/aorrlsh1_n.asm: New grabber file.
* mpn/x86_64/zen/sublsh1_n.asm: Likewise.
* mpn/x86_64/zen/aorrlsh_n.asm: New file
2017-06-04 Torbjörn Granlund <tg@gmplib.org>
* configure.ac: Use bt1/bt2 for bobcat and jaguar dirs.
(fat_path): Add x86_64/bt2.
* mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Adapt to bt1/bt2 changes.
Make zen path correspond to non-fat path.
* mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Adapt to bt1/bt2 changes.
* mpn/x86_64/bt2/copyi.asm: New grabber file.
* mpn/x86_64/bt2/copyd.asm: New grabber file.
* mpn/x86_64/bt2/com.asm: New grabber file.
2017-06-03 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bd1/popcount.asm: Expand some instructions as .byte
sequences.
* mpn/x86_64/bd1/hamdist.asm: Likewise.
2017-06-02 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/x86_64-defs.m4 (DEF_OBJECT): Fix quoting (amends recent
change).
(JUMPTABSECT): Get rid of spurious "w".
2017-06-02 Marc Glisse <marc.glisse@inria.fr>
* gmpxx.h (mpf_class::operator bool): Use mpf_sgn to access _mp_size.
2017-06-02 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/bd1/popcount.asm: Use both SSE and XOP trickery, and
plain popcnt insn.
* mpn/x86_64/bd1/hamdist.asm: Likewise.
2017-06-01 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/x86_64-defs.m4 (DEF_OBJECT): Allow 3rd argument defining
section, while making alignment argument non-optional.
* mpn/x86_64/core2/popcount.asm: Use 3-operand DEF_OBJECT.
* mpn/x86_64/core2/hamdist.asm: Likewise.
* mpn/x86_64/bd1/popcount.asm: Likewise.
* mpn/x86_64/bd1/hamdist.asm: Likewise.
* configure.ac (GMP_AVX_NOT_REALLY_AVAILABLE): New m4 define.
* mpn/x86_64/bd1/popcount.asm: Use GMP_AVX_NOT_REALLY_AVAILABLE.
* mpn/x86_64/bd1/hamdist.asm: Likewise.
* mpn/x86_64/silvermont/popcount.asm: Reinstate, grabbing nehalem code.
* mpn/x86_64/silvermont/hamdist.asm: Replace with grabber.
* mpn/x86_64/core2/logops_n.asm: New file.
2017-05-30 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/coreisbr/popcount.asm: Remove.
2017-05-29 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/coreinhm/popcount.asm: Replace grabber code with
implementation proper.
* mpn/x86_64/coreinhm/hamdist.asm: Likewise.
* mpn/x86_64/bd1/popcount.asm: Likewise.
* mpn/x86_64/bd1/hamdist.asm: Likewise.
* mpn/x86_64/core2/popcount.asm: Likewise.
* mpn/x86_64/core2/hamdist.asm: New file.
2017-05-22 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/core2/com.asm: New grabber file.
* mpn/x86_64/core2/lshift.asm: Rewrite.
* mpn/x86_64/core2/rshift.asm: Rewrite.
* mpn/x86_64/core2/lshiftc.asm: Rewrite.
2017-05-16 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/zen/mul_1.asm: Port to DOS64.
* mpn/x86_64/zen/aorsmul_1.asm: Likewise.
* mpn/x86_64/coreibwl/addmul_1.asm: Likewise.
2017-05-16 Niels Möller <nisse@lysator.liu.se>
* mpn/generic/divis.c (mpn_divisible_p): Updated the divisibility
test; bdiv now returns R = D rather than R = 0 when D divides a
non-zero U.
* mpn/generic/binvert.c (mpn_binvert): Negate bdiv quotient.
* mpn/generic/divexact.c (mpn_divexact): Likewise.
* mpn/generic/remove.c (mpn_remove): Likewise.
* mpz/bin_uiui.c (mpz_bdiv_bin_uiui): Likewise.
* tests/mpn/t-bdiv.c (check_one): Updated to new convention,
B^{qn} R = U + QD.
* mpn/generic/sbpi1_bdiv_qr.c (mpn_sbpi1_bdiv_qr): Reimplemented,
for new bdiv convention.
* mpn/generic/sbpi1_bdiv_q.c (mpn_sbpi1_bdiv_q): Likewise.
* mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n)
(mpn_dcpi1_bdiv_q): Adapted to new bdiv convention.
* mpn/generic/dcpi1_bdiv_qr.c (mpn_dcpi1_bdiv_qr_n)
(mpn_dcpi1_bdiv_qr): Likewise.
* mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr): Adapted to new bdiv
convention, using a wrapper calling the old function.
* mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q): Likewise.
2017-05-03 Torbjörn Granlund <tg@gmplib.org>
* mpn/x86_64/coreisbr/cnd_aors_n.asm: New file.
* mpn/x86_64/coreisbr/cnd_add_n.asm: New file.
* mpn/x86_64/core2/aorsmul_1.asm: Tune.
* mpn/x86_64/silvermont/mul_1.asm: New file, grabbing another asm file.
* mpn/x86_64/silvermont/aorsmul_1.asm: Likewise.
* mpn/x86_64/silvermont/aorrlsh1_n.asm: Likewise.
* mpn/x86_64/silvermont/aorrlsh2_n.asm: Likewise.
* mpn/x86_64/silvermont/lshift.asm: Likewise.
* mpn/x86_64/silvermont/rshift.asm: Likewise.