From e51092c8c188a6bc3f8f42d99858f0483e54d9da Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Fri, 23 Sep 2016 22:40:26 -0400 Subject: [PATCH] Added bitwise and/or --- include/cyclone/runtime.h | 2 ++ runtime.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/include/cyclone/runtime.h b/include/cyclone/runtime.h index b79735dd..4bc02445 100644 --- a/include/cyclone/runtime.h +++ b/include/cyclone/runtime.h @@ -258,6 +258,8 @@ object Cyc_sum(void *data, object cont, int argc, object n, ...); object Cyc_sub(void *data, object cont, int argc, object n, ...); object Cyc_mul(void *data, object cont, int argc, object n, ...); object Cyc_div(void *data, object cont, int argc, object n, ...); +object Cyc_bit_and(void *data, object n1, object n2); +object Cyc_bit_or(void *data, object n1, object n2); object Cyc_num_op_va_list(void *data, int argc, object(fn_op(void *, common_type *, object)), int default_no_args, int default_one_arg, object n, diff --git a/runtime.c b/runtime.c index f999726f..cb07f8ad 100644 --- a/runtime.c +++ b/runtime.c @@ -4500,6 +4500,22 @@ void vpbuffer_free(void **buf) free(buf); } +object Cyc_bit_and(void *data, object n1, object n2) +{ + Cyc_check_int(data, n1); + Cyc_check_int(data, n2); + return (obj_int2obj( + obj_obj2int(n1) & obj_obj2int(n2))); +} + +object Cyc_bit_or(void *data, object n1, object n2) +{ + Cyc_check_int(data, n1); + Cyc_check_int(data, n2); + return (obj_int2obj( + obj_obj2int(n1) | obj_obj2int(n2))); +} + /* RNG section */ #define norm 2.328306549295728e-10 #define m1 4294967087.0