brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 9df9df8 Raw
45 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "mlir/Dialect/Arith/Transforms/BufferViewFlowOpInterfaceImpl.h"10 11#include "mlir/Dialect/Arith/IR/Arith.h"12#include "mlir/Dialect/Bufferization/IR/BufferViewFlowOpInterface.h"13 14using namespace mlir;15using namespace mlir::bufferization;16 17namespace mlir {18namespace arith {19namespace {20 21struct SelectOpInterface22    : public BufferViewFlowOpInterface::ExternalModel<SelectOpInterface,23                                                      SelectOp> {24  void25  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} // namespace36} // namespace arith37} // namespace mlir38 39void arith::registerBufferViewFlowOpInterfaceExternalModels(40    DialectRegistry &registry) {41  registry.addExtension(+[](MLIRContext *ctx, arith::ArithDialect *dialect) {42    SelectOp::attachInterface<SelectOpInterface>(*ctx);43  });44}45