//===-- ShapedOpInterfaces.td - Interfaces for Shaped Ops --*- tablegen -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file contains a set of interfaces for ops that operate on shaped values. // //===----------------------------------------------------------------------===// #ifndef MLIR_INTERFACES_SHAPEDOPINTERFACES #define MLIR_INTERFACES_SHAPEDOPINTERFACES include "mlir/IR/OpBase.td" //===----------------------------------------------------------------------===// // ShapedDimOpInterface //===----------------------------------------------------------------------===// // Ops that return the dimension of a shaped value. def ShapedDimOpInterface : OpInterface<"ShapedDimOpInterface"> { let description = [{ An interface for ops that return the dimension of a shaped value (such as a tensor or a memref). It provides access to the source shaped value and to the dimension. }]; let cppNamespace = "::mlir"; let methods = [ InterfaceMethod< /*desc=*/[{ Return the shaped value operand. This is the value that the dimension is taken from. }], /*retTy=*/"::mlir::Value", /*methodName=*/"getShapedValue", /*args=*/(ins) >, InterfaceMethod< /*desc=*/[{ Return the dimension operand. This can be a constant or an SSA value. }], /*retTy=*/"::mlir::OpFoldResult", /*methodName=*/"getDimension", /*args=*/(ins) > ]; let verify = [{ return verifyShapedDimOpInterface($_op); }]; } #endif // MLIR_INTERFACES_SHAPEDOPINTERFACES