diff --git a/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml b/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml --- a/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml +++ b/mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml @@ -1,4 +1,5 @@ -# Auto-generated file. Do not edit! +### AUTOGENERATED from core_named_ops.py +### To regenerate, run: bin/update_core_linalg_named_ops.sh --- !LinalgOpConfig metadata: !LinalgOpMetadata name: matmul @@ -2274,4 +2275,3 @@ operands: - !ScalarExpression scalar_arg: I - diff --git a/mlir/python/mlir/dialects/linalg/opdsl/dump_oplib.py b/mlir/python/mlir/dialects/linalg/opdsl/dump_oplib.py --- a/mlir/python/mlir/dialects/linalg/opdsl/dump_oplib.py +++ b/mlir/python/mlir/dialects/linalg/opdsl/dump_oplib.py @@ -81,7 +81,6 @@ # Print. if args.format == "yaml": - print("# Auto-generated file. Do not edit!") print(yaml_dump_all(configs)) elif args.format == "repr": for config in configs: diff --git a/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt b/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt --- a/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt +++ b/mlir/tools/mlir-linalg-ods-gen/CMakeLists.txt @@ -69,3 +69,7 @@ endif() endif() endif() + +configure_file( + update_core_linalg_named_ops.sh.in + ${MLIR_TOOLS_DIR}/update_core_linalg_named_ops.sh) diff --git a/mlir/tools/mlir-linalg-ods-gen/update_core_linalg_named_ops.sh.in b/mlir/tools/mlir-linalg-ods-gen/update_core_linalg_named_ops.sh.in new file mode 100755 --- /dev/null +++ b/mlir/tools/mlir-linalg-ods-gen/update_core_linalg_named_ops.sh.in @@ -0,0 +1,32 @@ +#!/bin/bash +# Part of the LLVM Project, 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 + +# Updates the LinalgStructuredOps.yaml file based on the +# core_named_ops.py source of truth. + +set -eu -o errtrace +shopt -s inherit_errexit + +mlir_source_dir="@MLIR_SOURCE_DIR@" +python_exe="@Python3_EXECUTABLE@" +mlir_binary_dir="@MLIR_BINARY_DIR@" +python_package_dir="$mlir_binary_dir/python_packages/mlir_core" + +if ! [[ -d "$python_package_dir" ]]; then + echo "ERROR: Python bindings not found. Build with -DMLIR_ENABLE_BINDINGS_PYTHON=ON" + exit 1 +fi + +dest_file="$mlir_source_dir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml" +echo "Updating ops in $dest_file" + +export PYTHONPATH="$python_package_dir" +OUTPUT="$( + echo "### AUTOGENERATED from core_named_ops.py" && \ + echo "### To regenerate, run: bin/update_core_linalg_named_ops.sh" && \ + "$python_exe" -m mlir.dialects.linalg.opdsl.dump_oplib .ops.core_named_ops \ +)" +echo "$OUTPUT" > "$dest_file" +echo "Success."