aboutsummaryrefslogtreecommitdiff
path: root/tools/genspec.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/genspec.py')
-rwxr-xr-xtools/genspec.py65
1 files changed, 30 insertions, 35 deletions
diff --git a/tools/genspec.py b/tools/genspec.py
index b8e961b..11a3e72 100755
--- a/tools/genspec.py
+++ b/tools/genspec.py
@@ -1,11 +1,8 @@
#!/usr/bin/env python3
-# Copyright (c) 2023, ARM Limited.
-# SPDX-License-Identifier: Apache-2.0
import os
import tosa
-
class TOSASpecAsciidocGenerator:
def __init__(self, spec):
self.spec = spec
@@ -39,29 +36,28 @@ class TOSASpecAsciidocGenerator:
cattext = cats[0].name.title()
# Type
- if arg.type == "tensor_t":
- argtype = "T<{}>".format(arg.tensor_element_type)
- elif arg.type == "tensor_list_t":
- if arg.tensor_element_type == "-":
- argtype = "tensor_list_t"
+ if arg.type == 'tensor_t':
+ argtype = 'T<{}>'.format(arg.tensor_element_type)
+ elif arg.type == 'tensor_list_t':
+ if arg.tensor_element_type == '-':
+ argtype = 'tensor_list_t'
else:
- argtype = "tensor_list_t<T<{}>>".format(arg.tensor_element_type)
+ argtype = 'tensor_list_t<T<{}>>'.format(arg.tensor_element_type)
else:
argtype = arg.type
# Rank
if len(arg.rank) > 0:
- if arg.rank[0] == arg.rank[1]:
- rank = f"{arg.rank[0]}"
+ if (arg.rank[0] == arg.rank[1]):
+ rank = f'{arg.rank[0]}'
else:
- rank = f"{arg.rank[0]} to {arg.rank[1]}"
+ rank = f'{arg.rank[0]} to {arg.rank[1]}'
else:
rank = ""
# Format and write line
file.write(
- f"|{cattext}|{argtype}|{arg.name}|{arg.shape}"
- f"|{rank}|{arg.description}\n"
+ f"|{cattext}|{argtype}|{arg.name}|{arg.shape}|{rank}|{arg.description}\n"
)
file.write("|===\n")
@@ -84,10 +80,10 @@ class TOSASpecAsciidocGenerator:
file.write("\n*Operation Function:*\n\n")
leveltext = ""
for arg in op.arguments:
- if len(arg.levellimits) > 0:
+ if (len(arg.levellimits) > 0):
for limit in arg.levellimits:
- leveltext += "LEVEL_CHECK(" + limit[0] + " <= " + limit[1] + ");\n"
- if len(leveltext) > 0:
+ leveltext += "LEVEL_CHECK(" + limit[0] + " <= " + limit[1] + ");\n"
+ if (len(leveltext) > 0):
file.write(f"[source,c++]\n----\n{leveltext}\n----\n")
def generate(self, outdir):
@@ -97,29 +93,29 @@ class TOSASpecAsciidocGenerator:
major = self.spec.version_major
minor = self.spec.version_minor
patch = self.spec.version_patch
- with open(os.path.join(outdir, "version.adoc"), "w") as f:
- f.write(":tosa-version-string: {}.{}.{}".format(major, minor, patch))
+ with open(os.path.join(outdir, "version.adoc"), 'w') as f:
+ f.write(':tosa-version-string: {}.{}.{}'.format(major, minor, patch))
if self.spec.version_is_draft:
- f.write(" draft")
- f.write("\n")
+ 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")
+ 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")
+ 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")
+ f.write('|{}'.format(level.desc))
+ f.write('\n')
for param in self.spec.levels[0].maximums:
- f.write("|{}".format(param))
+ f.write('|{}'.format(param))
for level in self.spec.levels:
- f.write("|{}".format(level.maximums[param]))
- f.write("\n")
- f.write("|===\n")
+ f.write('|{}'.format(level.maximums[param]))
+ f.write('\n')
+ f.write('|===\n')
# Generator operators
opdir = os.path.join(outdir, "operators")
@@ -128,11 +124,10 @@ class TOSASpecAsciidocGenerator:
for op in group.operators:
with open(os.path.join(opdir, op.name + ".adoc"), "w") as f:
self.generate_operator(op, f)
- with open(os.path.join(outdir, "enums.adoc"), "w") as f:
+ with open(os.path.join(outdir, "enums.adoc"), 'w') as f:
for enum in self.spec.enums:
self.generate_enum(enum, f)
-
if __name__ == "__main__":
import argparse