Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
mlir/tools/mlir-tblgen/SPIRVUtilsGen.cpp
Show First 20 Lines • Show All 199 Lines • ▼ Show 20 Lines | |||||
// Availability Interface Declarations AutoGen | // Availability Interface Declarations AutoGen | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
static void emitConceptDecl(const Availability &availability, raw_ostream &os) { | static void emitConceptDecl(const Availability &availability, raw_ostream &os) { | ||||
os << " class Concept {\n" | os << " class Concept {\n" | ||||
<< " public:\n" | << " public:\n" | ||||
<< " virtual ~Concept() = default;\n" | << " virtual ~Concept() = default;\n" | ||||
<< " virtual " << availability.getQueryFnRetType() << " " | << " virtual " << availability.getQueryFnRetType() << " " | ||||
<< availability.getQueryFnName() << "(Operation *tblgen_opaque_op) = 0;\n" | << availability.getQueryFnName() | ||||
<< "(Operation *tblgen_opaque_op) const = 0;\n" | |||||
<< " };\n"; | << " };\n"; | ||||
} | } | ||||
static void emitModelDecl(const Availability &availability, raw_ostream &os) { | static void emitModelDecl(const Availability &availability, raw_ostream &os) { | ||||
os << " template<typename ConcreteOp>\n"; | os << " template<typename ConcreteOp>\n"; | ||||
os << " class Model : public Concept {\n" | os << " class Model : public Concept {\n" | ||||
<< " public:\n" | << " public:\n" | ||||
<< " " << availability.getQueryFnRetType() << " " | << " " << availability.getQueryFnRetType() << " " | ||||
<< availability.getQueryFnName() | << availability.getQueryFnName() | ||||
<< "(Operation *tblgen_opaque_op) final {\n" | << "(Operation *tblgen_opaque_op) const final {\n" | ||||
<< " auto op = llvm::cast<ConcreteOp>(tblgen_opaque_op);\n" | << " auto op = llvm::cast<ConcreteOp>(tblgen_opaque_op);\n" | ||||
<< " (void)op;\n" | << " (void)op;\n" | ||||
// Forward to the method on the concrete operation type. | // Forward to the method on the concrete operation type. | ||||
<< " return op." << availability.getQueryFnName() << "();\n" | << " return op." << availability.getQueryFnName() << "();\n" | ||||
<< " }\n" | << " }\n" | ||||
<< " };\n"; | << " };\n"; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,141 Lines • Show Last 20 Lines |