diff options
author | Torbjorn Granlund <tg@gmplib.org> | 2020-11-19 12:21:06 +0100 |
---|---|---|
committer | Torbjorn Granlund <tg@gmplib.org> | 2020-11-19 12:21:06 +0100 |
commit | 2efb5cc826c93c1bbd59a502145b96600a198d88 (patch) | |
tree | 5561df1a1b8778974e5a8a1ff4d2f3dc7e106c48 /mpn | |
parent | 1e81e9c09bc2e740ae26534803d29977774a9c66 (diff) | |
download | gmp-2efb5cc826c93c1bbd59a502145b96600a198d88.tar.gz |
(DO_mpn_addlsh_n): Define only when needed.
Diffstat (limited to 'mpn')
-rw-r--r-- | mpn/generic/toom_interpolate_12pts.c | 58 | ||||
-rw-r--r-- | mpn/generic/toom_interpolate_16pts.c | 34 |
2 files changed, 50 insertions, 42 deletions
diff --git a/mpn/generic/toom_interpolate_12pts.c b/mpn/generic/toom_interpolate_12pts.c index 347e3410d..627346613 100644 --- a/mpn/generic/toom_interpolate_12pts.c +++ b/mpn/generic/toom_interpolate_12pts.c @@ -6,7 +6,7 @@ SAFE TO REACH IT THROUGH DOCUMENTED INTERFACES. IN FACT, IT IS ALMOST GUARANTEED THAT IT WILL CHANGE OR DISAPPEAR IN A FUTURE GNU MP RELEASE. -Copyright 2009, 2010, 2012, 2015 Free Software Foundation, Inc. +Copyright 2009, 2010, 2012, 2015, 2020 Free Software Foundation, Inc. This file is part of the GNU MP Library. @@ -38,6 +38,34 @@ see https://www.gnu.org/licenses/. */ #include "gmp-impl.h" +#if GMP_NUMB_BITS < 21 +#error Not implemented: Both sublsh_n(,,,20) should be corrected. +#endif + +#if GMP_NUMB_BITS < 16 +#error Not implemented: divexact_by42525 needs splitting. +#endif + +#if GMP_NUMB_BITS < 12 +#error Not implemented: Hard to adapt... +#endif + + +/* FIXME: tuneup should decide the best variant */ +#ifndef AORSMUL_FASTER_AORS_AORSLSH +#define AORSMUL_FASTER_AORS_AORSLSH 1 +#endif +#ifndef AORSMUL_FASTER_AORS_2AORSLSH +#define AORSMUL_FASTER_AORS_2AORSLSH 1 +#endif +#ifndef AORSMUL_FASTER_2AORSLSH +#define AORSMUL_FASTER_2AORSLSH 1 +#endif +#ifndef AORSMUL_FASTER_3AORSLSH +#define AORSMUL_FASTER_3AORSLSH 1 +#endif + + #if HAVE_NATIVE_mpn_sublsh_n #define DO_mpn_sublsh_n(dst,src,n,s,ws) mpn_sublsh_n(dst,dst,src,n,s) #else @@ -57,6 +85,7 @@ DO_mpn_sublsh_n(mp_ptr dst, mp_srcptr src, mp_size_t n, unsigned int s, mp_ptr w #if HAVE_NATIVE_mpn_addlsh_n #define DO_mpn_addlsh_n(dst,src,n,s,ws) mpn_addlsh_n(dst,dst,src,n,s) #else +#if !defined (AORSMUL_FASTER_2AORSLSH) && !defined (AORSMUL_FASTER_AORS_2AORSLSH) static mp_limb_t DO_mpn_addlsh_n(mp_ptr dst, mp_srcptr src, mp_size_t n, unsigned int s, mp_ptr ws) { @@ -69,6 +98,7 @@ DO_mpn_addlsh_n(mp_ptr dst, mp_srcptr src, mp_size_t n, unsigned int s, mp_ptr w #endif } #endif +#endif #if HAVE_NATIVE_mpn_subrsh #define DO_mpn_subrsh(dst,nd,src,ns,s,ws) mpn_subrsh(dst,nd,src,ns,s) @@ -84,32 +114,6 @@ do { \ #endif -#if GMP_NUMB_BITS < 21 -#error Not implemented: Both sublsh_n(,,,20) should be corrected. -#endif - -#if GMP_NUMB_BITS < 16 -#error Not implemented: divexact_by42525 needs splitting. -#endif - -#if GMP_NUMB_BITS < 12 -#error Not implemented: Hard to adapt... -#endif - -/* FIXME: tuneup should decide the best variant */ -#ifndef AORSMUL_FASTER_AORS_AORSLSH -#define AORSMUL_FASTER_AORS_AORSLSH 1 -#endif -#ifndef AORSMUL_FASTER_AORS_2AORSLSH -#define AORSMUL_FASTER_AORS_2AORSLSH 1 -#endif -#ifndef AORSMUL_FASTER_2AORSLSH -#define AORSMUL_FASTER_2AORSLSH 1 -#endif -#ifndef AORSMUL_FASTER_3AORSLSH -#define AORSMUL_FASTER_3AORSLSH 1 -#endif - #define BINVERT_9 \ ((((GMP_NUMB_MAX / 9) << (6 - GMP_NUMB_BITS % 6)) * 8 & GMP_NUMB_MAX) | 0x39) diff --git a/mpn/generic/toom_interpolate_16pts.c b/mpn/generic/toom_interpolate_16pts.c index 5d76bba8c..c1457be64 100644 --- a/mpn/generic/toom_interpolate_16pts.c +++ b/mpn/generic/toom_interpolate_16pts.c @@ -6,7 +6,7 @@ SAFE TO REACH IT THROUGH DOCUMENTED INTERFACES. IN FACT, IT IS ALMOST GUARANTEED THAT IT WILL CHANGE OR DISAPPEAR IN A FUTURE GNU MP RELEASE. -Copyright 2009, 2010, 2012, 2015 Free Software Foundation, Inc. +Copyright 2009, 2010, 2012, 2015, 2020 Free Software Foundation, Inc. This file is part of the GNU MP Library. @@ -37,6 +37,7 @@ see https://www.gnu.org/licenses/. */ #include "gmp-impl.h" + #if GMP_NUMB_BITS < 29 #error Not implemented: Both sublsh_n(,,,28) should be corrected; r2 and r5 need one more LIMB. #endif @@ -46,6 +47,21 @@ see https://www.gnu.org/licenses/. */ #endif +/* FIXME: tuneup should decide the best variant */ +#ifndef AORSMUL_FASTER_AORS_AORSLSH +#define AORSMUL_FASTER_AORS_AORSLSH 1 +#endif +#ifndef AORSMUL_FASTER_AORS_2AORSLSH +#define AORSMUL_FASTER_AORS_2AORSLSH 1 +#endif +#ifndef AORSMUL_FASTER_2AORSLSH +#define AORSMUL_FASTER_2AORSLSH 1 +#endif +#ifndef AORSMUL_FASTER_3AORSLSH +#define AORSMUL_FASTER_3AORSLSH 1 +#endif + + #if HAVE_NATIVE_mpn_sublsh_n #define DO_mpn_sublsh_n(dst,src,n,s,ws) mpn_sublsh_n(dst,dst,src,n,s) #else @@ -65,6 +81,7 @@ DO_mpn_sublsh_n(mp_ptr dst, mp_srcptr src, mp_size_t n, unsigned int s, mp_ptr w #if HAVE_NATIVE_mpn_addlsh_n #define DO_mpn_addlsh_n(dst,src,n,s,ws) mpn_addlsh_n(dst,dst,src,n,s) #else +#if !defined (AORSMUL_FASTER_2AORSLSH) && !defined (AORSMUL_FASTER_AORS_2AORSLSH) static mp_limb_t DO_mpn_addlsh_n(mp_ptr dst, mp_srcptr src, mp_size_t n, unsigned int s, mp_ptr ws) { @@ -77,6 +94,7 @@ DO_mpn_addlsh_n(mp_ptr dst, mp_srcptr src, mp_size_t n, unsigned int s, mp_ptr w #endif } #endif +#endif #if HAVE_NATIVE_mpn_subrsh #define DO_mpn_subrsh(dst,nd,src,ns,s,ws) mpn_subrsh(dst,nd,src,ns,s) @@ -92,20 +110,6 @@ do { \ #endif -/* FIXME: tuneup should decide the best variant */ -#ifndef AORSMUL_FASTER_AORS_AORSLSH -#define AORSMUL_FASTER_AORS_AORSLSH 1 -#endif -#ifndef AORSMUL_FASTER_AORS_2AORSLSH -#define AORSMUL_FASTER_AORS_2AORSLSH 1 -#endif -#ifndef AORSMUL_FASTER_2AORSLSH -#define AORSMUL_FASTER_2AORSLSH 1 -#endif -#ifndef AORSMUL_FASTER_3AORSLSH -#define AORSMUL_FASTER_3AORSLSH 1 -#endif - #if GMP_NUMB_BITS < 43 #define BIT_CORRECTION 1 #define CORRECTION_BITS GMP_NUMB_BITS |