61 MLIRContext *context = &getContext();
63 auto converter = mlir::LLVMTypeConverter(context);
68 LLVMConversionTarget target(*context);
69 target.addIllegalDialect<comb::CombDialect>();
70 target.addIllegalDialect<arith::ArithDialect>();
74 target.addLegalDialect<hw::HWDialect>();
75 target.addLegalDialect<sv::SVDialect>();
79 populateSCFToControlFlowConversionPatterns(
patterns);
82 populateFuncToLLVMConversionPatterns(converter,
patterns);
85 cf::populateControlFlowToLLVMConversionPatterns(converter,
patterns);
91 arith::populateArithToLLVMConversionPatterns(converter,
patterns);
94 index::populateIndexToLLVMConversionPatterns(converter,
patterns);
97 populateAnyFunctionOpInterfaceTypeConversionPattern(
patterns, converter);
104 if (failed(applyPartialConversion(funcOp, target, std::move(
patterns))))