72 lines
3.7 KiB
C++
72 lines
3.7 KiB
C++
/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|
|
|* *|
|
|
|* Dialect Interface Declarations *|
|
|
|* *|
|
|
|* Automatically generated file, do not edit! *|
|
|
|* *|
|
|
\*===----------------------------------------------------------------------===*/
|
|
|
|
namespace mlir {
|
|
|
|
/// Base class for dialect interfaces used to import LLVM IR. Dialects that can
|
|
/// be imported should provide an implementation of this interface for the
|
|
/// supported intrinsics. The interface may be implemented in a separate library
|
|
/// to avoid the "main" dialect library depending on LLVM IR. The interface can
|
|
/// be attached using the delayed registration mechanism available in
|
|
/// DialectRegistry.
|
|
class LLVMImportDialectInterface : public ::mlir::DialectInterface::Base<LLVMImportDialectInterface> {
|
|
public:
|
|
|
|
/// Hook for derived dialect interfaces to implement the import of
|
|
/// intrinsics into MLIR.
|
|
virtual ::llvm::LogicalResult convertIntrinsic(::mlir::OpBuilder & builder, ::llvm::CallInst * inst, ::mlir::LLVM::ModuleImport & moduleImport) const {
|
|
return ::llvm::failure();
|
|
}
|
|
|
|
/// Hook for derived dialect interfaces to implement the import of
|
|
/// instructions into MLIR.
|
|
virtual ::llvm::LogicalResult convertInstruction(::mlir::OpBuilder & builder, ::llvm::Instruction * inst, ::mlir::ArrayRef<llvm::Value *> llvmOperands, ::mlir::LLVM::ModuleImport & moduleImport) const {
|
|
return ::llvm::failure();
|
|
}
|
|
|
|
/// Hook for derived dialect interfaces to implement the import of metadata
|
|
/// into MLIR. Attaches the converted metadata kind and node to the provided
|
|
/// operation.
|
|
virtual ::mlir::LogicalResult setMetadataAttrs(::mlir::OpBuilder & builder, unsigned kind, ::llvm::MDNode * node, ::mlir::Operation * op, ::mlir::LLVM::ModuleImport & moduleImport) const {
|
|
return ::llvm::failure();
|
|
}
|
|
|
|
/// Hook for derived dialect interfaces to publish the supported intrinsics.
|
|
/// As every LLVM IR intrinsic has a unique integer identifier, the function
|
|
/// returns the list of supported intrinsic identifiers.
|
|
virtual ::mlir::ArrayRef<unsigned> getSupportedIntrinsics() const {
|
|
return {};
|
|
}
|
|
|
|
/// Hook for derived dialect interfaces to publish the supported instructions.
|
|
/// As every LLVM IR instruction has a unique integer identifier, the function
|
|
/// returns the list of supported instruction identifiers. These identifiers
|
|
/// will then be used to match LLVM instructions to the appropriate import
|
|
/// interface and `convertInstruction` method. It is an error to have multiple
|
|
/// interfaces overriding the same instruction.
|
|
virtual ::mlir::ArrayRef<unsigned> getSupportedInstructions() const {
|
|
return {};
|
|
}
|
|
|
|
/// Hook for derived dialect interfaces to publish the supported metadata
|
|
/// kinds. As every metadata kind has a unique integer identifier, the
|
|
/// function returns the list of supported metadata identifiers. The
|
|
/// `llvmContext` parameter is used to obtain identifiers for metadata kinds
|
|
/// that do not have a fixed static identifier. Since different LLVM contexts
|
|
/// can assign different identifiers to these non-static metadata kinds, the
|
|
/// function must recompute the list of supported metadata identifiers on each
|
|
/// call.
|
|
virtual ::mlir::SmallVector<unsigned> getSupportedMetadata(::llvm::LLVMContext & llvmContext) const {
|
|
return {};
|
|
}
|
|
|
|
LLVMImportDialectInterface(::mlir::Dialect *dialect) : Base(dialect) {}
|
|
};
|
|
|
|
} // namespace mlir
|