14 #ifndef MLIR_TABLEGEN_PATTERN_H_ 15 #define MLIR_TABLEGEN_PATTERN_H_ 20 #include "llvm/ADT/DenseMap.h" 21 #include "llvm/ADT/StringMap.h" 22 #include "llvm/ADT/StringSet.h" 56 explicit DagLeaf(
const llvm::Init *def) : def(def) {}
61 bool isUnspecified()
const;
65 bool isOperandMatcher()
const;
69 bool isAttrMatcher()
const;
72 bool isNativeCodeCall()
const;
75 bool isConstantAttr()
const;
78 bool isEnumAttrCase()
const;
92 std::string getConditionTemplate()
const;
96 StringRef getNativeCodeTemplate()
const;
98 void print(raw_ostream &os)
const;
103 bool isSubClassOf(StringRef superclass)
const;
105 const llvm::Init *def;
124 explicit DagNode(
const llvm::DagInit *node) : node(node) {}
128 operator bool()
const {
return node !=
nullptr; }
131 StringRef getSymbol()
const;
140 int getNumOps()
const;
143 int getNumArgs()
const;
146 bool isNestedDagArg(
unsigned index)
const;
150 DagNode getArgAsNestedDag(
unsigned index)
const;
153 DagLeaf getArgAsLeaf(
unsigned index)
const;
156 StringRef getArgName(
unsigned index)
const;
160 bool isReplaceWithValue()
const;
163 bool isNativeCodeCall()
const;
166 bool isOperation()
const;
170 StringRef getNativeCodeTemplate()
const;
172 void print(raw_ostream &os)
const;
175 const llvm::DagInit *node;
219 std::string getVarDecl(StringRef name)
const;
230 enum class Kind : uint8_t { Attr, Operand, Result,
Value };
254 int getStaticValueCount()
const;
262 std::string getValueAndRangeUse(StringRef name,
int index,
const char *fmt,
263 const char *separator)
const;
271 std::string getAllRangeUse(StringRef name,
int index,
const char *fmt,
272 const char *separator)
const;
280 using BaseT = llvm::StringMap<SymbolInfo>;
294 bool bindOpArgument(StringRef symbol,
const Operator &op,
int argIndex);
298 bool bindOpResult(StringRef symbol,
const Operator &op);
302 bool bindValue(StringRef symbol);
305 bool contains(StringRef symbol)
const;
314 int getStaticValueCount(StringRef symbol)
const;
321 std::string getValueAndRangeUse(StringRef symbol,
const char *fmt =
"{0}",
322 const char *separator =
", ")
const;
328 std::string getAllRangeUse(StringRef symbol,
const char *fmt =
"{0}",
329 const char *separator =
", ")
const;
337 static StringRef getValuePackName(StringRef symbol,
int *index =
nullptr);
340 llvm::StringMap<SymbolInfo> symbolInfoMap;
356 DagNode getSourcePattern()
const;
360 int getNumResultPatterns()
const;
363 DagNode getResultPattern(
unsigned index)
const;
366 void collectSourcePatternBoundSymbols(
SymbolInfoMap &infoMap);
369 void collectResultPatternBoundSymbols(
SymbolInfoMap &infoMap);
379 std::vector<AppliedConstraint> getConstraints()
const;
382 int getBenefit()
const;
388 std::vector<IdentifierLine> getLocation()
const;
397 const llvm::Record &def;
408 #endif // MLIR_TABLEGEN_PATTERN_H_ Definition: InferTypeOpInterface.cpp:20
Definition: PassRegistry.cpp:413
Definition: Attribute.h:126
iterator begin()
Definition: Pattern.h:284
Definition: Operator.h:41
Definition: Pattern.h:122
Definition: Constraint.h:30
llvm::StringMap< SymbolInfo > BaseT
Definition: Pattern.h:280
BaseT::const_iterator const_iterator
Definition: Pattern.h:288
DenseMap< const llvm::Record *, std::unique_ptr< Operator > > RecordOperatorMap
Definition: Pattern.h:40
Definition: Pattern.h:210
DagLeaf(const llvm::Init *def)
Definition: Pattern.h:56
std::pair< StringRef, unsigned > IdentifierLine
Definition: Pattern.h:384
Definition: Pattern.h:351
const_iterator begin() const
Definition: Pattern.h:289
BaseT::iterator iterator
Definition: Pattern.h:283
void print(OpAsmPrinter &p, AffineIfOp op)
Definition: AffineOps.cpp:1671
Definition: StandardTypes.h:63
iterator end()
Definition: Pattern.h:285
Definition: Attribute.h:108
Definition: Pattern.h:215
SymbolInfoMap(ArrayRef< llvm::SMLoc > loc)
Definition: Pattern.h:212
DagNode(const llvm::DagInit *node)
Definition: Pattern.h:124
const_iterator end() const
Definition: Pattern.h:290