MLIR 22.0.0git
BufferViewFlowOpInterfaceImpl.cpp
Go to the documentation of this file.
1//===- BufferViewFlowOpInterfaceImpl.cpp - Buffer View Flow Analysis ------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
10
13
14using namespace mlir;
15using namespace mlir::bufferization;
16
17namespace mlir {
18namespace arith {
19namespace {
20
21struct SelectOpInterface
22 : public BufferViewFlowOpInterface::ExternalModel<SelectOpInterface,
23 SelectOp> {
24 void
25 populateDependencies(Operation *op,
26 RegisterDependenciesFn registerDependenciesFn) const {
27 auto selectOp = cast<SelectOp>(op);
28
29 // Either one of the true/false value may be selected at runtime.
30 registerDependenciesFn(selectOp.getTrueValue(), selectOp.getResult());
31 registerDependenciesFn(selectOp.getFalseValue(), selectOp.getResult());
32 }
33};
34
35} // namespace
36} // namespace arith
37} // namespace mlir
38
40 DialectRegistry &registry) {
41 registry.addExtension(+[](MLIRContext *ctx, arith::ArithDialect *dialect) {
42 SelectOp::attachInterface<SelectOpInterface>(*ctx);
43 });
44}
The DialectRegistry maps a dialect namespace to a constructor for the matching dialect.
bool addExtension(TypeID extensionID, std::unique_ptr< DialectExtensionBase > extension)
Add the given extension to the registry.
MLIRContext is the top-level object for a collection of MLIR operations.
Definition MLIRContext.h:63
void registerBufferViewFlowOpInterfaceExternalModels(DialectRegistry &registry)
std::function< void(ValueRange, ValueRange)> RegisterDependenciesFn
Include the generated interface declarations.