From 211c5f5294cd08ebbf61278823e5195fef181dd7 Mon Sep 17 00:00:00 2001 From: Kevin Petit Date: Wed, 26 Apr 2023 16:25:52 +0100 Subject: 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 --- tools/genspec.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'tools/genspec.py') diff --git a/tools/genspec.py b/tools/genspec.py index 2bc1283..f495296 100755 --- a/tools/genspec.py +++ b/tools/genspec.py @@ -58,11 +58,9 @@ class TOSASpecAsciidocGenerator: for arg in op.arguments: if (len(arg.levellimits) > 0): for limit in arg.levellimits: - leveltext += " LEVEL_CHECK(" + limit[0] + " <= " + limit[1] + ");\n" + leveltext += "LEVEL_CHECK(" + limit[0] + " <= " + limit[1] + ");\n" if (len(leveltext) > 0): - file.write( - f"[source,c++]\n----\nif (level != tosa_level_none) {{\n{leveltext}}}\n----\n" - ) + file.write(f"[source,c++]\n----\n{leveltext}\n----\n") def generate(self, outdir): os.makedirs(outdir, exist_ok=True) @@ -77,6 +75,24 @@ class TOSASpecAsciidocGenerator: f.write(' draft') f.write('\n') + # Generate level maximums table + with open(os.path.join(outdir, "levels.adoc"), 'w') as f: + f.write('|===\n') + f.write('|tosa_level_t') + for level in self.spec.levels: + f.write('|tosa_level_{}'.format(level.name)) + f.write('\n') + f.write('|Description') + for level in self.spec.levels: + f.write('|{}'.format(level.desc)) + f.write('\n') + for param in self.spec.levels[0].maximums: + f.write('|{}'.format(param)) + for level in self.spec.levels: + f.write('|{}'.format(level.maximums[param])) + f.write('\n') + f.write('|===\n') + # Generator operators opdir = os.path.join(outdir, "operators") os.makedirs(opdir, exist_ok=True) -- cgit v1.2.1