tune&fat: run-time vs. compile-time constant thresholds

bodrato at mail.dm.unipi.it bodrato at mail.dm.unipi.it
Mon Apr 23 08:23:02 CEST 2012


Yesterday I moved a macro repeated in many files to gmp-impl.h :

/* This is intended for constant THRESHOLDs only, where the compiler
   can completely fold the result.  */
#define LOG2C(n) \
...

The comment is important. The macro should be used for compile-time
constants only.

Many macros in our code assume that thresholds are compile-time constants,
e.g. the MAYBE_ machinery in toom code, but also the ABOVE_THRESHOLD
macro, with its three stage comparison...

#define ABOVE_THRESHOLD(size,thresh)					\
  ((thresh) == 0							\
   || ((thresh) != MP_SIZE_T_MAX					\
       && (size) >= (thresh)))

Most of this code is disabled #if TUNE_PROGRAM_BUILD, but compiled for
fat-builds...

I suggest to define a unique THRESHOLDS_ARE_NOT_HARDCODED macro, to be
used by both tune and fat builds, and start using it instead of the
TUNE_PROGRAM_BUILD condition.

Is this possible? Do you think it makes sense?

Regards,
Marco

-- 
http://bodrato.it/papers/



More information about the gmp-devel mailing list