|
9 | 9 | #include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"
|
10 | 10 |
|
11 | 11 | #include "mlir/Conversion/ArithCommon/AttrToLLVMConverter.h"
|
| 12 | +#include "mlir/Conversion/ConvertToLLVM/ToLLVMInterface.h" |
12 | 13 | #include "mlir/Conversion/LLVMCommon/PrintCallHelper.h"
|
13 | 14 | #include "mlir/Conversion/LLVMCommon/TypeConverter.h"
|
14 | 15 | #include "mlir/Conversion/LLVMCommon/VectorPattern.h"
|
@@ -1942,3 +1943,27 @@ void mlir::populateVectorToLLVMMatrixConversionPatterns(
|
1942 | 1943 | patterns.add<VectorMatmulOpConversion>(converter);
|
1943 | 1944 | patterns.add<VectorFlatTransposeOpConversion>(converter);
|
1944 | 1945 | }
|
| 1946 | + |
| 1947 | +namespace { |
| 1948 | +struct VectorToLLVMDialectInterface : public ConvertToLLVMPatternInterface { |
| 1949 | + using ConvertToLLVMPatternInterface::ConvertToLLVMPatternInterface; |
| 1950 | + void loadDependentDialects(MLIRContext *context) const final { |
| 1951 | + context->loadDialect<LLVM::LLVMDialect>(); |
| 1952 | + } |
| 1953 | + |
| 1954 | + /// Hook for derived dialect interface to provide conversion patterns |
| 1955 | + /// and mark dialect legal for the conversion target. |
| 1956 | + void populateConvertToLLVMConversionPatterns( |
| 1957 | + ConversionTarget &target, LLVMTypeConverter &typeConverter, |
| 1958 | + RewritePatternSet &patterns) const final { |
| 1959 | + populateVectorToLLVMConversionPatterns(typeConverter, patterns); |
| 1960 | + } |
| 1961 | +}; |
| 1962 | +} // namespace |
| 1963 | + |
| 1964 | +void mlir::vector::registerConvertVectorToLLVMInterface( |
| 1965 | + DialectRegistry ®istry) { |
| 1966 | + registry.addExtension(+[](MLIRContext *ctx, vector::VectorDialect *dialect) { |
| 1967 | + dialect->addInterfaces<VectorToLLVMDialectInterface>(); |
| 1968 | + }); |
| 1969 | +} |
0 commit comments