#include "mlir/Dialect/Arith/Transforms/BufferViewFlowOpInterfaceImpl.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Bufferization/IR/BufferViewFlowOpInterface.h"
using namespace mlir;
using namespace mlir::bufferization;
namespace mlir {
namespace arith {
namespace {
struct SelectOpInterface
: public BufferViewFlowOpInterface::ExternalModel<SelectOpInterface,
SelectOp> {
void
populateDependencies(Operation *op,
RegisterDependenciesFn registerDependenciesFn) const {
auto selectOp = cast<SelectOp>(op);
registerDependenciesFn(selectOp.getTrueValue(), selectOp.getResult());
registerDependenciesFn(selectOp.getFalseValue(), selectOp.getResult());
}
};
}
}
}
void arith::registerBufferViewFlowOpInterfaceExternalModels(
DialectRegistry ®istry) {
registry.addExtension(+[](MLIRContext *ctx, arith::ArithDialect *dialect) {
SelectOp::attachInterface<SelectOpInterface>(*ctx);
});
}