================
@@ -47,83 +56,93 @@ std::string GetOpCppClassName(const Record *OpRecord) {
return CppClassName.str();
}
-std::string GetOpABILoweringPatternName(llvm::StringRef OpName) {
- std::string Name = "CIR";
- Name += OpName;
- Name += "ABILowering";
- return Name;
-}
-
std::string GetOpLLVMLoweringPatternName(llvm::StringRef OpName) {
std::string Name = "CIRToLLVM";
Name += OpName;
Name += "Lowering";
return Name;
}
+std::optional<CustomLoweringCtor> parseCustomLoweringCtor(const Record *R) {
+ if (!R)
+ return std::nullopt;
-void GenerateABILoweringPattern(llvm::StringRef OpName,
- llvm::StringRef PatternName) {
- std::string CodeBuffer;
- llvm::raw_string_ostream Code(CodeBuffer);
-
- Code << "class " << PatternName
- << " : public mlir::OpConversionPattern<cir::" << OpName << "> {\n";
- Code << " [[maybe_unused]] mlir::DataLayout *dataLayout;\n";
- Code << " [[maybe_unused]] cir::LowerModule *lowerModule;\n";
- Code << "\n";
-
- Code << "public:\n";
- Code << " " << PatternName
- << "(mlir::MLIRContext *context, const mlir::TypeConverter "
- "&typeConverter, mlir::DataLayout &dataLayout, cir::LowerModule "
- "&lowerModule)\n";
- Code << " : OpConversionPattern<cir::" << OpName
- << ">(typeConverter, context), dataLayout(&dataLayout), "
- "lowerModule(&lowerModule) {}\n";
- Code << "\n";
+ CustomLoweringCtor Ctor;
+ const DagInit *Args = R->getValueAsDag("dagParams");
+ Ctor.Body = R->getValueAsString("body");
- Code << " mlir::LogicalResult matchAndRewrite(cir::" << OpName
- << " op, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) "
- "const override;\n";
+ for (const auto &[Arg, Name] : Args->getArgAndNames()) {
+ Ctor.Params.push_back(
+ {Arg->getAsUnquotedString(), Name->getAsUnquotedString()});
+ }
- Code << "};\n";
+ return Ctor;
+}
+void emitCustomParamList(raw_ostream &Code,
+ ArrayRef<CustomLoweringCtor::Param> Params) {
+ for (const auto &Param : Params) {
----------------
Lancern wrote:
```suggestion
for (const CustomLoweringCtor::Param &Param : Params) {
```
https://github.com/llvm/llvm-project/pull/176664
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits