gmp_pi1_t

Torbjorn Granlund tg at gmplib.org
Sun Dec 13 10:35:56 CET 2009


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

  Estetic considerations aside, the only obvious drawback is that the
  function call overhead will be a cycle or two less for passing the limb
  directly in a register, than for storing it in memory and passing a
  poiter to it. But I don't know if that difference is going to be
  measurable.
  
  (In recent years I've been under some influence of "extreme programming"
  thinking, so I'm suspicious to adding abstractings that do nothing
  useful today but are supposed to be useful in some future version).

I think a saved normalisation count will be useful very soon...

  > I expect more gmp_piX_t structures in the future, BTW.
  
  Anyway, I think structures like these should be const declared in the
  prototypes, for both clarity and performance. So that code like
  
    gmp_pi1_t inv;
  
    ... inv->inv32 ...;
    foo (..., &inv);
    ... inv->inv32 ...;
  
  can keep the value of inv32 in a register over the function call. Are
  gcc or other compilers clever enough to do that optimization?
  
I think that is not allowed.  Just because a pointer i declared to
"const" data, doesn't mean that other pointers cannot modify the data.
There is a C99 feature, "restrict", that should do what we want.

-- 
Torbjörn


More information about the gmp-devel mailing list