3 #define BINARY_OP(x,y) \
6 type_check(FIXNUM_TYPE,y); \
8 type_check(FIXNUM_TYPE,x);
10 void primitive_fixnump(void)
12 check_non_empty(env.dt);
13 env.dt = tag_boolean(TAG(env.dt) == FIXNUM_TYPE);
16 void primitive_divide(void)
19 /* division takes common factor of 8 out. */
20 env.dt = tag_fixnum(x / y);
23 void primitive_mod(void)
29 void primitive_and(void)
35 void primitive_or(void)
41 void primitive_xor(void)
47 void primitive_not(void)
49 type_check(FIXNUM_TYPE,env.dt);
50 env.dt = RETAG(UNTAG(~env.dt),FIXNUM_TYPE);
53 void primitive_shiftleft(void)
56 env.dt = UNTAG(x >> (y >> TAG_BITS));
59 void primitive_shiftright(void)
62 env.dt = x << (y >> TAG_BITS);