aboutsummaryrefslogtreecommitdiff
path: root/tools/genspec.py
diff options
context:
space:
mode:
authorKevin Petit <kevin.petit@arm.com>2023-04-26 16:25:52 +0100
committerKevin Petit <kevin.petit@arm.com>2023-04-26 16:57:32 +0100
commit211c5f5294cd08ebbf61278823e5195fef181dd7 (patch)
tree14cae4ec82883302b9966b28ef2330798f8e4987 /tools/genspec.py
parente0fee3d30085a6d07b104447f5b128e81126445e (diff)
downloadspecification-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/genspec.py')
-rwxr-xr-xtools/genspec.py24
1 files changed, 20 insertions, 4 deletions
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)