/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |* *| |* Interface Declarations *| |* *| |* Automatically generated file, do not edit! *| |* *| \*===----------------------------------------------------------------------===*/ namespace mlir::xegpu { /// An attribute interface for accessing anchor layout information. /// This interface provides a method to set and retrieve the anchor layout /// from operations that implement it. class AnchorLayoutInterface; } // namespace mlir::xegpu namespace mlir::xegpu { /// An attribute interface for accessing anchor layout information. /// This interface provides a method to set and retrieve the anchor layout /// from operations that implement it. namespace detail { struct AnchorLayoutInterfaceInterfaceTraits { struct Concept { /// The methods defined by the interface. xegpu::DistributeLayoutAttr (*getAnchorLayout)(const Concept *impl, ::mlir::Operation *); void (*setAnchorLayout)(const Concept *impl, ::mlir::Operation *, xegpu::DistributeLayoutAttr); }; template class Model : public Concept { public: using Interface = ::mlir::xegpu::AnchorLayoutInterface; Model() : Concept{getAnchorLayout, setAnchorLayout} {} static inline xegpu::DistributeLayoutAttr getAnchorLayout(const Concept *impl, ::mlir::Operation *tablegen_opaque_val); static inline void setAnchorLayout(const Concept *impl, ::mlir::Operation *tablegen_opaque_val, xegpu::DistributeLayoutAttr layout); }; template class FallbackModel : public Concept { public: using Interface = ::mlir::xegpu::AnchorLayoutInterface; FallbackModel() : Concept{getAnchorLayout, setAnchorLayout} {} static inline xegpu::DistributeLayoutAttr getAnchorLayout(const Concept *impl, ::mlir::Operation *tablegen_opaque_val); static inline void setAnchorLayout(const Concept *impl, ::mlir::Operation *tablegen_opaque_val, xegpu::DistributeLayoutAttr layout); }; template class ExternalModel : public FallbackModel { public: using ConcreteEntity = ConcreteOp; }; }; template struct AnchorLayoutInterfaceTrait; } // namespace detail class AnchorLayoutInterface : public ::mlir::OpInterface { public: using ::mlir::OpInterface::OpInterface; template struct Trait : public detail::AnchorLayoutInterfaceTrait {}; /// Get the anchor layout attribute. xegpu::DistributeLayoutAttr getAnchorLayout(); /// Set the anchor layout attribute. void setAnchorLayout(xegpu::DistributeLayoutAttr layout); }; } // namespace mlir::xegpu namespace mlir::xegpu::detail { template struct AnchorLayoutInterfaceTrait : public ::mlir::OpInterface::Trait { }; } // namespace mlir::xegpu::detail namespace mlir::xegpu { template xegpu::DistributeLayoutAttr detail::AnchorLayoutInterfaceInterfaceTraits::Model::getAnchorLayout(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { return (llvm::cast(tablegen_opaque_val)).getAnchorLayout(); } template void detail::AnchorLayoutInterfaceInterfaceTraits::Model::setAnchorLayout(const Concept *impl, ::mlir::Operation *tablegen_opaque_val, xegpu::DistributeLayoutAttr layout) { return (llvm::cast(tablegen_opaque_val)).setAnchorLayout(layout); } template xegpu::DistributeLayoutAttr detail::AnchorLayoutInterfaceInterfaceTraits::FallbackModel::getAnchorLayout(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { return static_cast(impl)->getAnchorLayout(tablegen_opaque_val); } template void detail::AnchorLayoutInterfaceInterfaceTraits::FallbackModel::setAnchorLayout(const Concept *impl, ::mlir::Operation *tablegen_opaque_val, xegpu::DistributeLayoutAttr layout) { return static_cast(impl)->setAnchorLayout(tablegen_opaque_val, layout); } } // namespace mlir::xegpu