//===- BytecodeOpInterface.td - Bytecode OpInterface -------*- tablegen -*-===//
//
// 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
//
//===----------------------------------------------------------------------===//
//
// This file contains an interface for operation interactions with the bytecode
// serialization/deserialization, in particular for properties.
//
//===----------------------------------------------------------------------===//
#ifndef MLIR_BYTECODE_BYTECODEOPINTERFACES
#define MLIR_BYTECODE_BYTECODEOPINTERFACES
include "mlir/IR/OpBase.td"
// `BytecodeOpInterface`
def BytecodeOpInterface : OpInterface<"BytecodeOpInterface"> {
let description = [{
This interface allows operation to control the serialization of their
properties.
}];
let cppNamespace = "::mlir";
let methods = [
StaticInterfaceMethod<[{
Read the properties for this operation from the bytecode and populate the state.
}],
"LogicalResult", "readProperties", (ins
"::mlir::DialectBytecodeReader &":$reader,
"::mlir::OperationState &":$state)
>,
InterfaceMethod<[{
Write the properties for this operation to the bytecode.
}],
"void", "writeProperties", (ins "::mlir::DialectBytecodeWriter &":$writer)
>,
];
}
#endif // MLIR_BYTECODE_BYTECODEOPINTERFACES