Improved gcd_1 code

Torbjorn Granlund tg at gmplib.org
Tue Mar 13 13:19:18 CET 2012


nisse at lysator.liu.se (Niels Möller) writes:

  But I'm not sure which loop you're referring to, when zerotab is
  disabled, it's using plain count_trailing_zeros macro.
  
I misread the strip_u_maybe beautyness...

  Another alternative for a branch-free count_trailing_zeros would be to
  base it on an unrolled popcount (of (x-1) & ~x). 

A properly sized table will beat any count_trailing_zeros which takes
more than about 5 cycles.  I am not sure what an "unrolled popcount"
might mean, but I suspect it is a lot more than 5 cycles.
  
  > a count_trailing_zeros_gcd should be added which is to be optimised
  > for small counts.
  
  Makes sense. I wonder if that should loop, or return MIN(SOME_LIMIT,
  correct ctz) leaving to the caller to loop.
  
I think it should always finish the job, following the common style of
the USE_ZEROTAB code.  It should use a separate table, parallel to
mp_clz_tab.c.

-- 
Torbjörn


More information about the gmp-devel mailing list