diff options
author | Kevin Petit <kevin.petit@arm.com> | 2023-04-26 16:25:52 +0100 |
---|---|---|
committer | Kevin Petit <kevin.petit@arm.com> | 2023-04-26 16:57:32 +0100 |
commit | 211c5f5294cd08ebbf61278823e5195fef181dd7 (patch) | |
tree | 14cae4ec82883302b9966b28ef2330798f8e4987 /tools/tosa.py | |
parent | e0fee3d30085a6d07b104447f5b128e81126445e (diff) | |
download | specification-211c5f5294cd08ebbf61278823e5195fef181dd7.tar.gz |
Generate level maximums from the XML
Also make LEVEL_CHECKs unconditional in pseudocode. The various
MAX_* maximums are always defined.
Change-Id: Iee5d8ade5cba3b4f86cc09f8b867b59fe18f5cfe
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
Diffstat (limited to 'tools/tosa.py')
-rw-r--r-- | tools/tosa.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tools/tosa.py b/tools/tosa.py index 9af0756..265d5f6 100644 --- a/tools/tosa.py +++ b/tools/tosa.py @@ -13,6 +13,11 @@ class TOSAEnum: self.description = description self.values = values +class TOSALevel: + def __init__(self, name, desc, maximums): + self.name = name + self.desc = desc + self.maximums = maximums class TOSAOperatorArgument: def __init__(self, name, description, categories, ty, shape, levellimits): @@ -49,12 +54,15 @@ class TOSASpec: def __init__(self, xmlpath): tree = ET.parse(xmlpath) self.xmlroot = tree.getroot() + self.levels = [] self.operatorgroups = [] self.enums = [] self.__load_spec() def __load_spec(self): self.__load_version() + for level in self.xmlroot.findall("./levels/level"): + self.levels.append(self.__load_level(level)) for group in self.xmlroot.findall("./operators/operatorgroup"): self.operatorgroups.append(self.__load_operator_group(group)) for enum in self.xmlroot.findall("./enum"): @@ -70,6 +78,17 @@ class TOSASpec: else: self.version_is_draft = False + def __load_level(self, level): + name = level.get("name") + desc = level.text.strip() + maximums = { + 'MAX_RANK': level.get("max_rank"), + 'MAX_KERNEL': level.get("max_kernel"), + 'MAX_STRIDE': level.get("max_stride"), + 'MAX_SCALE': level.get("max_scale"), + } + return TOSALevel(name, desc, maximums) + def __load_operator_group(self, group): name = group.get("name") operators = [] @@ -128,4 +147,4 @@ class TOSASpec: values = [] for val in arg.findall("enumval"): values.append((val.get("name"), val.get("value"), val.get("description"))) - return TOSAEnum(name, desc, values)
\ No newline at end of file + return TOSAEnum(name, desc, values) |