summaryrefslogtreecommitdiffstats
path: root/mlir/lib/Conversion/ControlFlowToCFG/ConvertControlFlowToCFG.cpp
diff options
context:
space:
mode:
authorRiver Riddle <riverriddle@google.com>2019-08-19 12:43:46 -0700
committerA. Unique TensorFlower <gardener@tensorflow.org>2019-08-19 12:44:14 -0700
commit8165f181d9a1ff503919d3625f6a48955a226b3c (patch)
tree52f43933f7984d81800b7bff4c013317857c4a28 /mlir/lib/Conversion/ControlFlowToCFG/ConvertControlFlowToCFG.cpp
parente152f0194fdaff632a5a9737d4ea057218871782 (diff)
downloadbcm5719-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
OpenPOWER on IntegriCloud