From ac0876423236127b32799fb6c183c3258b00f960 Mon Sep 17 00:00:00 2001 From: Matthias Reumann Date: Tue, 10 Mar 2026 08:01:23 +0100 Subject: [PATCH 1/4] Move mapping logic to Transforms --- mlir/include/mlir/CMakeLists.txt | 1 - mlir/include/mlir/Dialect/QCO/CMakeLists.txt | 1 + .../{Passes => Dialect/QCO/Transforms}/CMakeLists.txt | 0 .../QCO/Transforms}/Mapping/Architecture.h | 0 .../mlir/{Passes => Dialect/QCO/Transforms}/Passes.h | 4 ++-- .../mlir/{Passes => Dialect/QCO/Transforms}/Passes.td | 0 mlir/lib/CMakeLists.txt | 1 - mlir/lib/Dialect/QCO/CMakeLists.txt | 1 + .../{Passes => Dialect/QCO/Transforms}/CMakeLists.txt | 0 .../QCO/Transforms}/Mapping/Architecture.cpp | 2 +- .../QCO/Transforms}/Mapping/Mapping.cpp | 6 +++--- mlir/unittests/CMakeLists.txt | 1 - mlir/unittests/Dialect/QCO/CMakeLists.txt | 1 + .../{Passes => Dialect/QCO/Transforms}/CMakeLists.txt | 0 .../QCO/Transforms}/Mapping/CMakeLists.txt | 11 +++++++++-- .../QCO/Transforms}/Mapping/test_mapping.cpp | 4 ++-- 16 files changed, 20 insertions(+), 13 deletions(-) rename mlir/include/mlir/{Passes => Dialect/QCO/Transforms}/CMakeLists.txt (100%) rename mlir/include/mlir/{Passes => Dialect/QCO/Transforms}/Mapping/Architecture.h (100%) rename mlir/include/mlir/{Passes => Dialect/QCO/Transforms}/Passes.h (82%) rename mlir/include/mlir/{Passes => Dialect/QCO/Transforms}/Passes.td (100%) rename mlir/lib/{Passes => Dialect/QCO/Transforms}/CMakeLists.txt (100%) rename mlir/lib/{Passes => Dialect/QCO/Transforms}/Mapping/Architecture.cpp (96%) rename mlir/lib/{Passes => Dialect/QCO/Transforms}/Mapping/Mapping.cpp (99%) rename mlir/unittests/{Passes => Dialect/QCO/Transforms}/CMakeLists.txt (100%) rename mlir/unittests/{Passes => Dialect/QCO/Transforms}/Mapping/CMakeLists.txt (69%) rename mlir/unittests/{Passes => Dialect/QCO/Transforms}/Mapping/test_mapping.cpp (98%) diff --git a/mlir/include/mlir/CMakeLists.txt b/mlir/include/mlir/CMakeLists.txt index 7d688914a2..77927f0c45 100644 --- a/mlir/include/mlir/CMakeLists.txt +++ b/mlir/include/mlir/CMakeLists.txt @@ -8,4 +8,3 @@ add_subdirectory(Conversion) add_subdirectory(Dialect) -add_subdirectory(Passes) diff --git a/mlir/include/mlir/Dialect/QCO/CMakeLists.txt b/mlir/include/mlir/Dialect/QCO/CMakeLists.txt index b181a84fed..3b0a561d0f 100644 --- a/mlir/include/mlir/Dialect/QCO/CMakeLists.txt +++ b/mlir/include/mlir/Dialect/QCO/CMakeLists.txt @@ -7,3 +7,4 @@ # Licensed under the MIT License add_subdirectory(IR) +add_subdirectory(Transforms) diff --git a/mlir/include/mlir/Passes/CMakeLists.txt b/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt similarity index 100% rename from mlir/include/mlir/Passes/CMakeLists.txt rename to mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt diff --git a/mlir/include/mlir/Passes/Mapping/Architecture.h b/mlir/include/mlir/Dialect/QCO/Transforms/Mapping/Architecture.h similarity index 100% rename from mlir/include/mlir/Passes/Mapping/Architecture.h rename to mlir/include/mlir/Dialect/QCO/Transforms/Mapping/Architecture.h diff --git a/mlir/include/mlir/Passes/Passes.h b/mlir/include/mlir/Dialect/QCO/Transforms/Passes.h similarity index 82% rename from mlir/include/mlir/Passes/Passes.h rename to mlir/include/mlir/Dialect/QCO/Transforms/Passes.h index db55cc4039..c3589793e6 100644 --- a/mlir/include/mlir/Passes/Passes.h +++ b/mlir/include/mlir/Dialect/QCO/Transforms/Passes.h @@ -19,7 +19,7 @@ namespace mlir::qco { #define GEN_PASS_DECL -#include "mlir/Passes/Passes.h.inc" // IWYU pragma: export +#include "mlir/Dialect/QCO/Transforms/Passes.h.inc" // IWYU pragma: export //===----------------------------------------------------------------------===// // Registration @@ -27,6 +27,6 @@ namespace mlir::qco { /// Generate the code for registering passes. #define GEN_PASS_REGISTRATION -#include "mlir/Passes/Passes.h.inc" // IWYU pragma: export +#include "mlir/Dialect/QCO/Transforms/Passes.h.inc" // IWYU pragma: export } // namespace mlir::qco diff --git a/mlir/include/mlir/Passes/Passes.td b/mlir/include/mlir/Dialect/QCO/Transforms/Passes.td similarity index 100% rename from mlir/include/mlir/Passes/Passes.td rename to mlir/include/mlir/Dialect/QCO/Transforms/Passes.td diff --git a/mlir/lib/CMakeLists.txt b/mlir/lib/CMakeLists.txt index 7f46084b8c..959d80e2f1 100644 --- a/mlir/lib/CMakeLists.txt +++ b/mlir/lib/CMakeLists.txt @@ -9,5 +9,4 @@ add_subdirectory(Conversion) add_subdirectory(Compiler) add_subdirectory(Dialect) -add_subdirectory(Passes) add_subdirectory(Support) diff --git a/mlir/lib/Dialect/QCO/CMakeLists.txt b/mlir/lib/Dialect/QCO/CMakeLists.txt index f31db50cf5..228e9bea23 100644 --- a/mlir/lib/Dialect/QCO/CMakeLists.txt +++ b/mlir/lib/Dialect/QCO/CMakeLists.txt @@ -8,4 +8,5 @@ add_subdirectory(Builder) add_subdirectory(IR) +add_subdirectory(Transforms) add_subdirectory(Utils) diff --git a/mlir/lib/Passes/CMakeLists.txt b/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt similarity index 100% rename from mlir/lib/Passes/CMakeLists.txt rename to mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt diff --git a/mlir/lib/Passes/Mapping/Architecture.cpp b/mlir/lib/Dialect/QCO/Transforms/Mapping/Architecture.cpp similarity index 96% rename from mlir/lib/Passes/Mapping/Architecture.cpp rename to mlir/lib/Dialect/QCO/Transforms/Mapping/Architecture.cpp index 70997b8321..b7d08e3cd4 100644 --- a/mlir/lib/Passes/Mapping/Architecture.cpp +++ b/mlir/lib/Dialect/QCO/Transforms/Mapping/Architecture.cpp @@ -8,7 +8,7 @@ * Licensed under the MIT License */ -#include "mlir/Passes/Mapping/Architecture.h" +#include "mlir/Dialect/QCO/Transforms/Mapping/Architecture.h" #include #include diff --git a/mlir/lib/Passes/Mapping/Mapping.cpp b/mlir/lib/Dialect/QCO/Transforms/Mapping/Mapping.cpp similarity index 99% rename from mlir/lib/Passes/Mapping/Mapping.cpp rename to mlir/lib/Dialect/QCO/Transforms/Mapping/Mapping.cpp index 0720cdbaa8..61108c1094 100644 --- a/mlir/lib/Passes/Mapping/Mapping.cpp +++ b/mlir/lib/Dialect/QCO/Transforms/Mapping/Mapping.cpp @@ -11,9 +11,9 @@ #include "mlir/Dialect/QCO/IR/QCODialect.h" #include "mlir/Dialect/QCO/IR/QCOInterfaces.h" #include "mlir/Dialect/QCO/IR/QCOOps.h" +#include "mlir/Dialect/QCO/Transforms/Mapping/Architecture.h" +#include "mlir/Dialect/QCO/Transforms/Passes.h" #include "mlir/Dialect/QCO/Utils/WireIterator.h" -#include "mlir/Passes/Mapping/Architecture.h" -#include "mlir/Passes/Passes.h" #include #include @@ -49,7 +49,7 @@ namespace mlir::qco { #define GEN_PASS_DEF_MAPPINGPASS -#include "mlir/Passes/Passes.h.inc" +#include "mlir/Dialect/QCO/Transforms/Passes.h.inc" struct MappingPass : impl::MappingPassBase { private: diff --git a/mlir/unittests/CMakeLists.txt b/mlir/unittests/CMakeLists.txt index 962a4a9018..da76b50c37 100644 --- a/mlir/unittests/CMakeLists.txt +++ b/mlir/unittests/CMakeLists.txt @@ -18,4 +18,3 @@ add_subdirectory(programs) add_subdirectory(Compiler) add_subdirectory(Dialect) add_subdirectory(Conversion) -add_subdirectory(Passes) diff --git a/mlir/unittests/Dialect/QCO/CMakeLists.txt b/mlir/unittests/Dialect/QCO/CMakeLists.txt index e4045824ac..7b705e9b19 100644 --- a/mlir/unittests/Dialect/QCO/CMakeLists.txt +++ b/mlir/unittests/Dialect/QCO/CMakeLists.txt @@ -7,4 +7,5 @@ # Licensed under the MIT License add_subdirectory(IR) +add_subdirectory(Transforms) add_subdirectory(Utils) diff --git a/mlir/unittests/Passes/CMakeLists.txt b/mlir/unittests/Dialect/QCO/Transforms/CMakeLists.txt similarity index 100% rename from mlir/unittests/Passes/CMakeLists.txt rename to mlir/unittests/Dialect/QCO/Transforms/CMakeLists.txt diff --git a/mlir/unittests/Passes/Mapping/CMakeLists.txt b/mlir/unittests/Dialect/QCO/Transforms/Mapping/CMakeLists.txt similarity index 69% rename from mlir/unittests/Passes/Mapping/CMakeLists.txt rename to mlir/unittests/Dialect/QCO/Transforms/Mapping/CMakeLists.txt index 39aa3fbcc1..6e4a82b9a5 100644 --- a/mlir/unittests/Passes/Mapping/CMakeLists.txt +++ b/mlir/unittests/Dialect/QCO/Transforms/Mapping/CMakeLists.txt @@ -9,8 +9,15 @@ set(target_name mqt-core-mlir-unittest-mapping) add_executable(${target_name} test_mapping.cpp) -target_link_libraries(${target_name} PRIVATE MLIRParser GTest::gtest_main MLIRQCProgramBuilder - QCToQCO QCOToQC QcoPasses) +target_link_libraries( + ${target_name} + PRIVATE MLIRParser + GTest::gtest_main + MLIRQCProgramBuilder + MLIRQCOUtils + QCToQCO + QCOToQC + QcoPasses) mqt_mlir_configure_unittest_target(${target_name}) diff --git a/mlir/unittests/Passes/Mapping/test_mapping.cpp b/mlir/unittests/Dialect/QCO/Transforms/Mapping/test_mapping.cpp similarity index 98% rename from mlir/unittests/Passes/Mapping/test_mapping.cpp rename to mlir/unittests/Dialect/QCO/Transforms/Mapping/test_mapping.cpp index 858baed5aa..19804d22b0 100644 --- a/mlir/unittests/Passes/Mapping/test_mapping.cpp +++ b/mlir/unittests/Dialect/QCO/Transforms/Mapping/test_mapping.cpp @@ -15,8 +15,8 @@ #include "mlir/Dialect/QC/IR/QCInterfaces.h" #include "mlir/Dialect/QC/IR/QCOps.h" #include "mlir/Dialect/QCO/IR/QCODialect.h" -#include "mlir/Passes/Mapping/Architecture.h" -#include "mlir/Passes/Passes.h" +#include "mlir/Dialect/QCO/Transforms/Mapping/Architecture.h" +#include "mlir/Dialect/QCO/Transforms/Passes.h" #include #include From 393570f163558fcd8039833a6b16e8352798ef3b Mon Sep 17 00:00:00 2001 From: Matthias Reumann Date: Tue, 10 Mar 2026 08:18:47 +0100 Subject: [PATCH 2/4] Apply bunny suggestions --- CHANGELOG.md | 3 ++- mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 866af6258c..1d5066991b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ This project adheres to [Semantic Versioning], with the exception that minor rel ### Added - ✨ Add conversions between Jeff and QCO ([#1479]) ([**@denialhaag**]) -- ✨ Add a `place-and-route` pass for mapping circuits to architectures with restricted topologies ([#1537]) ([**@MatthiasReumann**]) +- ✨ Add a `place-and-route` pass for mapping circuits to architectures with restricted topologies ([#1537], [#1547]) ([**@MatthiasReumann**]) - ✨ Add initial infrastructure for new QC and QCO MLIR dialects ([#1264], [#1330], [#1402], [#1428], [#1430], [#1436], [#1443], [#1446], [#1464], [#1465], [#1470], [#1471], [#1472], [#1474], [#1475], [#1506], [#1510], [#1513], [#1521]) ([**@burgholzer**], [**@denialhaag**], [**@taminob**], [**@DRovara**], [**@li-mingbao**], [**@Ectras**], [**@MatthiasReumann**]) @@ -329,6 +329,7 @@ _📚 Refer to the [GitHub Release Notes](https://github.com/munich-quantum-tool +[#1547]: https://github.com/munich-quantum-toolkit/core/pull/1547 [#1537]: https://github.com/munich-quantum-toolkit/core/pull/1537 [#1521]: https://github.com/munich-quantum-toolkit/core/pull/1521 [#1513]: https://github.com/munich-quantum-toolkit/core/pull/1513 diff --git a/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt b/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt index 92d1494592..c0fb248a07 100644 --- a/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt +++ b/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt @@ -21,8 +21,10 @@ add_mlir_library( QcoPassesIncGen) # collect header files -file(GLOB_RECURSE PASSES_HEADERS_SOURCE ${MQT_MLIR_SOURCE_INCLUDE_DIR}/mlir/Passes/*.h) -file(GLOB_RECURSE PASSES_HEADERS_BUILD ${MQT_MLIR_BUILD_INCLUDE_DIR}/mlir/Passes/*.inc) +file(GLOB_RECURSE PASSES_HEADERS_SOURCE + ${MQT_MLIR_SOURCE_INCLUDE_DIR}/mlir/Dialect/QCO/Transforms/*.h) +file(GLOB_RECURSE PASSES_HEADERS_BUILD + ${MQT_MLIR_BUILD_INCLUDE_DIR}/mlir/Dialect/QCO/Transforms/*.inc) # add public headers using file sets target_sources( From 0a95157cb56008550ab71afff5246f71febdf8f0 Mon Sep 17 00:00:00 2001 From: Matthias Reumann Date: Tue, 10 Mar 2026 12:47:41 +0100 Subject: [PATCH 3/4] Rename QcoPassesIncGen to MLIRQCOTransformsIncGen --- mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt | 4 ++-- mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt index 9d11c5ca00..66bcfa12b8 100644 --- a/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt +++ b/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt @@ -8,5 +8,5 @@ set(LLVM_TARGET_DEFINITIONS Passes.td) mlir_tablegen(Passes.h.inc -gen-pass-decls -name QCO) -add_public_tablegen_target(QcoPassesIncGen) -add_mlir_doc(Passes QcoPasses Passes/ -gen-pass-doc) +add_public_tablegen_target(MLIRQCOTransformsIncGen) +add_mlir_doc(Passes QCOPasses Passes/ -gen-pass-doc) diff --git a/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt b/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt index c0fb248a07..54cd5ed057 100644 --- a/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt +++ b/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt @@ -18,7 +18,7 @@ add_mlir_library( PRIVATE ${dialect_libs} DEPENDS - QcoPassesIncGen) + MLIRQCOTransformsIncGen) # collect header files file(GLOB_RECURSE PASSES_HEADERS_SOURCE From 984d3dd10416a3a5d58ce9b9c41cda8a9658dd06 Mon Sep 17 00:00:00 2001 From: Matthias Reumann Date: Tue, 10 Mar 2026 13:01:12 +0100 Subject: [PATCH 4/4] QCOPasses to MLIRQCOTransforms --- mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt | 2 +- mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt | 4 ++-- mlir/unittests/Dialect/QCO/Transforms/Mapping/CMakeLists.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt b/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt index 66bcfa12b8..292fd15854 100644 --- a/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt +++ b/mlir/include/mlir/Dialect/QCO/Transforms/CMakeLists.txt @@ -9,4 +9,4 @@ set(LLVM_TARGET_DEFINITIONS Passes.td) mlir_tablegen(Passes.h.inc -gen-pass-decls -name QCO) add_public_tablegen_target(MLIRQCOTransformsIncGen) -add_mlir_doc(Passes QCOPasses Passes/ -gen-pass-doc) +add_mlir_doc(Passes MLIRQCOTransforms Passes/ -gen-pass-doc) diff --git a/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt b/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt index 54cd5ed057..b39dfcd93f 100644 --- a/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt +++ b/mlir/lib/Dialect/QCO/Transforms/CMakeLists.txt @@ -11,7 +11,7 @@ file(GLOB_RECURSE PASSES_SOURCES *.cpp) get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS) add_mlir_library( - QcoPasses + MLIRQCOTransforms ${PASSES_SOURCES} LINK_LIBS PUBLIC @@ -28,7 +28,7 @@ file(GLOB_RECURSE PASSES_HEADERS_BUILD # add public headers using file sets target_sources( - QcoPasses + MLIRQCOTransforms PUBLIC FILE_SET HEADERS BASE_DIRS diff --git a/mlir/unittests/Dialect/QCO/Transforms/Mapping/CMakeLists.txt b/mlir/unittests/Dialect/QCO/Transforms/Mapping/CMakeLists.txt index 6e4a82b9a5..b3e5c4b4d9 100644 --- a/mlir/unittests/Dialect/QCO/Transforms/Mapping/CMakeLists.txt +++ b/mlir/unittests/Dialect/QCO/Transforms/Mapping/CMakeLists.txt @@ -17,7 +17,7 @@ target_link_libraries( MLIRQCOUtils QCToQCO QCOToQC - QcoPasses) + MLIRQCOTransforms) mqt_mlir_configure_unittest_target(${target_name})