MLIR  20.0.0git
Argument.h
Go to the documentation of this file.
1 //===- Argument.h - Argument definitions ------------------------*- 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 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/Property.h"
26 #include "mlir/TableGen/Type.h"
27 #include "llvm/ADT/PointerUnion.h"
28 #include <string>
29 
30 namespace llvm {
31 class StringRef;
32 } // namespace llvm
33 
34 namespace mlir {
35 namespace tblgen {
36 
37 // A struct wrapping an op attribute and its name together
39  llvm::StringRef name;
41 };
42 
43 // A struct wrapping an op operand/result's constraint and its name together
45  // Returns true if this operand/result has constraint to be satisfied.
46  bool hasPredicate() const;
47  // Returns true if this is an optional type constraint. This is a special case
48  // of variadic for 0 or 1 type.
49  bool isOptional() const;
50  // Returns true if this operand/result is variadic.
51  bool isVariadic() const;
52  // Returns true if this operand/result is a variadic of a variadic constraint.
53  bool isVariadicOfVariadic() const;
54  // Returns true if this is a variable length type constraint. This is either
55  // variadic or optional.
56  bool isVariableLength() const { return isOptional() || isVariadic(); }
57 
58  llvm::StringRef name;
60 };
61 
62 // Operation argument: either attribute, property, or operand
65 
66 } // namespace tblgen
67 } // namespace mlir
68 
69 #endif // MLIR_TABLEGEN_ARGUMENT_H_
The OpAsmOpInterface, see OpAsmInterface.td for more details.
Definition: CallGraph.h:229
Include the generated interface declarations.
llvm::StringRef name
Definition: Argument.h:39