================
@@ -664,50 +680,139 @@ void mlirTypeConverterAddConversion(
});
}
+void mlirTypeConverterConversionResultsAppend(
+ MlirTypeConverterConversionResults results, MlirType type) {
+ static_cast<SmallVectorImpl<Type> *>(results.ptr)->push_back(unwrap(type));
+}
+
+void mlirTypeConverterAdd1ToNConversion(
+ MlirTypeConverter typeConverter,
+ MlirTypeConverter1ToNConversionCallback convertType, void *userData) {
+ unwrap(typeConverter)
+ ->addConversion(
+ [convertType, userData](Type type, SmallVectorImpl<Type> &results)
+ -> std::optional<LogicalResult> {
+ size_t numPriorResults = results.size();
+ MlirTypeConverterConversionResults wrappedResults{&results};
+ MlirLogicalResult result =
+ convertType(wrap(type), wrappedResults, userData);
+ if (mlirLogicalResultIsFailure(result)) {
+ // The callback declined. Restore any types it appended so the
+ // driver's "try the next conversion" invariant holds (a
declining
+ // conversion function must not mutate `results`).
+ results.truncate(numPriorResults);
+ return std::nullopt;
+ }
+ return success();
----------------
makslevental wrote:
@wsmoses not sure how you guys generate [this
header](https://github.com/EnzymeAD/Reactant.jl/blob/ef202e8582682f5edcf4e83b6a3dbfe049629828/src/mlir/libMLIR_h.jl#L10674)
but you cool if we change this API (`MlirTypeConverterConversionCallback`)?
https://github.com/llvm/llvm-project/pull/208935
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits