1//===- Shape.h - MLIR Shape dialect -----------------------------*- C++ -*-===//
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//
9// This file defines the shape dialect that is used to describe and solve shape
10// relations of MLIR operations using ShapedType.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef MLIR_DIALECT_SHAPE_IR_SHAPE_H
15#define MLIR_DIALECT_SHAPE_IR_SHAPE_H
16
17#include "mlir/Bytecode/BytecodeOpInterface.h"
18#include "mlir/IR/BuiltinOps.h"
19#include "mlir/IR/Dialect.h"
20#include "mlir/IR/OpDefinition.h"
21#include "mlir/IR/OpImplementation.h"
22#include "mlir/IR/SymbolTable.h"
23#include "mlir/Interfaces/CallInterfaces.h"
24#include "mlir/Interfaces/CastInterfaces.h"
25#include "mlir/Interfaces/ControlFlowInterfaces.h"
26#include "mlir/Interfaces/FunctionInterfaces.h"
27#include "mlir/Interfaces/InferTypeOpInterface.h"
28#include "mlir/Interfaces/SideEffectInterfaces.h"
29
30#define GET_TYPEDEF_CLASSES
31#include "mlir/Dialect/Shape/IR/ShapeOpsTypes.h.inc"
32
33namespace mlir {
34class PatternRewriter;
35
36namespace shape {
37
38/// Alias type for extent tensors.
39RankedTensorType getExtentTensorType(MLIRContext *ctx,
40 int64_t rank = ShapedType::kDynamic);
41
42// Check if a type is an extent tensor, e.g., tensor<?xindex>.
43bool isExtentTensorType(Type);
44
45// Given an input shape Value, try to obtain the shape's values.
46LogicalResult getShapeVec(Value input, SmallVectorImpl<int64_t> &shapeValues);
47
48} // namespace shape
49} // namespace mlir
50
51#define GET_OP_CLASSES
52#include "mlir/Dialect/Shape/IR/ShapeOps.h.inc"
53
54#include "mlir/Dialect/Shape/IR/ShapeOpsDialect.h.inc"
55
56#endif // MLIR_DIALECT_SHAPE_IR_SHAPE_H
57

source code of mlir/include/mlir/Dialect/Shape/IR/Shape.h