diff options
author | Niels M?ller <nisse@lysator.liu.se> | 2019-09-05 21:10:05 +0200 |
---|---|---|
committer | Niels M?ller <nisse@lysator.liu.se> | 2019-09-05 21:10:05 +0200 |
commit | 9c489cead96f7d38dd428d274805fc9cd48514fa (patch) | |
tree | 82af0b57717216c477c939c01f7f461ab043777a /tune/hgcd2-3.c | |
parent | 95d545683e958f411d896cc9ae55507c144a063a (diff) | |
download | gmp-9c489cead96f7d38dd428d274805fc9cd48514fa.tar.gz |
For hgcd2, add a div1 function handling q <= 7 specially.
* 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.
Diffstat (limited to 'tune/hgcd2-3.c')
-rw-r--r-- | tune/hgcd2-3.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tune/hgcd2-3.c b/tune/hgcd2-3.c new file mode 100644 index 000000000..8027347b6 --- /dev/null +++ b/tune/hgcd2-3.c @@ -0,0 +1,39 @@ +/* mpn/generic/hgcd2.c method 3. + +Copyright 2019 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. */ + +#include "gmp-impl.h" + +#undef HGCD2_METHOD +#define HGCD2_METHOD 3 +#define __gmpn_hgcd2 mpn_hgcd2_3 +/* Not used, but renamed to not get duplicate definitions */ +#define __gmpn_hgcd_mul_matrix1_vector mpn_hgcd_mul_matrix1_vector_3 + +#include "mpn/generic/hgcd2.c" |