aboutsummaryrefslogtreecommitdiff
path: root/src/program.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/program.c')
-rw-r--r--src/program.c51
1 files changed, 48 insertions, 3 deletions
diff --git a/src/program.c b/src/program.c
index ac3c923..169d270 100644
--- a/src/program.c
+++ b/src/program.c
@@ -656,13 +656,58 @@ static CHECK_RESULT int amal_program_read_instructions(amal_program *self, amal_
self->read_index += 3;
break;
}
- case AMAL_OP_CMP: {
- return_if_error(amal_exec_cmp(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ case AMAL_OP_EQ: {
+ return_if_error(amal_exec_eq(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_NEQ: {
+ return_if_error(amal_exec_neq(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_ILT: {
+ return_if_error(amal_exec_ilt(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_ILE: {
+ return_if_error(amal_exec_ile(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_IGT: {
+ return_if_error(amal_exec_igt(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_IGE: {
+ return_if_error(amal_exec_ige(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_LT: {
+ return_if_error(amal_exec_lt(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_LE: {
+ return_if_error(amal_exec_le(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_GT: {
+ return_if_error(amal_exec_gt(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
+ self->read_index += 3;
+ break;
+ }
+ case AMAL_OP_GE: {
+ return_if_error(amal_exec_ge(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
self->read_index += 3;
break;
}
case AMAL_OP_BIT_AND: {
- assert(bool_false && "TODO: Implement!");
+ return_if_error(amal_exec_and(executor, self->data.data[self->read_index], self->data.data[self->read_index + 1], self->data.data[self->read_index + 2]));
self->read_index += 3;
break;
}