aboutsummaryrefslogtreecommitdiff
path: root/src/exact_value.cpp
diff options
context:
space:
mode:
authorgingerBill <bill+github@gingerbill.org>2016-08-10 10:00:57 +0100
committergingerBill <bill+github@gingerbill.org>2016-08-10 10:00:57 +0100
commitc930841f834e43df28be41e8e3509773a523ed0f (patch)
treef4de597e6028c64a7454ff116652f80c0d58ba34 /src/exact_value.cpp
parentcff5e54ec6b8d9b95effcad1ca2dd8bb0988517b (diff)
f16/f128,u|i128, basic vector support.
Diffstat (limited to 'src/exact_value.cpp')
-rw-r--r--src/exact_value.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/exact_value.cpp b/src/exact_value.cpp
index f9a069c73..d62779462 100644
--- a/src/exact_value.cpp
+++ b/src/exact_value.cpp
@@ -272,6 +272,8 @@ ExactValue exact_binary_operator_value(Token op, ExactValue x, ExactValue y) {
case Token_Or: c = a | b; break;
case Token_Xor: c = a ^ b; break;
case Token_AndNot: c = a&(~b); break;
+ case Token_Shl: c = a << b; break;
+ case Token_Shr: c = a >> b; break;
default: goto error;
}
return make_exact_value_integer(c);
@@ -296,10 +298,11 @@ error:
return error_value;
}
-gb_inline ExactValue exact_value_add(ExactValue x, ExactValue y) { Token op = {Token_Add}; return exact_binary_operator_value(op, x, y); }
-gb_inline ExactValue exact_value_sub(ExactValue x, ExactValue y) { Token op = {Token_Sub}; return exact_binary_operator_value(op, x, y); }
-gb_inline ExactValue exact_value_mul(ExactValue x, ExactValue y) { Token op = {Token_Mul}; return exact_binary_operator_value(op, x, y); }
-gb_inline ExactValue exact_value_quo(ExactValue x, ExactValue y) { Token op = {Token_Quo}; return exact_binary_operator_value(op, x, y); }
+gb_inline ExactValue exact_value_add(ExactValue x, ExactValue y) { Token op = {Token_Add}; return exact_binary_operator_value(op, x, y); }
+gb_inline ExactValue exact_value_sub(ExactValue x, ExactValue y) { Token op = {Token_Sub}; return exact_binary_operator_value(op, x, y); }
+gb_inline ExactValue exact_value_mul(ExactValue x, ExactValue y) { Token op = {Token_Mul}; return exact_binary_operator_value(op, x, y); }
+gb_inline ExactValue exact_value_quo(ExactValue x, ExactValue y) { Token op = {Token_Quo}; return exact_binary_operator_value(op, x, y); }
+gb_inline ExactValue exact_value_shift(Token op, ExactValue x, ExactValue y) { return exact_binary_operator_value(op, x, y); }
i32 cmp_f64(f64 a, f64 b) {