From 6630fa13a54f2036085f270b262c5e4425ee74b2 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Fri, 12 Apr 2024 16:38:32 +0200 Subject: [PATCH] ir: add dedicated IR item for division --- compiler/ir.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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