Add support for Operation interfaces.
Operation interfaces, as the name suggests, are those registered at the Operation level. These interfaces provide an opaque view into derived operations, by providing a virtual interface that must be implemented. As an example, the Linalg dialect implements an interface LinalgOp that provides general queries about some of the dialects library operations. These queries may provide things like: the number of parallel loops, the number of inputs and outputs, etc. Operation interfaces are defined by overriding the CRTP base class OpInterface. This class takes as a template parameter, a `Traits` class that defines a Concept and a Model class. These classes provide an implementation of concept-based polymorphism, where the Concept defines a set of virtual methods that are overridden by the Model that is templated on the concrete operation type. It is important to note that these classes should be pure in that they contain no non-static data members. PiperOrigin-RevId: 264218741
Loading
Please sign in to comment