]> gitweb.factorcode.org Git - factor.git/blob - native/fixnum.h
first cut at floats
[factor.git] / native / fixnum.h
1 #define FIXNUM_MAX (LONG_MAX >> TAG_BITS)
2 #define FIXNUM_MIN (LONG_MIN >> TAG_BITS)
3
4 #define FIXNUM long int /* unboxed */
5
6 INLINE FIXNUM untag_fixnum_fast(CELL tagged)
7 {
8         return ((FIXNUM)tagged) >> TAG_BITS;
9 }
10
11 INLINE CELL tag_fixnum(FIXNUM untagged)
12 {
13         return RETAG(untagged << TAG_BITS,FIXNUM_TYPE);
14 }
15
16 void primitive_fixnump(void);
17 void primitive_not(void);
18
19 FIXNUM to_fixnum(CELL tagged);
20 void primitive_to_fixnum(void);
21
22 CELL number_eq_fixnum(CELL x, CELL y);
23 CELL add_fixnum(CELL x, CELL y);
24 CELL subtract_fixnum(CELL x, CELL y);
25 CELL multiply_fixnum(CELL x, CELL y);
26 FIXNUM gcd_fixnum(FIXNUM x, FIXNUM y);
27 CELL divide_fixnum(CELL x, CELL y);
28 CELL divint_fixnum(CELL x, CELL y);
29 CELL divfloat_fixnum(CELL x, CELL y);
30 CELL divmod_fixnum(CELL x, CELL y);
31 CELL mod_fixnum(CELL x, CELL y);
32 CELL and_fixnum(CELL x, CELL y);
33 CELL or_fixnum(CELL x, CELL y);
34 CELL xor_fixnum(CELL x, CELL y);
35 CELL shiftleft_fixnum(CELL x, CELL y);
36 CELL shiftright_fixnum(CELL x, CELL y);
37 CELL less_fixnum(CELL x, CELL y);
38 CELL lesseq_fixnum(CELL x, CELL y);
39 CELL greater_fixnum(CELL x, CELL y);
40 CELL greatereq_fixnum(CELL x, CELL y);