From d1353bba0520c8e5845a887d2fef127d5884e651 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Thu, 27 Jul 2017 13:33:45 -0700 Subject: [PATCH] Assign legalization codes early. Make sure legalization codes are assigned by TargetIsa::finish() such that they can be accessed by multiple gen_* drivers. --- lib/cretonne/meta/cdsl/isa.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/cretonne/meta/cdsl/isa.py b/lib/cretonne/meta/cdsl/isa.py index 487001d9e1..3e903408ef 100644 --- a/lib/cretonne/meta/cdsl/isa.py +++ b/lib/cretonne/meta/cdsl/isa.py @@ -75,6 +75,7 @@ class TargetISA(object): self._collect_encoding_recipes() self._collect_predicates() self._collect_regclasses() + self._collect_legalize_codes() return self def _collect_encoding_recipes(self): @@ -156,6 +157,17 @@ class TargetISA(object): # `isa/registers.rs`. assert len(self.regclasses) <= 32, "Too many register classes" + def _collect_legalize_codes(self): + # type: () -> None + """ + Make sure all legalization transforms have been assigned a code. + """ + for cpumode in self.cpumodes: + self.legalize_code(cpumode.default_legalize) + for x in sorted(cpumode.type_legalize.values(), + key=lambda x: x.name): + self.legalize_code(x) + def legalize_code(self, xgrp): # type: (XFormGroup) -> int """