Lines Matching refs:os
31 static raw_ostream &emitCPPType(StringRef type, raw_ostream &os) { in emitCPPType() argument
33 os << type; in emitCPPType()
35 os << " "; in emitCPPType()
36 return os; in emitCPPType()
43 raw_ostream &os, StringRef valueType, in emitMethodNameAndArgs() argument
45 os << method.getName() << '('; in emitMethodNameAndArgs()
48 os << "const "; in emitMethodNameAndArgs()
49 os << "const Concept *impl, "; in emitMethodNameAndArgs()
50 emitCPPType(valueType, os) in emitMethodNameAndArgs()
53 llvm::interleaveComma(method.getArguments(), os, in emitMethodNameAndArgs()
55 os << arg.type << " " << arg.name; in emitMethodNameAndArgs()
57 os << ')'; in emitMethodNameAndArgs()
59 os << " const"; in emitMethodNameAndArgs()
84 InterfaceGenerator(std::vector<llvm::Record *> &&defs, raw_ostream &os) in InterfaceGenerator() argument
85 : defs(std::move(defs)), os(os) {} in InterfaceGenerator()
97 raw_ostream &os; member in __anond275f65c0311::InterfaceGenerator
112 AttrInterfaceGenerator(const llvm::RecordKeeper &records, raw_ostream &os) in AttrInterfaceGenerator()
114 os) { in AttrInterfaceGenerator()
127 OpInterfaceGenerator(const llvm::RecordKeeper &records, raw_ostream &os) in OpInterfaceGenerator()
128 : InterfaceGenerator(getAllOpInterfaceDefinitions(records), os) { in OpInterfaceGenerator()
142 TypeInterfaceGenerator(const llvm::RecordKeeper &records, raw_ostream &os) in TypeInterfaceGenerator()
144 os) { in TypeInterfaceGenerator()
162 raw_ostream &os) { in emitInterfaceDef() argument
170 emitCPPType(method.getReturnType(), os); in emitInterfaceDef()
172 os << cppNamespace << "::"; in emitInterfaceDef()
173 os << interfaceName << "::"; in emitInterfaceDef()
174 emitMethodNameAndArgs(method, os, valueType, /*addThisArg=*/false, in emitInterfaceDef()
178 os << " {\n return getImpl()->" << method.getName() << '('; in emitInterfaceDef()
180 os << "getImpl(), "; in emitInterfaceDef()
181 os << (isOpInterface ? "getOperation()" : "*this"); in emitInterfaceDef()
182 os << (method.arg_empty() ? "" : ", "); in emitInterfaceDef()
185 method.getArguments(), os, in emitInterfaceDef()
186 [&](const InterfaceMethod::Argument &arg) { os << arg.name; }); in emitInterfaceDef()
187 os << ");\n }\n"; in emitInterfaceDef()
192 llvm::emitSourceFileHeader("Interface Definitions", os); in emitInterfaceDefs()
195 emitInterfaceDef(Interface(def), valueType, os); in emitInterfaceDefs()
204 os << " struct Concept {\n"; in emitConceptDecl()
208 os << " "; in emitConceptDecl()
209 emitCPPType(method.getReturnType(), os); in emitConceptDecl()
210 os << "(*" << method.getName() << ")("; in emitConceptDecl()
212 os << "const Concept *impl, "; in emitConceptDecl()
213 emitCPPType(valueType, os) << (method.arg_empty() ? "" : ", "); in emitConceptDecl()
216 method.getArguments(), os, in emitConceptDecl()
217 [&](const InterfaceMethod::Argument &arg) { os << arg.type; }); in emitConceptDecl()
218 os << ");\n"; in emitConceptDecl()
220 os << " };\n"; in emitConceptDecl()
226 os << " template<typename " << valueTemplate << ">\n"; in emitModelDecl()
227 os << " class " << modelClass << " : public Concept {\n public:\n"; in emitModelDecl()
228 os << " using Interface = " << interface.getCppNamespace() in emitModelDecl()
231 os << " " << modelClass << "() : Concept{"; in emitModelDecl()
233 interface.getMethods(), os, in emitModelDecl()
234 [&](const InterfaceMethod &method) { os << method.getName(); }); in emitModelDecl()
235 os << "} {}\n\n"; in emitModelDecl()
239 emitCPPType(method.getReturnType(), os << " static inline "); in emitModelDecl()
240 emitMethodNameAndArgs(method, os, valueType, in emitModelDecl()
243 os << ";\n"; in emitModelDecl()
245 os << " };\n"; in emitModelDecl()
249 os << " template<typename ConcreteModel, typename " << valueTemplate in emitModelDecl()
251 os << " class ExternalModel : public FallbackModel<ConcreteModel> {\n"; in emitModelDecl()
252 os << " public:\n"; in emitModelDecl()
253 os << " using ConcreteEntity = " << valueTemplate << ";\n"; in emitModelDecl()
260 os << " "; in emitModelDecl()
262 os << "static "; in emitModelDecl()
263 emitCPPType(method.getReturnType(), os); in emitModelDecl()
264 os << method.getName() << "("; in emitModelDecl()
266 emitCPPType(valueType, os); in emitModelDecl()
267 os << "tablegen_opaque_val"; in emitModelDecl()
269 os << ", "; in emitModelDecl()
271 llvm::interleaveComma(method.getArguments(), os, in emitModelDecl()
273 emitCPPType(arg.type, os); in emitModelDecl()
274 os << arg.name; in emitModelDecl()
276 os << ")"; in emitModelDecl()
278 os << " const"; in emitModelDecl()
279 os << ";\n"; in emitModelDecl()
281 os << " };\n"; in emitModelDecl()
286 os << "template<typename " << valueTemplate << ">\n"; in emitModelMethodsDef()
287 emitCPPType(method.getReturnType(), os); in emitModelMethodsDef()
288 os << "detail::" << interface.getName() << "InterfaceTraits::Model<" in emitModelMethodsDef()
290 emitMethodNameAndArgs(method, os, valueType, in emitModelMethodsDef()
293 os << " {\n "; in emitModelMethodsDef()
298 os << body->trim(); in emitModelMethodsDef()
300 os << tblgen::tgfmt(body->trim(), &nonStaticMethodFmt); in emitModelMethodsDef()
301 os << "\n}\n"; in emitModelMethodsDef()
307 os << "return " << valueTemplate << "::"; in emitModelMethodsDef()
309 os << tblgen::tgfmt("return $_self.", &nonStaticMethodFmt); in emitModelMethodsDef()
312 os << method.getName() << '('; in emitModelMethodsDef()
314 method.getArguments(), os, in emitModelMethodsDef()
315 [&](const InterfaceMethod::Argument &arg) { os << arg.name; }); in emitModelMethodsDef()
316 os << ");\n}\n"; in emitModelMethodsDef()
320 os << "template<typename " << valueTemplate << ">\n"; in emitModelMethodsDef()
321 emitCPPType(method.getReturnType(), os); in emitModelMethodsDef()
322 os << "detail::" << interface.getName() << "InterfaceTraits::FallbackModel<" in emitModelMethodsDef()
324 emitMethodNameAndArgs(method, os, valueType, in emitModelMethodsDef()
327 os << " {\n "; in emitModelMethodsDef()
331 os << "return " << valueTemplate << "::"; in emitModelMethodsDef()
333 os << "return static_cast<const " << valueTemplate << " *>(impl)->"; in emitModelMethodsDef()
336 os << method.getName() << '('; in emitModelMethodsDef()
338 os << "tablegen_opaque_val" << (method.arg_empty() ? "" : ", "); in emitModelMethodsDef()
340 method.getArguments(), os, in emitModelMethodsDef()
341 [&](const InterfaceMethod::Argument &arg) { os << arg.name; }); in emitModelMethodsDef()
342 os << ");\n}\n"; in emitModelMethodsDef()
349 os << "template<typename ConcreteModel, typename " << valueTemplate in emitModelMethodsDef()
351 emitCPPType(method.getReturnType(), os); in emitModelMethodsDef()
352 os << "detail::" << interface.getName() in emitModelMethodsDef()
356 os << method.getName() << "("; in emitModelMethodsDef()
358 emitCPPType(valueType, os); in emitModelMethodsDef()
359 os << "tablegen_opaque_val"; in emitModelMethodsDef()
361 os << ", "; in emitModelMethodsDef()
363 llvm::interleaveComma(method.getArguments(), os, in emitModelMethodsDef()
365 emitCPPType(arg.type, os); in emitModelMethodsDef()
366 os << arg.name; in emitModelMethodsDef()
368 os << ")"; in emitModelMethodsDef()
370 os << " const"; in emitModelMethodsDef()
372 os << " {\n"; in emitModelMethodsDef()
376 os << tblgen::tgfmt(method.getDefaultImplementation()->trim(), in emitModelMethodsDef()
378 os << "\n}\n"; in emitModelMethodsDef()
385 os << llvm::formatv(" template <typename {3}>\n" in emitTraitDecl()
404 os << " " << (method.isStatic() ? "static " : ""); in emitTraitDecl()
405 emitCPPType(method.getReturnType(), os); in emitTraitDecl()
406 emitMethodNameAndArgs(method, os, valueType, /*addThisArg=*/false, in emitTraitDecl()
408 os << " {\n " << tblgen::tgfmt(defaultImpl->trim(), &traitMethodFmt) in emitTraitDecl()
417 os << llvm::formatv( in emitTraitDecl()
425 os << tblgen::tgfmt(*extraTraitDecls, &traitMethodFmt) << "\n"; in emitTraitDecl()
427 os << tblgen::tgfmt(*extraTraitDecls, &traitMethodFmt) << "\n"; in emitTraitDecl()
429 os << " };\n"; in emitTraitDecl()
436 os << "namespace " << ns << " {\n"; in emitInterfaceDecl()
443 os << "class " << interfaceName << ";\n"; in emitInterfaceDecl()
446 os << "namespace detail {\n" in emitInterfaceDecl()
450 os << "};"; in emitInterfaceDecl()
453 os << "template <typename " << valueTemplate << ">\n"; in emitInterfaceDecl()
454 os << "struct " << interface.getName() << "Trait;\n"; in emitInterfaceDecl()
456 os << "\n} // namespace detail\n"; in emitInterfaceDecl()
459 os << llvm::formatv("class {0} : public ::mlir::{3}<{1}, detail::{2}> {\n" in emitInterfaceDecl()
466 os << llvm::formatv(" template <typename {1}>\n" in emitInterfaceDecl()
473 emitCPPType(method.getReturnType(), os << " "); in emitInterfaceDecl()
474 emitMethodNameAndArgs(method, os, valueType, /*addThisArg=*/false, in emitInterfaceDecl()
476 os << ";\n"; in emitInterfaceDecl()
481 os << *extraDecls << "\n"; in emitInterfaceDecl()
484 os << tblgen::tgfmt(*extraDecls, &extraDeclsFmt); in emitInterfaceDecl()
486 os << "};\n"; in emitInterfaceDecl()
488 os << "namespace detail {\n"; in emitInterfaceDecl()
490 os << "}// namespace detail\n"; in emitInterfaceDecl()
495 os << "} // namespace " << ns << "\n"; in emitInterfaceDecl()
499 llvm::emitSourceFileHeader("Interface Declarations", os); in emitInterfaceDecls()
511 raw_ostream &os) { in emitInterfaceDoc() argument
515 os << "## " << interface.getName() << " (`" << interfaceDef.getName() in emitInterfaceDoc()
518 mlir::tblgen::emitDescription(*description, os); in emitInterfaceDoc()
521 os << "\n### Methods:\n"; in emitInterfaceDoc()
524 os << "#### `" << method.getName() << "`\n\n```c++\n"; in emitInterfaceDoc()
528 os << "static "; in emitInterfaceDoc()
529 emitCPPType(method.getReturnType(), os) << method.getName() << '('; in emitInterfaceDoc()
530 llvm::interleaveComma(method.getArguments(), os, in emitInterfaceDoc()
532 emitCPPType(arg.type, os) << arg.name; in emitInterfaceDoc()
534 os << ");\n```\n"; in emitInterfaceDoc()
538 mlir::tblgen::emitDescription(*description, os); in emitInterfaceDoc()
542 os << "\nNOTE: This method *must* be implemented by the user.\n\n"; in emitInterfaceDoc()
547 os << "<!-- Autogenerated by mlir-tblgen; don't manually edit -->\n"; in emitInterfaceDocs()
548 os << "# " << interfaceBaseType << " definitions\n"; in emitInterfaceDocs()
551 emitInterfaceDoc(*def, os); in emitInterfaceDocs()
570 [](const llvm::RecordKeeper &records, raw_ostream &os) { in InterfaceGenRegistration()
571 return GeneratorT(records, os).emitInterfaceDecls(); in InterfaceGenRegistration()
574 [](const llvm::RecordKeeper &records, raw_ostream &os) { in __anond275f65c0e02()
575 return GeneratorT(records, os).emitInterfaceDefs(); in __anond275f65c0e02()
578 [](const llvm::RecordKeeper &records, raw_ostream &os) { in __anond275f65c0f02()
579 return GeneratorT(records, os).emitInterfaceDocs(); in __anond275f65c0f02()