Add more built-in boolean-specific instructions.
This commit is contained in:
@@ -153,7 +153,7 @@ void instruction_if::gen_llvm(llvm_context& ctx, llvm::Function* f) const {
|
||||
ctx.builder.CreateBr(resume_block);
|
||||
|
||||
ctx.builder.SetInsertPoint(zero_block);
|
||||
for(auto& instruction : on_true) {
|
||||
for(auto& instruction : on_false) {
|
||||
instruction->gen_llvm(ctx, f);
|
||||
}
|
||||
ctx.builder.CreateBr(resume_block);
|
||||
@@ -184,6 +184,9 @@ void instruction_binop::gen_llvm(llvm_context& ctx, Function* f) const {
|
||||
case MINUS: result = ctx.builder.CreateSub(left_int, right_int); break;
|
||||
case TIMES: result = ctx.builder.CreateMul(left_int, right_int); break;
|
||||
case DIVIDE: result = ctx.builder.CreateSDiv(left_int, right_int); break;
|
||||
case MODULO: result = ctx.builder.CreateSRem(left_int, right_int); break;
|
||||
case EQUALS: result = ctx.builder.CreateICmpEQ(left_int, right_int); break;
|
||||
case LESS_EQUALS: result = ctx.builder.CreateICmpSLE(left_int, right_int); break;
|
||||
}
|
||||
ctx.create_push(f, ctx.create_num(f, result));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user