/home/arjun/llvm-project/build/tools/mlir/include/mlir/Interfaces/LoopLikeInterface.h.inc
Line | Count | Source (jump to first uncovered line) |
1 | | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
2 | | |* *| |
3 | | |* Operation Interface Declarations *| |
4 | | |* *| |
5 | | |* Automatically generated file, do not edit! *| |
6 | | |* *| |
7 | | \*===----------------------------------------------------------------------===*/ |
8 | | |
9 | | namespace detail { |
10 | | struct LoopLikeOpInterfaceInterfaceTraits { |
11 | | class Concept { |
12 | | public: |
13 | 0 | virtual ~Concept() = default; |
14 | | virtual bool isDefinedOutsideOfLoop(Operation *tablegen_opaque_op, Value value) = 0; |
15 | | virtual Region & getLoopBody(Operation *tablegen_opaque_op) = 0; |
16 | | virtual LogicalResult moveOutOfLoop(Operation *tablegen_opaque_op, ArrayRef<Operation *> ops) = 0; |
17 | | }; |
18 | | template<typename ConcreteOp> |
19 | | class Model : public Concept { |
20 | | public: |
21 | 0 | bool isDefinedOutsideOfLoop(Operation *tablegen_opaque_op, Value value) final { |
22 | 0 | auto op = llvm::cast<ConcreteOp>(tablegen_opaque_op); |
23 | 0 | (void)op; |
24 | 0 | return op.isDefinedOutsideOfLoop(value); |
25 | 0 | } |
26 | 0 | Region & getLoopBody(Operation *tablegen_opaque_op) final { |
27 | 0 | auto op = llvm::cast<ConcreteOp>(tablegen_opaque_op); |
28 | 0 | (void)op; |
29 | 0 | return op.getLoopBody(); |
30 | 0 | } |
31 | 0 | LogicalResult moveOutOfLoop(Operation *tablegen_opaque_op, ArrayRef<Operation *> ops) final { |
32 | 0 | auto op = llvm::cast<ConcreteOp>(tablegen_opaque_op); |
33 | 0 | (void)op; |
34 | 0 | return op.moveOutOfLoop(ops); |
35 | 0 | } |
36 | | }; |
37 | | }; |
38 | | } // end namespace detail |
39 | | class LoopLikeOpInterface : public OpInterface<LoopLikeOpInterface, detail::LoopLikeOpInterfaceInterfaceTraits> { |
40 | | public: |
41 | | using OpInterface<LoopLikeOpInterface, detail::LoopLikeOpInterfaceInterfaceTraits>::OpInterface; |
42 | | template <typename ConcreteOp> |
43 | | struct LoopLikeOpInterfaceTrait : public OpInterface<LoopLikeOpInterface, detail::LoopLikeOpInterfaceInterfaceTraits>::Trait<ConcreteOp> { |
44 | | }; |
45 | | template <typename ConcreteOp> |
46 | | struct Trait : public LoopLikeOpInterfaceTrait<ConcreteOp> {}; |
47 | | bool isDefinedOutsideOfLoop(Value value); |
48 | | Region & getLoopBody(); |
49 | | LogicalResult moveOutOfLoop(ArrayRef<Operation *> ops); |
50 | | }; |