factor/native/fixnum.h

42 lines
1.1 KiB
C
Raw Normal View History

2004-07-28 19:02:24 -04:00
#define FIXNUM_MAX (LONG_MAX >> TAG_BITS)
#define FIXNUM_MIN (LONG_MIN >> TAG_BITS)
#define FIXNUM long int /* unboxed */
INLINE FIXNUM untag_fixnum_fast(CELL tagged)
{
return ((FIXNUM)tagged) >> TAG_BITS;
}
2004-07-16 02:26:21 -04:00
INLINE CELL tag_fixnum(FIXNUM untagged)
{
return RETAG(untagged << TAG_BITS,FIXNUM_TYPE);
}
void primitive_fixnump(void);
void primitive_not(void);
2004-08-05 15:18:31 -04:00
FIXNUM to_fixnum(CELL tagged);
void primitive_to_fixnum(void);
CELL number_eq_fixnum(CELL x, CELL y);
CELL add_fixnum(CELL x, CELL y);
CELL subtract_fixnum(CELL x, CELL y);
CELL multiply_fixnum(CELL x, CELL y);
FIXNUM gcd_fixnum(FIXNUM x, FIXNUM y);
CELL divide_fixnum(CELL x, CELL y);
CELL divint_fixnum(CELL x, CELL y);
2004-08-05 16:49:55 -04:00
CELL divfloat_fixnum(CELL x, CELL y);
2004-08-05 15:18:31 -04:00
CELL divmod_fixnum(CELL x, CELL y);
CELL mod_fixnum(CELL x, CELL y);
CELL and_fixnum(CELL x, CELL y);
CELL or_fixnum(CELL x, CELL y);
CELL xor_fixnum(CELL x, CELL y);
CELL shiftleft_fixnum(CELL x, CELL y);
CELL shiftright_fixnum(CELL x, CELL y);
CELL less_fixnum(CELL x, CELL y);
CELL lesseq_fixnum(CELL x, CELL y);
CELL greater_fixnum(CELL x, CELL y);
CELL greatereq_fixnum(CELL x, CELL y);
2004-08-17 23:42:10 -04:00
CELL not_fixnum(CELL n);