[Mlir-commits] [mlir] [mlir][python] generate value builders (PR #68308)

Jacques Pienaar llvmlistbot at llvm.org
Mon Oct 9 08:58:53 PDT 2023


================
@@ -968,6 +975,49 @@ static void emitRegionAccessors(const Operator &op, raw_ostream &os) {
   }
 }
 
+/// Emits builder that extracts results from op
+static void emitValueBuilder(const Operator &op,
+                             llvm::SmallVector<std::string> functionArgs,
+                             raw_ostream &os) {
+  // If we are asked to skip default builders, comply.
+  if (op.skipDefaultBuilders())
+    return;
+  auto name = sanitizeName(op.getOperationName());
+  iterator_range<llvm::SplittingIterator> splitName = llvm::split(name, ".");
+  os << llvm::formatv(
+      valueBuilderTemplate,
+      // Drop dialect name and then sanitize again (to catch e.g. func.return).
+      sanitizeName(llvm::join(++splitName.begin(), splitName.end(), "_")),
+      op.getCppClassName(),
+      llvm::join(
+          llvm::map_range(functionArgs,
+                          [](const std::string &argAndMaybeDefault) {
+                            llvm::SmallVector<llvm::StringRef> argMaybeDefault =
----------------
jpienaar wrote:

Lets hoist some of these out. This nesting is getting a bit much to follow here.

https://github.com/llvm/llvm-project/pull/68308


More information about the Mlir-commits mailing list