blob: 75fd7e436b33549a9354724c009df87c1d9858f3 [file] [log] [blame]
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
import yaml
kernels = {
"aten": "fbcode/executorch/kernels/test/supported_features_def_aten.yaml",
"optimized": "fbcode/executorch/kernels/optimized/test/supported_features_def.yaml",
"portable": "fbcode/executorch/kernels/portable/test/supported_features_def.yaml",
"quantized": "fbcode/executorch/kernels/quantized/test/supported_features_def.yaml",
"custom_kernel_example": "fbcode/executorch/kernels/test/custom_kernel_example/supported_features_def.yaml",
}
definitions_yaml = "fbcode/executorch/kernels/test/supported_features.yaml"
def gen_overriden_values():
overriden_values = {}
for name, path in kernels.items():
with open(path) as f:
overrides = yaml.full_load(f)
if not overrides:
continue
for entry in overrides:
namespace = entry["namespace"]
for feature, value in entry.items():
if feature == "namespace":
# we handled namespace previously
continue
overriden_values[namespace, feature, name] = value
return overriden_values
def make_md_table():
print("# Supported features table")
overriden_values = gen_overriden_values()
with open(definitions_yaml) as f:
definitions = yaml.full_load(f)
print("|", "|".join(["feature"] + list(kernels.keys())), "|")
print("|", "|".join(["---"] * (len(kernels) + 1)), "|")
for entry in definitions:
namespace = entry["namespace"]
print(
"|", "|".join([f"**namespace {namespace}**"] + ["---"] * len(kernels)), "|"
)
for feature, value in entry.items():
if feature == "namespace":
# we handled namespace previously
continue
values = [
str(overriden_values.get((namespace, feature, k), value["default"]))
for k in kernels
]
print("|", "|".join([feature] + values), "|")
kernels_str = "\n".join(map(str, ((k, v) for k, v in kernels.items())))
print(
f"""
# Source
All of supported features are defined in fbcode/executorch/kernels/test/supported_features.yaml.
Each kernel can have its own overrides, which are defined in
{kernels_str}
"""
)
if __name__ == "__main__":
make_md_table()