//===- ToLLVMInterface.cpp - MLIR LLVM Conversion -------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "mlir/Conversion/ConvertToLLVM/ToLLVMInterface.h" #include "mlir/IR/Dialect.h" #include "mlir/IR/Operation.h" #include "llvm/ADT/DenseSet.h" using namespace mlir; void mlir::populateConversionTargetFromOperation( Operation *root, ConversionTarget &target, LLVMTypeConverter &typeConverter, RewritePatternSet &patterns) { DenseSet dialects; root->walk([&](Operation *op) { Dialect *dialect = op->getDialect(); if (!dialects.insert(dialect).second) return; // First time we encounter this dialect: if it implements the interface, // let's populate patterns ! auto *iface = dyn_cast(dialect); if (!iface) return; iface->populateConvertToLLVMConversionPatterns(target, typeConverter, patterns); }); }