34 :
Context_(std::make_unique<::mlir::MLIRContext>())
37 Context_->getOrLoadDialect<::mlir::rvsdg::RVSDGDialect>();
39 Context_->getOrLoadDialect<::mlir::jlm::JLMDialect>();
41 Context_->getOrLoadDialect<::mlir::arith::ArithDialect>();
43 Context_->getOrLoadDialect<::mlir::LLVM::LLVMDialect>();
61 std::unique_ptr<llvm::LlvmRvsdgModule>
69 std::unique_ptr<llvm::LlvmRvsdgModule>
70 ConvertMlir(std::unique_ptr<::mlir::Block> & block);
78 static std::unique_ptr<llvm::LlvmRvsdgModule>
95 ::llvm::SmallVector<jlm::rvsdg::Output *>
105 ::llvm::SmallVector<jlm::rvsdg::Output *>
115 static ::llvm::SmallVector<jlm::rvsdg::Output *>
117 ::mlir::Operation & mlirOp,
118 const std::unordered_map<void *, rvsdg::Output *> & outputMap);
129 ::mlir::arith::CmpIOp & CompOp,
130 const ::llvm::SmallVector<rvsdg::Output *> & inputs,
142 ::mlir::LLVM::ICmpOp & operation,
144 const ::llvm::SmallVector<rvsdg::Output *> & inputs);
154 const ::mlir::Operation & mlirOperation,
155 const ::llvm::SmallVector<rvsdg::Output *> & inputs);
173 ::mlir::Operation & mlirOperation,
174 const ::llvm::SmallVector<rvsdg::Output *> & inputs);
183 std::vector<jlm::rvsdg::Output *>
185 ::mlir::Operation & mlirOperation,
187 const ::llvm::SmallVector<rvsdg::Output *> & inputs);
210 std::unique_ptr<llvm::LlvmRvsdgModule>
222 ::mlir::Operation & mlirLambda,
224 const ::llvm::SmallVector<rvsdg::Output *> & inputs);
231 std::shared_ptr<const rvsdg::Type>