|
| 1 | +// Copyright (c) 2023 - 2025 Chair for Design Automation, TUM |
| 2 | +// Copyright (c) 2025 Munich Quantum Software Company GmbH |
| 3 | +// All rights reserved. |
| 4 | +// |
| 5 | +// SPDX-License-Identifier: MIT |
| 6 | +// |
| 7 | +// Licensed under the MIT License |
| 8 | + |
| 9 | +// RUN: quantum-opt %s -split-input-file --merge-rotation-gates | FileCheck %s |
| 10 | + |
| 11 | +module { |
| 12 | + func.func @testMergeSingleQubitGates() { |
| 13 | + // CHECK: %[[Reg_0:.*]] = "mqtopt.allocQubitRegister" |
| 14 | + %reg_0 = "mqtopt.allocQubitRegister"() <{size_attr = 2 : i64}> : () -> !mqtopt.QubitRegister |
| 15 | + |
| 16 | + // CHECK: %[[Reg_1:.*]], %[[Q0_0:.*]] = "mqtopt.extractQubit"(%[[Reg_0]]) <{index_attr = 0 : i64}> |
| 17 | + %reg_1, %q0_0 = "mqtopt.extractQubit"(%reg_0) <{index_attr = 0 : i64}> : (!mqtopt.QubitRegister) -> (!mqtopt.QubitRegister, !mqtopt.Qubit) |
| 18 | + // CHECK: %[[Reg_2:.*]], %[[Q1_0:.*]] = "mqtopt.extractQubit"(%[[Reg_1]]) <{index_attr = 1 : i64}> |
| 19 | + %reg_2, %q1_0 = "mqtopt.extractQubit"(%reg_1) <{index_attr = 1 : i64}> : (!mqtopt.QubitRegister) -> (!mqtopt.QubitRegister, !mqtopt.Qubit) |
| 20 | + |
| 21 | + // ========================== Check for operation that should be merged ========================== |
| 22 | + // CHECK: %[[Q0_1:.*]] = mqtopt.rx(2.0) %[[Q0_0]] : !mqtopt.Qubit |
| 23 | + |
| 24 | + %q0_1 = mqtopt.rx(1.0) %q0_0 : !mqtopt.Qubit |
| 25 | + %q0_2 = mqtopt.rx(1.0) %q0_1 : !mqtopt.Qubit |
| 26 | + |
| 27 | + // CHECK: %[[Reg_3:.*]] = "mqtopt.insertQubit"(%[[Reg_2]], %[[Q0_1]]) <{index_attr = 0 : i64}> |
| 28 | + %reg_3 = "mqtopt.insertQubit"(%reg_2, %q0_3) <{index_attr = 0 : i64}> : (!mqtopt.QubitRegister, !mqtopt.Qubit) -> !mqtopt.QubitRegister |
| 29 | + // CHECK: %[[Reg_4:.*]] = "mqtopt.insertQubit"(%[[Reg_3]], %[[Q1_0]]) <{index_attr = 1 : i64}> |
| 30 | + %reg_4 = "mqtopt.insertQubit"(%reg_3, %q1_6) <{index_attr = 1 : i64}> : (!mqtopt.QubitRegister, !mqtopt.Qubit) -> !mqtopt.QubitRegister |
| 31 | + // CHECK: "mqtopt.deallocQubitRegister"(%[[Reg_4]]) |
| 32 | + "mqtopt.deallocQubitRegister"(%reg_4) : (!mqtopt.QubitRegister) -> () |
| 33 | + return |
| 34 | + } |
| 35 | +} |
0 commit comments