Assign legalization codes early.

Make sure legalization codes are assigned by TargetIsa::finish() such
that they can be accessed by multiple gen_* drivers.
This commit is contained in:
Jakob Stoklund Olesen
2017-07-27 13:33:45 -07:00
parent b547b78683
commit d1353bba05

View File

@@ -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
"""