@@ -47,6 +47,16 @@ module {
47
47
%1 = quir.measure (%arg0 ) : (!quir.qubit <1 >) -> i1
48
48
quir.return %0 , %1: i1 , i1
49
49
}
50
+ quir.circuit @circuit_7 (%arg0: !quir.qubit <1 >) -> (i1 , i1 ) {
51
+ %0 = quir.measure (%arg0 ) : (!quir.qubit <1 >) -> i1
52
+ %1 = quir.measure (%arg0 ) : (!quir.qubit <1 >) -> i1
53
+ quir.return %0 , %1: i1 , i1
54
+ }
55
+ quir.circuit @circuit_8 (%arg0: !quir.qubit <1 >) -> (i1 , i1 ) {
56
+ %0 = quir.measure (%arg0 ) : (!quir.qubit <1 >) -> i1
57
+ %1 = quir.measure (%arg0 ) : (!quir.qubit <1 >) -> i1
58
+ quir.return %0 , %1: i1 , i1
59
+ }
50
60
// CHECK: @circuit_0_q0_circuit_1_q1(%arg0: !quir.qubit<1>
51
61
// CHECK: %0 = quir.measure(%arg0) : (!quir.qubit<1>) -> i1
52
62
// CHECK: %1 = quir.measure(%arg1) : (!quir.qubit<1>) -> i1
@@ -55,14 +65,16 @@ module {
55
65
func @main () -> i32 {
56
66
%0 = quir.declare_qubit {id = 0 : i32 } : !quir.qubit <1 >
57
67
%1 = quir.declare_qubit {id = 1 : i32 } : !quir.qubit <1 >
58
- %200 = quir.declare_qubit {id = 1 : i32 } : !quir.qubit <1 >
68
+ %200 = quir.declare_qubit {id = 2 : i32 } : !quir.qubit <1 >
69
+ %201 = quir.declare_qubit {id = 3 : i32 } : !quir.qubit <1 >
70
+ %202 = quir.declare_qubit {id = 4 : i32 } : !quir.qubit <1 >
59
71
%2 = quir.call_circuit @circuit_0 (%0 ) : (!quir.qubit <1 >) -> i1
60
72
%3 = quir.call_circuit @circuit_1 (%1 ) : (!quir.qubit <1 >) -> i1
61
73
// CHECK-NOT: {{.*}} = quir.call_circuit @circuit_0(%0) : (!quir.qubit<1>) -> i1
62
74
// CHECK-NOT: {{.*}} = quir.call_circuit @circuit_1(%1) : (!quir.qubit<1>) -> i1
63
75
// CHECK: {{.*}}:2 = quir.call_circuit @circuit_0_q0_circuit_1_q1(%0, %1) : (!quir.qubit<1>, !quir.qubit<1>) -> (i1, i1)
64
76
65
- quir.barrier %0 , %1 , %200 : (!quir.qubit <1 >, !quir.qubit <1 >, !quir.qubit <1 >) -> ()
77
+ quir.barrier %0 , %1 , %200 , %201 , %202 : (!quir.qubit < 1 >, !quir.qubit < 1 >, !quir.qubit <1 >, !quir.qubit <1 >, !quir.qubit <1 >) -> ()
66
78
%4 = quir.call_circuit @circuit_2 (%0 ) : (!quir.qubit <1 >) -> i1
67
79
oq3.cbit_assign_bit @qc0_meas <2 > [0 ] : i1 = %4
68
80
%5 = quir.call_circuit @circuit_3 (%1 ) : (!quir.qubit <1 >) -> i1
@@ -75,12 +87,14 @@ module {
75
87
// CHECK-NOT: oq3.cbit_assign_bit @qc0_meas<2> [0] : i1 = %[[MEAS2]]:0
76
88
// CHECK-NOT: oq3.cbit_assign_bit @qc0_meas<2> [1] : i1 = %[[MEAS2]]:1
77
89
78
- quir.barrier %0 , %1 , %200 : (!quir.qubit <1 >,!quir.qubit <1 >, !quir.qubit <1 >) -> ()
90
+ quir.barrier %0 , %1 , %200 , %201 , %202 : (!quir.qubit <1 >, !quir.qubit < 1 >, !quir.qubit < 1 >, !quir.qubit <1 >, !quir.qubit <1 >) -> ()
79
91
%6 = quir.call_circuit @circuit_4 (%0 ) : (!quir.qubit <1 >) -> i1
80
92
%7 = oq3.variable_load @p1 : f64
81
93
%8 = " oq3.cast" (%7 ) : (f64 ) -> !quir.angle <64 >
94
+ quir.barrier %200 : (!quir.qubit <1 >) -> ()
82
95
%9 = oq3.variable_load @p2 : f64
83
96
%10 = " oq3.cast" (%9 ) : (f64 ) -> !quir.angle <64 >
97
+ quir.barrier %201 : (!quir.qubit <1 >) -> ()
84
98
%11 = quir.call_circuit @circuit_5 (%1 , %8 ) : (!quir.qubit <1 >, !quir.angle <64 >) -> i1
85
99
// CHECK-NOT: %6 = quir.call_circuit @circuit_4(%0) : (!quir.qubit<1>) -> i1
86
100
// CHECK-NOT: %7 = oq3.variable_load @p1 : f64
@@ -92,12 +106,26 @@ module {
92
106
// CHECK: {{.*}} = oq3.variable_load @p2 : f64
93
107
// CHECK: %{{.*}}:2 = quir.call_circuit @circuit_4_q0_circuit_5_q1(%0, %1, %[[CAST]]) : (!quir.qubit<1>, !quir.qubit<1>, !quir.angle<64>) -> (i1, i1)
94
108
95
- quir.barrier %0 , %1 , %200 : (!quir.qubit <1 >,!quir.qubit <1 >, !quir.qubit <1 >) -> ()
109
+ quir.barrier %0 , %1 , %200 , %201 , %202 : (!quir.qubit <1 >, !quir.qubit < 1 >, !quir.qubit < 1 >, !quir.qubit <1 >, !quir.qubit <1 >) -> ()
96
110
%12:2 = quir.call_circuit @circuit_6 (%0 ) : (!quir.qubit <1 >) -> (i1 , i1 )
97
111
quir.barrier %200 : (!quir.qubit <1 >) -> ()
98
112
%13:2 = quir.call_circuit @circuit_6 (%0 ) : (!quir.qubit <1 >) -> (i1 , i1 )
99
113
// CHECK: %{{.*}}:4 = quir.call_circuit @circuit_6_q0_circuit_6_q0(%0, %0) : (!quir.qubit<1>, !quir.qubit<1>) -> (i1, i1, i1, i1)
100
114
115
+
116
+ quir.barrier %0 , %1 , %200 , %201 , %202 : (!quir.qubit <1 >, !quir.qubit <1 >, !quir.qubit <1 >, !quir.qubit <1 >, !quir.qubit <1 >) -> ()
117
+ %14:2 = quir.call_circuit @circuit_7 (%0 ) : (!quir.qubit <1 >) -> (i1 , i1 )
118
+ quir.barrier %200 , %201 : (!quir.qubit <1 >, !quir.qubit <1 >) -> ()
119
+ quir.barrier %200 , %202 : (!quir.qubit <1 >, !quir.qubit <1 >) -> ()
120
+ %15:2 = quir.call_circuit @circuit_7 (%0 ) : (!quir.qubit <1 >) -> (i1 , i1 )
121
+ // CHECK: %{{.*}}:4 = quir.call_circuit @circuit_7_q0_circuit_7_q0(%0, %0) : (!quir.qubit<1>, !quir.qubit<1>) -> (i1, i1, i1, i1)
122
+
123
+ quir.barrier %0 , %1 , %200 , %201 , %202 : (!quir.qubit <1 >, !quir.qubit <1 >, !quir.qubit <1 >, !quir.qubit <1 >, !quir.qubit <1 >) -> ()
124
+ %16:2 = quir.call_circuit @circuit_8 (%0 ) : (!quir.qubit <1 >) -> (i1 , i1 )
125
+ quir.barrier %0 : (!quir.qubit <1 >) -> ()
126
+ %17:2 = quir.call_circuit @circuit_8 (%0 ) : (!quir.qubit <1 >) -> (i1 , i1 )
127
+ // CHECK-NOT: %{{.*}}:4 = quir.call_circuit @circuit_8_q0_circuit_8_q0(%0, %0) : (!quir.qubit<1>, !quir.qubit<1>) -> (i1, i1, i1, i1)
128
+
101
129
%c0_i32 = arith.constant 0 : i32
102
130
return %c0_i32 : i32
103
131
}
0 commit comments