My Project
Argument.h
Go to the documentation of this file.
1 //===- Argument.h - Argument definitions ------------------------*- C++ -*-===//
2 //
3 // Part of the MLIR 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 header file contains definitions for TableGen operation's arguments.
10 // Operation arguments fall into two categories:
11 //
12 // 1. Operands: SSA values operated on by the operation
13 // 2. Attributes: compile-time known properties that have influence over
14 // the operation's behavior
15 //
16 // These two categories are modelled with the unified argument concept in
17 // TableGen because we need similar pattern matching mechanisms for them.
18 //
19 //===----------------------------------------------------------------------===//
20 
21 #ifndef MLIR_TABLEGEN_ARGUMENT_H_
22 #define MLIR_TABLEGEN_ARGUMENT_H_
23 
25 #include "mlir/TableGen/Type.h"
26 #include "llvm/ADT/PointerUnion.h"
27 #include <string>
28 
29 namespace llvm {
30 class StringRef;
31 } // end namespace llvm
32 
33 namespace mlir {
34 namespace tblgen {
35 
36 // A struct wrapping an op attribute and its name together
38  llvm::StringRef name;
40 };
41 
42 // A struct wrapping an op operand/result's constraint and its name together
44  // Returns true if this operand/result has constraint to be satisfied.
45  bool hasPredicate() const;
46  // Returns true if this operand/result is variadic.
47  bool isVariadic() const;
48 
49  llvm::StringRef name;
51 };
52 
53 // Operation argument: either attribute or operand
55 
56 } // end namespace tblgen
57 } // end namespace mlir
58 
59 #endif // MLIR_TABLEGEN_ARGUMENT_H_
Definition: InferTypeOpInterface.cpp:20
Definition: PassRegistry.cpp:413
TypeConstraint constraint
Definition: Argument.h:50
Definition: Argument.h:37
Attribute attr
Definition: Argument.h:39
Definition: Argument.h:43
llvm::StringRef name
Definition: Argument.h:38
Definition: Attribute.h:45
Definition: Type.h:30
llvm::StringRef name
Definition: Argument.h:49
Definition: LLVM.h:41