diff --git a/compiler/ir.py b/compiler/ir.py index 55e9e44..e3f216e 100644 --- a/compiler/ir.py +++ b/compiler/ir.py @@ -229,6 +229,25 @@ class IRMul(IRAction): return f"MUL {', '.join(values)} -> {self.dest}" +class IRDiv(IRAction): + + @typecheck + def __init__(self, location: SourceLocation, dest: IRAssignable, *values: IRValue): + super().__init__(location, reads=list(values), writes=[dest]) + assert all(isinstance(v, IRValue) for v in values) + assert len(values) == 2 + + self.values = values + self.dest = dest + + def destination(self) -> IRValue: + return self.dest + + def codegen(self) -> str: + values = [str(value) for value in self.values] + return f"DIV {', '.join(values)} -> {self.dest}" + + class IRNegation(IRAction): @typecheck