Bill Allombert on Thu, 28 Oct 2004 18:17:14 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

level0 kernel


Hello PARI-dev,

I have some suggestion to clean up the level0 kernel:

In some circumstance we have only the INLINE function but not
the GCC macro. Unfortunately the LOCAL_HIREMAINDER trick only
work for the GCC macro.

The LOCAL_HIREMAINDER trick give slightly better performance.

One way to fix that could be to add a normal macro like

#define addll(x,y) addll_ov((x),(y),&overflow)

and an INLINE function 
addll_ov(ulong x, ulong y, ulong *overflow)
{
  const ulong z = x+y;
  *overflow=(z<x);
  return (long) z;
}

This allow LOCAL_HIREMAINDER to work with non-GCC compiler.

Alternatively we can provide GCC macro version of all level0
INLINE function.

Cheers,
Bill.