[mlir][vector] Create VectorToLLVMDialectInterface (#121440)
Create `VectorToLLVMDialectInterface` which allows automatic conversion discovery by generic `--convert-to-llvm` pass. This only covers final dialect conversion step and not any previous preparation steps. Also, currently there is no way to pass any additional parameters through this conversion interface, but most users using default parameters anyway.
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"
|
||||
|
||||
#include "mlir/Conversion/ArithCommon/AttrToLLVMConverter.h"
|
||||
#include "mlir/Conversion/ConvertToLLVM/ToLLVMInterface.h"
|
||||
#include "mlir/Conversion/LLVMCommon/PrintCallHelper.h"
|
||||
#include "mlir/Conversion/LLVMCommon/TypeConverter.h"
|
||||
#include "mlir/Conversion/LLVMCommon/VectorPattern.h"
|
||||
@@ -1942,3 +1943,27 @@ void mlir::populateVectorToLLVMMatrixConversionPatterns(
|
||||
patterns.add<VectorMatmulOpConversion>(converter);
|
||||
patterns.add<VectorFlatTransposeOpConversion>(converter);
|
||||
}
|
||||
|
||||
namespace {
|
||||
struct VectorToLLVMDialectInterface : public ConvertToLLVMPatternInterface {
|
||||
using ConvertToLLVMPatternInterface::ConvertToLLVMPatternInterface;
|
||||
void loadDependentDialects(MLIRContext *context) const final {
|
||||
context->loadDialect<LLVM::LLVMDialect>();
|
||||
}
|
||||
|
||||
/// Hook for derived dialect interface to provide conversion patterns
|
||||
/// and mark dialect legal for the conversion target.
|
||||
void populateConvertToLLVMConversionPatterns(
|
||||
ConversionTarget &target, LLVMTypeConverter &typeConverter,
|
||||
RewritePatternSet &patterns) const final {
|
||||
populateVectorToLLVMConversionPatterns(typeConverter, patterns);
|
||||
}
|
||||
};
|
||||
} // namespace
|
||||
|
||||
void mlir::vector::registerConvertVectorToLLVMInterface(
|
||||
DialectRegistry ®istry) {
|
||||
registry.addExtension(+[](MLIRContext *ctx, vector::VectorDialect *dialect) {
|
||||
dialect->addInterfaces<VectorToLLVMDialectInterface>();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user