| #!/usr/bin/env python3 | |
| # Copyright 2025 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| """MLIR passes markdown document postprocessor for website generation. | |
| The markdown files generated by `iree-tblgen` and `mlir-tblgen` are generic, | |
| but we want to process them through the same static site generator (mkdocs) | |
| as the rest of our website. This script allows us to make certain style and | |
| structure changes to each file in a directory. | |
| Usage (typically invoked by generate_extra_files.sh, edits files in-place): | |
| postprocess_passes_docs.py ${WEBSITE_DOCS_BUILD_DIRECTORY} | |
| """ | |
| import argparse | |
| import fileinput | |
| import os | |
| import pathlib | |
| import re | |
| def main(args): | |
| directory = args.directory | |
| files = list(pathlib.Path(directory).iterdir()) | |
| # Add explicit custom_edit_url links as these markdown files were generated | |
| # from other source files. | |
| passes_sources_map = { | |
| # Dialects: | |
| "Check.md": "compiler/src/iree/compiler/Modules/Check/Transforms", | |
| "Flow.md": "compiler/src/iree/compiler/Dialect/Flow/Transforms", | |
| "Encoding.md": "compiler/src/iree/compiler/Dialect/Encoding/Transforms", | |
| "HAL.md": "compiler/src/iree/compiler/Dialect/HAL/Transforms", | |
| "HALInline.md": "compiler/src/iree/compiler/Modules/HAL/Inline/Transforms", | |
| "HALLoader.md": "compiler/src/iree/compiler/Modules/HAL/Loader/Transforms", | |
| "IOParameters.md": "compiler/src/iree/compiler/Modules/IO/Parameters/Transforms", | |
| "IREECodegen.md": "compiler/src/iree/compiler/Codegen/Dialect/Codegen/Transforms", | |
| "IREEGPU.md": "compiler/src/iree/compiler/Codegen/Dialect/GPU/Transforms", | |
| "IREEVectorExt.md": "compiler/src/iree/compiler/Codegen/Dialect/VectorExt/Transforms", | |
| "LinalgExt.md": "compiler/src/iree/compiler/Dialect/LinalgExt/Transforms", | |
| "Stream.md": "compiler/src/iree/compiler/Dialect/Stream/Transforms", | |
| "TensorExt.md": "compiler/src/iree/compiler/Dialect/TensorExt/Transforms", | |
| "Util.md": "compiler/src/iree/compiler/Dialect/Util/Transforms", | |
| "VM.md": "compiler/src/iree/compiler/Dialect/VM/Transforms", | |
| "VMVX.md": "compiler/src/iree/compiler/Dialect/VMVX/Transforms", | |
| # Pipelines: | |
| "ConstEval.md": "compiler/src/iree/compiler/ConstEval", | |
| "DispatchCreation.md": "compiler/src/iree/compiler/DispatchCreation", | |
| "GlobalOptimization.md": "compiler/src/iree/compiler/GlobalOptimization", | |
| "InputConversion.md": "compiler/src/iree/compiler/InputConversion/Common", | |
| "Preprocessing.md": "compiler/src/iree/compiler/Preprocessing/Common", | |
| # Codegen: | |
| "CodegenCommonCPU.md": "Codegen/Common/CPU", | |
| "CodegenCommonGPU.md": "Codegen/Common/GPU", | |
| "CodegenCommon.md": "Codegen/Common", | |
| "CodegenDialectGPU.md": "Codegen/Dialect/GPU/Transforms", | |
| "CodegenDialectVectorExt.md": "Codegen/Dialect/VectorExt/Transforms", | |
| "CodegenLLVMCPU.md": "Codegen/LLVMCPU", | |
| "CodegenLLVMGPU.md": "Codegen/LLVMGPU", | |
| "CodegenSPIRV.md": "Codegen/SPIRV", | |
| "CodegenVMVX.md": "Codegen/VMVX", | |
| } | |
| base_url = "https://github.com/iree-org/iree/tree/main/" | |
| for file in files: | |
| filename = pathlib.Path(file).name | |
| relative_path = passes_sources_map.get(filename, None) | |
| if not relative_path: | |
| continue | |
| full_url = base_url + relative_path | |
| with open(file, "r+", encoding="utf8") as f: | |
| content = f.read() | |
| f.seek(0, 0) | |
| frontmatter = f"""--- | |
| custom_edit_url: {full_url} | |
| --- | |
| """ | |
| f.write(frontmatter + os.linesep + content) | |
| def parse_arguments(): | |
| parser = argparse.ArgumentParser(description="Passes doc postprocessor.") | |
| parser.add_argument( | |
| "directory", | |
| help="Passes docs directory to edit in-place.", | |
| ) | |
| return parser.parse_args() | |
| if __name__ == "__main__": | |
| main(parse_arguments()) |