From c4acd69163b6b02efbab391c943da896f77b9478 Mon Sep 17 00:00:00 2001 From: Philipp Grulich Date: Thu, 12 Sep 2024 23:15:27 +0200 Subject: [PATCH] cleanup llvm compilation pass (#38) --- nautilus/include/nautilus/std/cmath.h | 1 - nautilus/src/nautilus/api/std/cmath.cpp | 8 +++--- .../backends/mlir/MLIRCompilationBackend.cpp | 2 +- .../backends/mlir/MLIRPassManager.cpp | 28 ++----------------- .../backends/mlir/MLIRPassManager.hpp | 5 +--- nautilus/src/nautilus/compiler/ir/IRGraph.cpp | 3 +- nautilus/src/nautilus/tracing/Block.cpp | 3 +- nautilus/src/nautilus/tracing/Snapshot.cpp | 3 +- .../src/nautilus/tracing/TraceOperation.cpp | 3 +- 9 files changed, 17 insertions(+), 39 deletions(-) diff --git a/nautilus/include/nautilus/std/cmath.h b/nautilus/include/nautilus/std/cmath.h index d6c761e2..0bda54e4 100644 --- a/nautilus/include/nautilus/std/cmath.h +++ b/nautilus/include/nautilus/std/cmath.h @@ -180,7 +180,6 @@ val log10f(val x); val log2(val x); val log2(val x); - /** * @brief natural logarithm (to base e) of 1 plus the given number (ln(1+x)) * diff --git a/nautilus/src/nautilus/api/std/cmath.cpp b/nautilus/src/nautilus/api/std/cmath.cpp index 077abafb..a6613f9d 100644 --- a/nautilus/src/nautilus/api/std/cmath.cpp +++ b/nautilus/src/nautilus/api/std/cmath.cpp @@ -24,11 +24,11 @@ val abs(val x) { return invoke<>( +[](int8_t x) -> int8_t { return std::abs(x); }, x); } -val abs(val x) { +val abs(val x) { return invoke<>( +[](int16_t x) -> int16_t { return std::abs(x); }, x); } -val abs(val x) { +val abs(val x) { return invoke<>( +[](int32_t x) -> int32_t { return std::abs(x); }, x); } @@ -633,11 +633,11 @@ val log10(val x) { val log2(val x) { return invoke<>( - +[](float x) { return std::log2(x); }, x); + +[](float x) { return std::log2(x); }, x); } val log2(val x) { return invoke<>( - +[](double x) { return std::log2(x); }, x); + +[](double x) { return std::log2(x); }, x); } #if defined(_LIBCPP_VERSION) diff --git a/nautilus/src/nautilus/compiler/backends/mlir/MLIRCompilationBackend.cpp b/nautilus/src/nautilus/compiler/backends/mlir/MLIRCompilationBackend.cpp index c92a6c24..a9a3750d 100644 --- a/nautilus/src/nautilus/compiler/backends/mlir/MLIRCompilationBackend.cpp +++ b/nautilus/src/nautilus/compiler/backends/mlir/MLIRCompilationBackend.cpp @@ -45,7 +45,7 @@ std::unique_ptr MLIRCompilationBackend::compile(const std::shared_pt // 2.b Take the MLIR module from the MLIRLoweringProvider and apply lowering // and optimization passes. - if (mlir::MLIRPassManager::lowerAndOptimizeMLIRModule(mlirModule, {}, {})) { + if (mlir::MLIRPassManager::lowerAndOptimizeMLIRModule(mlirModule, {})) { throw RuntimeException("Could not lower and optimize MLIR module."); } diff --git a/nautilus/src/nautilus/compiler/backends/mlir/MLIRPassManager.cpp b/nautilus/src/nautilus/compiler/backends/mlir/MLIRPassManager.cpp index 214f41f2..01cbfc55 100644 --- a/nautilus/src/nautilus/compiler/backends/mlir/MLIRPassManager.cpp +++ b/nautilus/src/nautilus/compiler/backends/mlir/MLIRPassManager.cpp @@ -12,22 +12,6 @@ namespace nautilus::compiler::mlir { using namespace ::mlir; -/** - * @brief Takes a LoweringPass Enum and returns the corresponding mlir lowering - * pass. - * - * @param loweringPass: Used to get the correct mlir lowering pass. - * @return std::unique_ptr: MLIR lowering pass corresponding to - * supplied Enum. - */ -std::unique_ptr getMLIRLoweringPass(MLIRPassManager::LoweringPass loweringPass) { - switch (loweringPass) { - case MLIRPassManager::LoweringPass::LLVM: - return mlir::createConvertControlFlowToLLVMPass(); - } - throw NotImplementedException("pass is not supported"); -} - /** * @brief Takes a OptimizationPass Enum and returns the corresponding mlir * optimization pass. @@ -44,7 +28,7 @@ std::unique_ptr getMLIROptimizationPass(MLIRPassManager::Optimizatio throw NotImplementedException("pass is not supported"); } -int MLIRPassManager::lowerAndOptimizeMLIRModule(mlir::OwningOpRef& module, const std::vector& loweringPasses, const std::vector& optimizationPasses) { +int MLIRPassManager::lowerAndOptimizeMLIRModule(mlir::OwningOpRef& module, const std::vector& optimizationPasses) { mlir::PassManager passManager(module->getContext()); // Apply optimization passes. @@ -56,14 +40,8 @@ int MLIRPassManager::lowerAndOptimizeMLIRModule(mlir::OwningOpRef& module, - const std::vector& loweringPasses, - const std::vector& optimizationPasses); + static int lowerAndOptimizeMLIRModule(::mlir::OwningOpRef<::mlir::ModuleOp>& module, const std::vector& optimizationPasses); }; } // namespace nautilus::compiler::mlir diff --git a/nautilus/src/nautilus/compiler/ir/IRGraph.cpp b/nautilus/src/nautilus/compiler/ir/IRGraph.cpp index 68785750..efe2332e 100644 --- a/nautilus/src/nautilus/compiler/ir/IRGraph.cpp +++ b/nautilus/src/nautilus/compiler/ir/IRGraph.cpp @@ -7,7 +7,8 @@ namespace nautilus::compiler::ir { -IRGraph::IRGraph(const compiler::CompilationUnitID& id) : id(id) {} +IRGraph::IRGraph(const compiler::CompilationUnitID& id) : id(id) { +} std::unique_ptr& IRGraph::addRootOperation(std::unique_ptr root) { this->rootOperation = std::move(root); diff --git a/nautilus/src/nautilus/tracing/Block.cpp b/nautilus/src/nautilus/tracing/Block.cpp index 4ddb466e..c02fc560 100644 --- a/nautilus/src/nautilus/tracing/Block.cpp +++ b/nautilus/src/nautilus/tracing/Block.cpp @@ -4,7 +4,8 @@ namespace nautilus::tracing { -Block::Block(uint16_t blockId) : blockId(blockId), type(Type::Default) {} +Block::Block(uint16_t blockId) : blockId(blockId), type(Type::Default) { +} operation_identifier Block::addOperation(nautilus::tracing::TraceOperation&& operation) { uint16_t operationIndex = operations.size(); diff --git a/nautilus/src/nautilus/tracing/Snapshot.cpp b/nautilus/src/nautilus/tracing/Snapshot.cpp index c45e0a40..3b143f3a 100644 --- a/nautilus/src/nautilus/tracing/Snapshot.cpp +++ b/nautilus/src/nautilus/tracing/Snapshot.cpp @@ -5,7 +5,8 @@ namespace nautilus::tracing { Snapshot::Snapshot(Tag* tag, uint64_t staticValueHash) : staticValueHash(staticValueHash), tag(tag) { } -Snapshot::Snapshot() : staticValueHash(), tag() {} +Snapshot::Snapshot() : staticValueHash(), tag() { +} bool Snapshot::operator==(const nautilus::tracing::Snapshot& rhs) const { return staticValueHash == rhs.staticValueHash && tag == rhs.tag; diff --git a/nautilus/src/nautilus/tracing/TraceOperation.cpp b/nautilus/src/nautilus/tracing/TraceOperation.cpp index 52fedfe5..ab1f8eae 100644 --- a/nautilus/src/nautilus/tracing/TraceOperation.cpp +++ b/nautilus/src/nautilus/tracing/TraceOperation.cpp @@ -15,7 +15,8 @@ std::ostream& operator<<(std::ostream& os, const FunctionCall& call) { return os; } -BlockRef::BlockRef(uint16_t block) : block(block) {} +BlockRef::BlockRef(uint16_t block) : block(block) { +} std::ostream& operator<<(std::ostream& os, const BlockRef& ref) { os << "B" << ref.block << "(";