about summary refs log tree commit diff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorBaitinq <[email protected]>2025-03-09 00:46:07 +0100
committerBaitinq <[email protected]>2025-03-09 00:46:07 +0100
commit7dda19a956a19aeaa25fc23d8815dac250b4ae8a (patch)
treee84d34665c922b4babc23837a6549a79ab9c9d1c /src/codegen.zig
parentFeature: Add support for GT and LT operators (diff)
downloadpry-lang-7dda19a956a19aeaa25fc23d8815dac250b4ae8a.tar.gz
pry-lang-7dda19a956a19aeaa25fc23d8815dac250b4ae8a.tar.bz2
pry-lang-7dda19a956a19aeaa25fc23d8815dac250b4ae8a.zip
Feature: Add support for mod operator
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig14
1 files changed, 10 insertions, 4 deletions
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);