/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |* *| |* Interface Declarations *| |* *| |* Automatically generated file, do not edit! *| |* *| \*===----------------------------------------------------------------------===*/ namespace mlir { /// The `ConvertToLLVMAttrInterface` attribute interfaces allows using /// attributes to configure the convert to LLVM infrastructure, this includes: /// - The conversion target. /// - The LLVM type converter. /// - The pattern set. /// /// This interface permits fined grained configuration of the `convert-to-llvm` /// process. For example, attributes with target information like /// `#nvvm.target` or `#rodcl.target` can leverage this interface for populating /// patterns specific to a particular target. class ConvertToLLVMAttrInterface; } // namespace mlir namespace mlir { /// The `ConvertToLLVMAttrInterface` attribute interfaces allows using /// attributes to configure the convert to LLVM infrastructure, this includes: /// - The conversion target. /// - The LLVM type converter. /// - The pattern set. /// /// This interface permits fined grained configuration of the `convert-to-llvm` /// process. For example, attributes with target information like /// `#nvvm.target` or `#rodcl.target` can leverage this interface for populating /// patterns specific to a particular target. namespace detail { struct ConvertToLLVMAttrInterfaceInterfaceTraits { struct Concept { /// The methods defined by the interface. void (*populateConvertToLLVMConversionPatterns)(const Concept *impl, ::mlir::Attribute , ::mlir::ConversionTarget&, ::mlir::LLVMTypeConverter&, ::mlir::RewritePatternSet&); }; template class Model : public Concept { public: using Interface = ::mlir::ConvertToLLVMAttrInterface; Model() : Concept{populateConvertToLLVMConversionPatterns} {} static inline void populateConvertToLLVMConversionPatterns(const Concept *impl, ::mlir::Attribute tablegen_opaque_val, ::mlir::ConversionTarget& target, ::mlir::LLVMTypeConverter& typeConverter, ::mlir::RewritePatternSet& patternSet); }; template class FallbackModel : public Concept { public: using Interface = ::mlir::ConvertToLLVMAttrInterface; FallbackModel() : Concept{populateConvertToLLVMConversionPatterns} {} static inline void populateConvertToLLVMConversionPatterns(const Concept *impl, ::mlir::Attribute tablegen_opaque_val, ::mlir::ConversionTarget& target, ::mlir::LLVMTypeConverter& typeConverter, ::mlir::RewritePatternSet& patternSet); }; template class ExternalModel : public FallbackModel { public: using ConcreteEntity = ConcreteAttr; }; }; template struct ConvertToLLVMAttrInterfaceTrait; } // namespace detail class ConvertToLLVMAttrInterface : public ::mlir::AttributeInterface { public: using ::mlir::AttributeInterface::AttributeInterface; template struct Trait : public detail::ConvertToLLVMAttrInterfaceTrait {}; /// Populate the dialect conversion target, type converter and pattern set. void populateConvertToLLVMConversionPatterns(::mlir::ConversionTarget& target, ::mlir::LLVMTypeConverter& typeConverter, ::mlir::RewritePatternSet& patternSet) const; }; } // namespace mlir namespace mlir::detail { template struct ConvertToLLVMAttrInterfaceTrait : public ::mlir::AttributeInterface::Trait { }; } // namespace mlir::detail namespace mlir { template void detail::ConvertToLLVMAttrInterfaceInterfaceTraits::Model::populateConvertToLLVMConversionPatterns(const Concept *impl, ::mlir::Attribute tablegen_opaque_val, ::mlir::ConversionTarget& target, ::mlir::LLVMTypeConverter& typeConverter, ::mlir::RewritePatternSet& patternSet) { return (::llvm::cast(tablegen_opaque_val)).populateConvertToLLVMConversionPatterns(target, typeConverter, patternSet); } template void detail::ConvertToLLVMAttrInterfaceInterfaceTraits::FallbackModel::populateConvertToLLVMConversionPatterns(const Concept *impl, ::mlir::Attribute tablegen_opaque_val, ::mlir::ConversionTarget& target, ::mlir::LLVMTypeConverter& typeConverter, ::mlir::RewritePatternSet& patternSet) { return static_cast(impl)->populateConvertToLLVMConversionPatterns(tablegen_opaque_val, target, typeConverter, patternSet); } } // namespace mlir