/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |* *| |* Interface Declarations *| |* *| |* Automatically generated file, do not edit! *| |* *| \*===----------------------------------------------------------------------===*/ namespace mlir::NVVM { class RequiresSMInterface; } // namespace mlir::NVVM namespace mlir::NVVM { namespace detail { struct RequiresSMInterfaceInterfaceTraits { struct Concept { /// The methods defined by the interface. mlir::NVVM::NVVMCheckSMVersion (*getRequiredMinSMVersion)(const Concept *impl, ::mlir::Operation *); }; template class Model : public Concept { public: using Interface = ::mlir::NVVM::RequiresSMInterface; Model() : Concept{getRequiredMinSMVersion} {} static inline mlir::NVVM::NVVMCheckSMVersion getRequiredMinSMVersion(const Concept *impl, ::mlir::Operation *tablegen_opaque_val); }; template class FallbackModel : public Concept { public: using Interface = ::mlir::NVVM::RequiresSMInterface; FallbackModel() : Concept{getRequiredMinSMVersion} {} static inline mlir::NVVM::NVVMCheckSMVersion getRequiredMinSMVersion(const Concept *impl, ::mlir::Operation *tablegen_opaque_val); }; template class ExternalModel : public FallbackModel { public: using ConcreteEntity = ConcreteOp; }; }; template struct RequiresSMInterfaceTrait; } // namespace detail class RequiresSMInterface : public ::mlir::OpInterface { public: using ::mlir::OpInterface::OpInterface; template struct Trait : public detail::RequiresSMInterfaceTrait {}; /// Get the SM version required by the op from the trait mlir::NVVM::NVVMCheckSMVersion getRequiredMinSMVersion(); }; } // namespace mlir::NVVM namespace mlir::NVVM::detail { template struct RequiresSMInterfaceTrait : public ::mlir::OpInterface::Trait { }; } // namespace mlir::NVVM::detail namespace mlir::NVVM { template mlir::NVVM::NVVMCheckSMVersion detail::RequiresSMInterfaceInterfaceTraits::Model::getRequiredMinSMVersion(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { return (llvm::cast(tablegen_opaque_val)).getRequiredMinSMVersion(); } template mlir::NVVM::NVVMCheckSMVersion detail::RequiresSMInterfaceInterfaceTraits::FallbackModel::getRequiredMinSMVersion(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { return static_cast(impl)->getRequiredMinSMVersion(tablegen_opaque_val); } } // namespace mlir::NVVM