diff options
author | River Riddle <riverriddle@google.com> | 2019-08-19 12:43:46 -0700 |
---|---|---|
committer | A. Unique TensorFlower <gardener@tensorflow.org> | 2019-08-19 12:44:14 -0700 |
commit | 8165f181d9a1ff503919d3625f6a48955a226b3c (patch) | |
tree | 52f43933f7984d81800b7bff4c013317857c4a28 /mlir/lib/Conversion/ControlFlowToCFG/ConvertControlFlowToCFG.cpp | |
parent | e152f0194fdaff632a5a9737d4ea057218871782 (diff) | |
download | bcm5719-llvm-8165f181d9a1ff503919d3625f6a48955a226b3c.tar.gz bcm5719-llvm-8165f181d9a1ff503919d3625f6a48955a226b3c.zip |
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
Diffstat (limited to 'mlir/lib/Conversion/ControlFlowToCFG/ConvertControlFlowToCFG.cpp')
0 files changed, 0 insertions, 0 deletions