From 7dda19a956a19aeaa25fc23d8815dac250b4ae8a Mon Sep 17 00:00:00 2001 From: Baitinq Date: Sun, 9 Mar 2025 00:46:07 +0100 Subject: Feature: Add support for mod operator --- src/codegen.zig | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/codegen.zig') diff --git a/src/codegen.zig b/src/codegen.zig index 1e9a33e..98b7c16 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -380,10 +380,16 @@ pub const CodeGen = struct { const rhs_value = try self.generate_expression_value(exp.rhs, null); var result: types.LLVMValueRef = undefined; - if (exp.multiplication) { - result = core.LLVMBuildMul(self.builder, lhs_value.value, rhs_value.value, "") orelse return CodeGenError.CompilationError; - } else { - result = core.LLVMBuildSDiv(self.builder, lhs_value.value, rhs_value.value, "") orelse return CodeGenError.CompilationError; + switch (exp.typ) { + .MUL => { + result = core.LLVMBuildMul(self.builder, lhs_value.value, rhs_value.value, "") orelse return CodeGenError.CompilationError; + }, + .DIV => { + result = core.LLVMBuildSDiv(self.builder, lhs_value.value, rhs_value.value, "") orelse return CodeGenError.CompilationError; + }, + .MOD => { + result = core.LLVMBuildSRem(self.builder, lhs_value.value, rhs_value.value, "") orelse return CodeGenError.CompilationError; + }, } return self.generate_literal(result, core.LLVMInt64Type(), name); -- cgit 1.4.1