//===-- mlir-c/Dialect/Transform/Interpreter.h --------------------*- C -*-===// // // 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 // //===----------------------------------------------------------------------===// // // C interface to the transform dialect interpreter. // //===----------------------------------------------------------------------===// #include "mlir-c/IR.h" #include "mlir-c/Support.h" #ifdef __cplusplus extern "C" { #endif #define DEFINE_C_API_STRUCT … DEFINE_C_API_STRUCT(MlirTransformOptions, … } ; #undef DEFINE_C_API_STRUCT //----------------------------------------------------------------------------// // MlirTransformOptions //----------------------------------------------------------------------------// /// Creates a default-initialized transform options object. MLIR_CAPI_EXPORTED MlirTransformOptions mlirTransformOptionsCreate(void); /// Enables or disables expensive checks in transform options. MLIR_CAPI_EXPORTED void mlirTransformOptionsEnableExpensiveChecks(MlirTransformOptions transformOptions, bool enable); /// Returns true if expensive checks are enabled in transform options. MLIR_CAPI_EXPORTED bool mlirTransformOptionsGetExpensiveChecksEnabled( MlirTransformOptions transformOptions); /// Enables or disables the enforcement of the top-level transform op being /// single in transform options. MLIR_CAPI_EXPORTED void mlirTransformOptionsEnforceSingleTopLevelTransformOp( MlirTransformOptions transformOptions, bool enable); /// Returns true if the enforcement of the top-level transform op being single /// is enabled in transform options. MLIR_CAPI_EXPORTED bool mlirTransformOptionsGetEnforceSingleTopLevelTransformOp( MlirTransformOptions transformOptions); /// Destroys a transform options object previously created by /// mlirTransformOptionsCreate. MLIR_CAPI_EXPORTED void mlirTransformOptionsDestroy(MlirTransformOptions transformOptions); //----------------------------------------------------------------------------// // Transform interpreter and utilities. //----------------------------------------------------------------------------// /// Applies the transformation script starting at the given transform root /// operation to the given payload operation. The module containing the /// transform root as well as the transform options should be provided. The /// transform operation must implement TransformOpInterface and the module must /// be a ModuleOp. Returns the status of the application. MLIR_CAPI_EXPORTED MlirLogicalResult mlirTransformApplyNamedSequence( MlirOperation payload, MlirOperation transformRoot, MlirOperation transformModule, MlirTransformOptions transformOptions); /// Merge the symbols from `other` into `target`, potentially renaming them to /// avoid conflicts. Private symbols may be renamed during the merge, public /// symbols must have at most one declaration. A name conflict in public symbols /// is reported as an error before returning a failure. /// /// Note that this clones the `other` operation unlike the C++ counterpart that /// takes ownership. MLIR_CAPI_EXPORTED MlirLogicalResult mlirMergeSymbolsIntoFromClone(MlirOperation target, MlirOperation other); #ifdef __cplusplus } #endif