xref: /llvm-project/mlir/include/mlir/Dialect/Shape/IR/Shape.h (revision 34a35a8b244243f5a4ad5d531007bccfeaa0b02e)
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 
33 namespace mlir {
34 class PatternRewriter;
35 
36 namespace shape {
37 
38 /// Alias type for extent tensors.
39 RankedTensorType getExtentTensorType(MLIRContext *ctx,
40                                      int64_t rank = ShapedType::kDynamic);
41 
42 // Check if a type is an extent tensor, e.g., tensor<?xindex>.
43 bool isExtentTensorType(Type);
44 
45 // Given an input shape Value, try to obtain the shape's values.
46 LogicalResult 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