1616#include " mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h"
1717#include " mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h"
1818#include " mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h"
19- #include " mlir/Conversion/LLVMCommon/ConversionTarget.h"
20- #include " mlir/Conversion/LLVMCommon/TypeConverter.h"
2119#include " mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h"
2220#include " mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h"
2321#include " mlir/Dialect/Affine/IR/AffineOps.h"
2826#include " mlir/Dialect/Math/IR/Math.h"
2927#include " mlir/Dialect/MemRef/IR/MemRef.h"
3028#include " mlir/Dialect/SCF/IR/SCF.h"
31- #include " mlir/Dialect/SCF/Transforms/Passes.h"
3229#include " mlir/Dialect/Vector/IR/VectorOps.h"
3330#include " mlir/IR/BuiltinDialect.h"
3431#include " mlir/IR/BuiltinTypes.h"
@@ -87,7 +84,7 @@ struct ConvertCIRToMLIRPass
8784 mlir::affine::AffineDialect, mlir::memref::MemRefDialect,
8885 mlir::arith::ArithDialect, mlir::cf::ControlFlowDialect,
8986 mlir::scf::SCFDialect, mlir::math::MathDialect,
90- mlir::vector::VectorDialect>();
87+ mlir::vector::VectorDialect, mlir::LLVM::LLVMDialect >();
9188 }
9289 void runOnOperation () final ;
9390
@@ -1415,6 +1412,20 @@ class CIRPtrStrideOpLowering
14151412 }
14161413};
14171414
1415+ class CIRUnreachableOpLowering
1416+ : public mlir::OpConversionPattern<cir::UnreachableOp> {
1417+ public:
1418+ using OpConversionPattern<cir::UnreachableOp>::OpConversionPattern;
1419+
1420+ mlir::LogicalResult
1421+ matchAndRewrite (cir::UnreachableOp op, OpAdaptor adaptor,
1422+ mlir::ConversionPatternRewriter &rewriter) const override {
1423+ // match and rewrite.
1424+ rewriter.replaceOpWithNewOp <mlir::LLVM::UnreachableOp>(op);
1425+ return mlir::success ();
1426+ }
1427+ };
1428+
14181429void populateCIRToMLIRConversionPatterns (mlir::RewritePatternSet &patterns,
14191430 mlir::TypeConverter &converter) {
14201431 patterns.add <CIRReturnLowering, CIRBrOpLowering>(patterns.getContext ());
@@ -1435,7 +1446,8 @@ void populateCIRToMLIRConversionPatterns(mlir::RewritePatternSet &patterns,
14351446 CIRBitClrsbOpLowering, CIRBitFfsOpLowering, CIRBitParityOpLowering,
14361447 CIRIfOpLowering, CIRVectorCreateLowering, CIRVectorInsertLowering,
14371448 CIRVectorExtractLowering, CIRVectorCmpOpLowering, CIRACosOpLowering,
1438- CIRASinOpLowering>(converter, patterns.getContext ());
1449+ CIRASinOpLowering, CIRUnreachableOpLowering>(converter,
1450+ patterns.getContext ());
14391451}
14401452
14411453static mlir::TypeConverter prepareTypeConverter () {
@@ -1517,11 +1529,11 @@ void ConvertCIRToMLIRPass::runOnOperation() {
15171529
15181530 mlir::ConversionTarget target (getContext ());
15191531 target.addLegalOp <mlir::ModuleOp>();
1520- target
1521- . addLegalDialect < mlir::affine::AffineDialect , mlir::arith::ArithDialect ,
1522- mlir::memref::MemRefDialect , mlir::func::FuncDialect ,
1523- mlir::scf::SCFDialect , mlir::cf::ControlFlowDialect ,
1524- mlir::math::MathDialect, mlir::vector::VectorDialect >();
1532+ target. addLegalDialect <mlir::affine::AffineDialect, mlir::arith::ArithDialect,
1533+ mlir::memref::MemRefDialect , mlir::func::FuncDialect ,
1534+ mlir::scf::SCFDialect , mlir::cf::ControlFlowDialect ,
1535+ mlir::math::MathDialect , mlir::vector::VectorDialect ,
1536+ mlir::LLVM::LLVMDialect >();
15251537 target.addIllegalDialect <cir::CIRDialect>();
15261538
15271539 patterns.add <CIRCastOpLowering, CIRIfOpLowering, CIRScopeOpLowering, CIRYieldOpLowering>(converter, context);
0 commit comments