From a89ae6ffb780983b2649a06a2a5a5a2f4c7f2668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Di=20Guardia?= Date: Wed, 26 Oct 2022 09:44:46 +0200 Subject: [PATCH] Commit TP5b --- MiniC/Lib/CFG.py | 9 ++- MiniC/Lib/Graphes.py | 8 ++- MiniC/Lib/Terminator.py | 5 +- MiniC/TP05/LivenessSSA.py | 99 ++++++++++++++++++++++++++++++ MiniC/TP05/SmartAllocator.py | 99 ++++++++++++++++++++++++++++++ MiniC/TP05/tp5b.pdf | Bin 0 -> 108775 bytes MiniC/test_codegen.py | 5 +- PLANNING.md | 7 +++ docs/_modules/Lib/CFG.html | 8 +++ docs/_modules/Lib/Graphes.html | 8 ++- docs/_modules/Lib/LinearCode.html | 8 +-- docs/_modules/Lib/RiscV.html | 5 +- docs/_modules/Lib/Statement.html | 2 +- docs/api/Lib.CFG.html | 7 +++ docs/api/Lib.Graphes.html | 6 ++ docs/api/Lib.LinearCode.html | 6 +- docs/api/Lib.Statement.html | 2 +- docs/genindex.html | 4 ++ docs/objects.inv | Bin 1895 -> 1907 bytes docs/searchindex.js | 2 +- 20 files changed, 269 insertions(+), 21 deletions(-) create mode 100644 MiniC/TP05/LivenessSSA.py create mode 100644 MiniC/TP05/SmartAllocator.py create mode 100644 MiniC/TP05/tp5b.pdf diff --git a/MiniC/Lib/CFG.py b/MiniC/Lib/CFG.py index 3937259..d4e040f 100644 --- a/MiniC/Lib/CFG.py +++ b/MiniC/Lib/CFG.py @@ -84,6 +84,14 @@ class Block: cast(List[Statement], self._instructions) + [self.get_terminator()]) + def get_body_and_terminator(self) -> List[Statement]: + """ + Return all statements of the block, except phi-nodes + (and the label of the block). + """ + return (cast(List[Statement], self._instructions) + + [self.get_terminator()]) + def get_label(self) -> Label: """Return the label of the block.""" return self._label @@ -259,7 +267,6 @@ class CFG: # nodes for name, blk in self._blocks.items(): if DF is not None: - print(str(name), blk._label) df_str = "{}" if blk not in DF or not len(DF[blk]) else str(DF[blk]) df_lab = blk.to_dot() + "\n\nDominance frontier:\n" + df_str else: diff --git a/MiniC/Lib/Graphes.py b/MiniC/Lib/Graphes.py index ed8241d..795334d 100644 --- a/MiniC/Lib/Graphes.py +++ b/MiniC/Lib/Graphes.py @@ -156,7 +156,9 @@ class Graph(GeneralGraph): """Print the graph.""" color_names = ['red', 'blue', 'green', 'yellow', 'cyan', 'magenta'] + \ [f"grey{i}" for i in range(0, 100, 10)] - color_shapes = ['ellipse', 'polygon', 'box', 'circle', 'egg', 'pentagon', 'hexagon'] + color_shapes = ['ellipse', 'box', 'diamond', 'trapezium', 'egg', + 'parallelogram', 'house', 'triangle', 'pentagon', 'hexagon', + 'septagon', 'octagon'] dot = Digraph(comment='Conflict Graph') for k in self.graph_dict: shape = None @@ -255,6 +257,10 @@ class Graph(GeneralGraph): class DiGraph(GeneralGraph): """Class for directed graphs.""" + def pred(self, v: Any) -> Set: + """Return all predecessors of the vertex `v` in the graph.""" + return {src for src, dests in self.graph_dict.items() if v in dests} + def neighbourhoods(self) -> List[Tuple[Any, Set]]: """Return all neighbourhoods in the graph.""" return list(self.graph_dict.items()) diff --git a/MiniC/Lib/Terminator.py b/MiniC/Lib/Terminator.py index 5ae5d1e..f7b2112 100644 --- a/MiniC/Lib/Terminator.py +++ b/MiniC/Lib/Terminator.py @@ -52,6 +52,9 @@ class Return(Statement): .format(self)) return self + def is_read_only(self): + return True + @dataclass(init=False) class BranchingTerminator(Instruction): @@ -126,7 +129,7 @@ def jump2terminator(j: ConditionalJump | AbsoluteJump | None, return BranchingTerminator(j.cond, j.op1, j.op2, j.label, label_else) case AbsoluteJump(): return AbsoluteJump(label=j.label) - case None: + case _: if next_label: return AbsoluteJump(next_label) else: diff --git a/MiniC/TP05/LivenessSSA.py b/MiniC/TP05/LivenessSSA.py new file mode 100644 index 0000000..6619951 --- /dev/null +++ b/MiniC/TP05/LivenessSSA.py @@ -0,0 +1,99 @@ +from typing import Dict, Set, Tuple +from Lib.Operands import Temporary +from Lib.Statement import Statement, regset_to_string +from Lib.CFG import Block, CFG +from Lib.PhiNode import PhiNode + + +class LivenessSSA: + """Liveness Analysis on a CFG under SSA Form.""" + + def __init__(self, cfg: CFG, debug=False): + self._cfg: CFG = cfg + self._debug: bool = debug + # Temporary already propagated, by Block + self._seen: Dict[Block, Set[Temporary]] = dict() + # Live Temporary at outputs of Statement + self._liveout: Dict[Statement, Set[Temporary]] = dict() + + def run(self) -> None: + """Compute the liveness.""" + # Initialization + for block in self._cfg.get_blocks(): + self._seen[block] = set() + for instr in block.get_all_statements(): + self._liveout[instr] = set() + # Start the use-def chains + for var, uses in self.gather_uses().items(): + for block, pos, instr in uses: + self.live_start(block, pos, instr, var) + # Add conflicts on phis + self.conflict_on_phis() + # Final debugging print + if self._debug: + self.print_map_in_out() + + def live_start(self, block: Block, pos: int | None, + s: Statement, var: Temporary) -> None: + """Start backward propagation of liveness information.""" + if isinstance(s, PhiNode): + assert(pos is None) + for label, var_phi in s.used().items(): + if var_phi == var: + prev_block = self._cfg.get_block(label) + self.liveout_at_block(prev_block, var) + else: + assert(pos is not None) + self.livein_at_instruction(block, pos, var) + + def liveout_at_block(self, block: Block, var: Temporary) -> None: + """Backward propagation of liveness information at a block.""" + raise NotImplementedError("LivenessSSA") # TODO (Lab 5b, Exercise 1) + + def liveout_at_instruction(self, block: Block, pos: int, var: Temporary) -> None: + """Backward propagation of liveness information at a non-phi instruction.""" + instr = block.get_body_and_terminator()[pos] + raise NotImplementedError("LivenessSSA") # TODO (Lab 5b, Exercise 1) + + def livein_at_instruction(self, block: Block, pos: int, var: Temporary) -> None: + """Backward propagation of liveness information at a non-phi instruction.""" + raise NotImplementedError("LivenessSSA") # TODO (Lab 5b, Exercise 1) + + def gather_uses(self) -> Dict[Temporary, Set[Tuple[Block, int | None, Statement]]]: + """ + Return a dictionnary giving for each variable the set of statements using it, + with additionnaly for each statement, the block of the statement and its position inside. + Phi instructions have position None in their block, while a Terminaor is at the last + position of its block. + """ + uses: Dict[Temporary, Set[Tuple[Block, int | None, Statement]]] = dict() + for block in self._cfg.get_blocks(): + # Look inside the phi node + for instr in block._phis: + assert (isinstance(instr, PhiNode)) + for var in instr.used().values(): + if isinstance(var, Temporary): + var_uses = uses.get(var, set()) + uses[var] = var_uses.union({(block, None, instr)}) + # Look inside the body and the terminator + for pos, instr in enumerate(block.get_body_and_terminator()): + for var in instr.used(): + if isinstance(var, Temporary): + var_uses = uses.get(var, set()) + uses[var] = var_uses.union({(block, pos, instr)}) + return uses + + def conflict_on_phis(self) -> None: + """Ensures that variables defined by phi instructions are in conflict with one-another.""" + raise NotImplementedError("LivenessSSA") # TODO (Lab 5b, Exercise 1) + + def print_map_in_out(self) -> None: # pragma: no cover + """Print live out sets at each instruction, group by block, useful for debugging!""" + print("Liveout: [") + for block in self._cfg.get_blocks(): + print("Block " + str(block.get_label()) + ": {\n " + + ",\n ".join("\"{}\": {}" + .format(instr, regset_to_string(self._liveout[instr])) + for instr in block.get_all_statements()) + + "}") + print("]") diff --git a/MiniC/TP05/SmartAllocator.py b/MiniC/TP05/SmartAllocator.py new file mode 100644 index 0000000..bd33371 --- /dev/null +++ b/MiniC/TP05/SmartAllocator.py @@ -0,0 +1,99 @@ +from typing import List, Dict +from Lib.Errors import MiniCInternalError +from Lib.Operands import Temporary, Operand, S, Register, Offset, DataLocation, GP_REGS +from Lib.Statement import Instruction +from Lib.Allocator import Allocator +from Lib.FunctionData import FunctionData +from Lib import RiscV +from Lib.Graphes import Graph # For Graph coloring utility functions + + +class SmartAllocator(Allocator): + + _igraph: Graph # interference graph + + def __init__(self, fdata: FunctionData, basename: str, liveness, + debug=False, debug_graphs=False): + self._liveness = liveness + self._basename: str = basename + self._debug: bool = debug + self._debug_graphs: bool = debug_graphs + super().__init__(fdata) + + def replace(self, old_instr: Instruction) -> List[Instruction]: + """ + Replace Temporary operands with the corresponding allocated + physical register (Register) OR memory location (Offset). + """ + before: List[Instruction] = [] + after: List[Instruction] = [] + subst: Dict[Operand, Operand] = {} + # TODO (lab5): Compute before, after, subst. This is similar to what + # TODO (lab5): replace from the Naive and AllInMem Allocators do (Lab 4). + raise NotImplementedError("Smart Replace (lab5)") # TODO + # And now return the new list! + instr = old_instr.substitute(subst) + return before + [instr] + after + + def prepare(self) -> None: + """ + Perform all preparatory steps related to smart register allocation: + + - Dataflow analysis to compute the liveness range of each + temporary. + - Interference graph construction. + - Graph coloring. + - Associating temporaries with actual locations. + """ + # Liveness analysis + self._liveness.run() + # Interference graph + self.build_interference_graph() + if self._debug_graphs: + print("Printing the interference graph") + self._igraph.print_dot(self._basename + "interference.dot") + # Smart Allocation via graph coloring + self.smart_alloc() + + def build_interference_graph(self) -> None: + """ + Build the interference graph (in self._igraph). + Vertices of the graph are temporaries, + and an edge exists between temporaries iff they are in conflict. + """ + self._igraph: Graph = Graph() + # Create a vertex for every temporary + # There may be temporaries the code does not use anymore, + # but it does not matter as they interfere with no one. + for v in self._fdata._pool.get_all_temps(): + self._igraph.add_vertex(v) + # Iterate over self._liveness._liveout (dictionary containing all + # live out temporaries for each instruction), and for each conflict use + # self._igraph.add_edge((t1, t2)) to add the corresponding edge. + raise NotImplementedError("build_interference_graph (lab5)") # TODO + + def smart_alloc(self) -> None: + """ + Allocates all temporaries via graph coloring. + Prints the colored graph if self._debug_graphs is True. + + Precondition: the interference graph _igraph must have been built. + """ + # Checking the interference graph has been built + if not self._igraph: + raise MiniCInternalError("Empty interference graph in the Smart Allocator") + # Coloring of the interference graph + coloringreg: Dict[Temporary, int] = self._igraph.color() + if self._debug_graphs: + print("coloring = " + str(coloringreg)) + self._igraph.print_dot(self._basename + "_colored.dot", coloringreg) + # Temporary -> DataLocation (Register or Offset) dictionary, + # specifying where a given Temporary should be allocated: + alloc_dict: Dict[Temporary, DataLocation] = dict() + # Use the coloring `coloringreg` to fill `alloc_dict`. + # Our version is less than 5 lines of code. + raise NotImplementedError("Allocation based on graph coloring (lab5)") # TODO + if self._debug: + print("Allocation:") + print(alloc_dict) + self._fdata._pool.set_temp_allocation(alloc_dict) diff --git a/MiniC/TP05/tp5b.pdf b/MiniC/TP05/tp5b.pdf new file mode 100644 index 0000000000000000000000000000000000000000..71d8d2980f9d59fd537a21410e82f8c51b7e23f0 GIT binary patch literal 108775 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 z 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 C_oH(F literal 0 HcmV?d00001 diff --git a/MiniC/test_codegen.py b/MiniC/test_codegen.py index 3f825c1..e6a16f1 100644 --- a/MiniC/test_codegen.py +++ b/MiniC/test_codegen.py @@ -129,11 +129,8 @@ class TestCodeGen(TestExpectPragmas): if "AllocationError" in result.output: if reg_alloc == 'naive': pytest.skip("Too big for the naive allocator") - elif reg_alloc == 'all-in-mem': - pytest.skip("Too big for the all in memory allocator") else: - raise Exception("AllocationError should only happen " - "for reg_alloc='naive' or reg_alloc='all_in_mem'") + pytest.skip("Offsets too big to be manipulated") elif ("NotImplementedError" in result.output and SKIP_NOT_IMPLEMENTED): pytest.skip("Feature not implemented in this compiler") diff --git a/PLANNING.md b/PLANNING.md index 89d1b92..5f25ad7 100644 --- a/PLANNING.md +++ b/PLANNING.md @@ -90,3 +90,10 @@ _Academic first semester 2022-2023_ * Code in [MiniC/TP05/](MiniC/TP05/). * Documentation (updated) [here](docs/index.html). +# Week 8: + +- :hammer: Lab 5b (1/2): Wednesday 26/10/2021, 10h15-12h15. Rooms A1 (Nicolas Chappe) & B2 (Rémi Di Guardia) + + * Smart Register Allocation [TP05b](MiniC/TP05/tp5b.pdf) + * Code in [MiniC/TP05/](MiniC/TP05/). + diff --git a/docs/_modules/Lib/CFG.html b/docs/_modules/Lib/CFG.html index b937f3f..74ad699 100644 --- a/docs/_modules/Lib/CFG.html +++ b/docs/_modules/Lib/CFG.html @@ -162,6 +162,14 @@ cast(List[Statement], self._instructions) + [self.get_terminator()]) +

[docs] def get_body_and_terminator(self) -> List[Statement]: + """ + Return all statements of the block, except phi-nodes + (and the label of the block). + """ + return (cast(List[Statement], self._instructions) + + [self.get_terminator()])
+
[docs] def get_label(self) -> Label: """Return the label of the block.""" return self._label
diff --git a/docs/_modules/Lib/Graphes.html b/docs/_modules/Lib/Graphes.html index b92f014..0b0c11e 100644 --- a/docs/_modules/Lib/Graphes.html +++ b/docs/_modules/Lib/Graphes.html @@ -234,7 +234,9 @@ """Print the graph.""" color_names = ['red', 'blue', 'green', 'yellow', 'cyan', 'magenta'] + \ [f"grey{i}" for i in range(0, 100, 10)] - color_shapes = ['ellipse', 'polygon', 'box', 'circle', 'egg', 'pentagon', 'hexagon'] + color_shapes = ['ellipse', 'box', 'diamond', 'trapezium', 'egg', + 'parallelogram', 'house', 'triangle', 'pentagon', 'hexagon', + 'septagon', 'octagon'] dot = Digraph(comment='Conflict Graph') for k in self.graph_dict: shape = None @@ -333,6 +335,10 @@
[docs]class DiGraph(GeneralGraph): """Class for directed graphs.""" +
[docs] def pred(self, v: Any) -> Set: + """Return all predecessors of the vertex `v` in the graph.""" + return {src for src, dests in self.graph_dict.items() if v in dests}
+
[docs] def neighbourhoods(self) -> List[Tuple[Any, Set]]: """Return all neighbourhoods in the graph.""" return list(self.graph_dict.items())
diff --git a/docs/_modules/Lib/LinearCode.html b/docs/_modules/Lib/LinearCode.html index 7c04838..fd2f8e4 100644 --- a/docs/_modules/Lib/LinearCode.html +++ b/docs/_modules/Lib/LinearCode.html @@ -131,10 +131,8 @@
[docs] def iter_statements(self, f) -> None: """Iterate over instructions. - For each real instruction (not label or comment), call f, - which must return either None or a list of instruction. If it - returns None, nothing happens. If it returns a list, then the - instruction is replaced by this list. + For each real instruction i (not label or comment), replace it + with the list of instructions given by f(i). """ self._listIns = _iter_statements(self._listIns, f)
@@ -153,7 +151,7 @@
[docs] def add_instruction_PRINTLN_INT(self, reg: DataLocation) -> None: """Print integer value, with newline. (see Expand)""" - # a print instruction generates the temp it prints. + # A print instruction generates the temp it prints. self.add_instruction(mv(A0, reg)) self.add_instruction(call(Function('println_int')))
diff --git a/docs/_modules/Lib/RiscV.html b/docs/_modules/Lib/RiscV.html index d05ee36..218da60 100644 --- a/docs/_modules/Lib/RiscV.html +++ b/docs/_modules/Lib/RiscV.html @@ -146,7 +146,10 @@
[docs]def xor(dr: Operand, sr1: Operand, sr2orimm7: Operand) -> Instru3A: # pragma: no cover - return Instru3A("xor", dr, sr1, sr2orimm7)
+ if isinstance(sr2orimm7, Immediate): + return Instru3A("xori", dr, sr1, sr2orimm7) + else: + return Instru3A("xor", dr, sr1, sr2orimm7)
[docs]def li(dr: Operand, imm7: Immediate) -> Instru3A: diff --git a/docs/_modules/Lib/Statement.html b/docs/_modules/Lib/Statement.html index 9cb51cd..0f8728f 100644 --- a/docs/_modules/Lib/Statement.html +++ b/docs/_modules/Lib/Statement.html @@ -91,7 +91,7 @@ from Lib.Errors import MiniCInternalError -
[docs]def regset_to_string(registerset): +
[docs]def regset_to_string(registerset) -> str: """Utility function: pretty-prints a set of locations.""" return "{" + ",".join(str(x) for x in registerset) + "}"
diff --git a/docs/api/Lib.CFG.html b/docs/api/Lib.CFG.html index 26ea8b4..848910e 100644 --- a/docs/api/Lib.CFG.html +++ b/docs/api/Lib.CFG.html @@ -115,6 +115,13 @@ See the documentation for +
+get_body_and_terminator() List[Statement][source]
+

Return all statements of the block, except phi-nodes +(and the label of the block).

+
+
get_label() Label[source]
diff --git a/docs/api/Lib.Graphes.html b/docs/api/Lib.Graphes.html index 451ef9e..194c749 100644 --- a/docs/api/Lib.Graphes.html +++ b/docs/api/Lib.Graphes.html @@ -230,6 +230,12 @@ Return a dict vertex -> color, where color is an integer (0, 1, …).

class Lib.Graphes.DiGraph(graph_dict=None)[source]

Bases: GeneralGraph

Class for directed graphs.

+
+
+pred(v: Any) Set[source]
+

Return all predecessors of the vertex v in the graph.

+
+
neighbourhoods() List[Tuple[Any, Set]][source]
diff --git a/docs/api/Lib.LinearCode.html b/docs/api/Lib.LinearCode.html index 6c20f36..9b7cb4f 100644 --- a/docs/api/Lib.LinearCode.html +++ b/docs/api/Lib.LinearCode.html @@ -110,10 +110,8 @@ the RiscV program to a file.

iter_statements(f) None[source]

Iterate over instructions. -For each real instruction (not label or comment), call f, -which must return either None or a list of instruction. If it -returns None, nothing happens. If it returns a list, then the -instruction is replaced by this list.

+For each real instruction i (not label or comment), replace it +with the list of instructions given by f(i).

diff --git a/docs/api/Lib.Statement.html b/docs/api/Lib.Statement.html index ed36068..cc7ffc7 100644 --- a/docs/api/Lib.Statement.html +++ b/docs/api/Lib.Statement.html @@ -88,7 +88,7 @@ is inherited by AbsoluteJump and ConditionalJump.

-Lib.Statement.regset_to_string(registerset)[source]
+Lib.Statement.regset_to_string(registerset) str[source]

Utility function: pretty-prints a set of locations.

diff --git a/docs/genindex.html b/docs/genindex.html index 0c266ee..9bd7bb6 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -325,6 +325,8 @@
  • get_blocks() (Lib.CFG.CFG method)
  • get_body() (Lib.CFG.Block method) +
  • +
  • get_body_and_terminator() (Lib.CFG.Block method)
  • get_end() (Lib.CFG.CFG method)
  • @@ -635,6 +637,8 @@