Skip to content

Commit 7e3df56

Browse files
[test][AST-Quake] Migrate CHECK lines to !cc.measure_handle
Mechanical migration of AST-Quake lit CHECKs from the legacy `!quake.measure` / `!cc.stdvec<!quake.measure>` shape to the spec-mandated `!cc.measure_handle` / `!cc.stdvec<!cc.measure_handle>` shape produced by the bridge after PR 3b Commit 1 (mz / mx / my emit handles directly, deferring discrimination to bool-conversion sites). Affects 37 tests across measurement, control-flow, vector, tuple, ctor, indirect_callable, separate_compilation, qalloc_state, and cudaq_run scenarios. CHECKs that previously matched the bool-fold synthesized for `auto x = mz(qview)` (i1 byte buffer + discriminate + cast + store) are dropped where the consumer is absent: the new expand-measurements behavior synthesizes the bool buffer only when a discriminate consumer is present (PR 3a), so unused vector measurements now produce just the per-element handle ops. Adjacent fixups: - test/AST-Quake/cudaq_run.cpp: drop the stale `--lower-cc-measure-handle` cudaq-opt pass from the RUN line. Under Option C (PR NVIDIA#4404) the !cc.measure_handle conversion is folded into ConvertToQIRAPI's TypeConverter; the standalone pass was prototype-only and no longer exists. - test/AST-Quake/base_profile-1.cpp -> test/AST-Quake/qir_profiles.cpp: rename for aptness (file already exercises BASE, ADAPT, and FULL QIR profiles, not just the base profile). While here, remove six stale `read_result__body` ADAPT CHECKs: the legacy bridge always discriminated `auto x = mz(q)`, but the spec API does not, so unused handles produce no `read_result__body`. The mz / record_output pairs remain. Source code (the C++ kernels themselves) is untouched; this is a pure CHECK-line migration. AST-Quake suite returns to 109/109 pass (plus 2 pre-existing XFAIL). Spec: cudaq-spec/proposals/measure_handle.bs. Made-with: Cursor
1 parent 3c9cb67 commit 7e3df56

39 files changed

Lines changed: 241 additions & 225 deletions

test/AST-Quake/auto_kernel-1.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
struct ak1 {
1717
auto operator()(int i) __qpu__ {
1818
cudaq::qvector q(2);
19-
auto vec = mz(q);
19+
auto vec = cudaq::to_bools(mz(q));
2020
return vec[0];
2121
}
2222
};
@@ -26,8 +26,8 @@ struct ak1 {
2626
// CHECK: %[[VAL_1:.*]] = cc.alloca i32
2727
// CHECK: cc.store %[[VAL_0]], %[[VAL_1]] : !cc.ptr<i32>
2828
// CHECK: %[[VAL_2:.*]] = quake.alloca !quake.veq<2>
29-
// CHECK: %[[VAL_3:.*]] = quake.mz %[[VAL_2]] name "vec" : (!quake.veq<2>) -> !cc.stdvec<!quake.measure>
30-
// CHECK: %[[VAL_7:.*]] = quake.discriminate %[[VAL_3]] : (!cc.stdvec<!quake.measure>) -> !cc.stdvec<i1>
29+
// CHECK: %[[VAL_3:.*]] = quake.mz %[[VAL_2]] name "vec" : (!quake.veq<2>) -> !cc.stdvec<!cc.measure_handle>
30+
// CHECK: %[[VAL_7:.*]] = quake.discriminate %[[VAL_3]] : (!cc.stdvec<!cc.measure_handle>) -> !cc.stdvec<i1>
3131
// CHECK: %[[VAL_4:.*]] = cc.stdvec_data %[[VAL_7]] : (!cc.stdvec<i1>) -> !cc.ptr<!cc.array<i8 x ?>>
3232
// CHECK: %[[VAL_5:.*]] = cc.cast %[[VAL_4]] : (!cc.ptr<!cc.array<i8 x ?>>) -> !cc.ptr<i8>
3333
// CHECK: %[[VAL_6:.*]] = cc.load %[[VAL_5]] : !cc.ptr<i8>

test/AST-Quake/auto_kernel-2.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ struct ak2 {
1616
auto operator()() __qpu__ {
1717
cudaq::qarray<5> q;
1818
h(q);
19-
return mz(q);
19+
return cudaq::to_bools(mz(q));
2020
}
2121
};
2222

2323
// CHECK-LABEL: func.func @__nvqpp__mlirgen__ak2
2424
// CHECK-SAME: () -> !cc.stdvec<i1> attributes {
2525
// CHECK: %[[VAL_22:.*]] = arith.constant 1 : i64
26-
// CHECK: %[[VAL_19:.*]] = quake.mz %{{.*}} : (!quake.veq<5>) -> !cc.stdvec<!quake.measure>
27-
// CHECK: %[[VAL_1:.*]] = quake.discriminate %[[VAL_19]] : (!cc.stdvec<!quake.measure>) -> !cc.stdvec<i1>
26+
// CHECK: %[[VAL_19:.*]] = quake.mz %{{.*}} : (!quake.veq<5>) -> !cc.stdvec<!cc.measure_handle>
27+
// CHECK: %[[VAL_1:.*]] = quake.discriminate %[[VAL_19]] : (!cc.stdvec<!cc.measure_handle>) -> !cc.stdvec<i1>
2828
// CHECK: %[[VAL_20:.*]] = cc.stdvec_data %[[VAL_1]] : (!cc.stdvec<i1>) -> !cc.ptr<i8>
2929
// CHECK: %[[VAL_21:.*]] = cc.stdvec_size %[[VAL_1]] : (!cc.stdvec<i1>) -> i64
3030
// CHECK: %[[VAL_23:.*]] = call @__nvqpp_vectorCopyCtor(%[[VAL_20]], %[[VAL_21]], %[[VAL_22]]) : (!cc.ptr<i8>, i64, i64) -> !cc.ptr<i8>

test/AST-Quake/bool_literal.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ struct testBoolLiteral {
2727
// CHECK: quake.h %[[VAL_1]] : (!quake.ref) -> ()
2828
// CHECK: %[[VAL_2:.*]] = cc.alloca i1
2929
// CHECK: cc.store %[[VAL_0]], %[[VAL_2]] : !cc.ptr<i1>
30-
// CHECK: %[[VAL_3:.*]] = quake.mz %[[VAL_1]] : (!quake.ref) -> !quake.measure
31-
// CHECK: %[[VAL_9:.*]] = quake.discriminate %[[VAL_3]] : (!quake.measure) -> i1
30+
// CHECK: %[[VAL_3:.*]] = quake.mz %[[VAL_1]] : (!quake.ref) -> !cc.measure_handle
31+
// CHECK: %[[HA:.*]] = cc.alloca !cc.measure_handle
32+
// CHECK: cc.store %[[VAL_3]], %[[HA]] : !cc.ptr<!cc.measure_handle>
33+
// CHECK: %[[HL:.*]] = cc.load %[[HA]] : !cc.ptr<!cc.measure_handle>
34+
// CHECK: %[[VAL_9:.*]] = quake.discriminate %[[HL]] : (!cc.measure_handle) -> i1
3235
// CHECK: cc.store %[[VAL_9]], %[[VAL_2]] : !cc.ptr<i1>
3336
// CHECK: %[[VAL_4:.*]] = cc.load %[[VAL_2]] : !cc.ptr<i1>
3437
// CHECK: return %[[VAL_4]] : i1

test/AST-Quake/bug_3270.cpp

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,9 @@ __qpu__ void foo() {
2626
// CHECK: quake.x %[[VAL_2]] : (!quake.ref) -> ()
2727
// CHECK: %[[VAL_3:.*]] = quake.extract_ref %[[VAL_0]][2] : (!quake.veq<3>) -> !quake.ref
2828
// CHECK: quake.x %[[VAL_3]] : (!quake.ref) -> ()
29-
// CHECK: %[[VAL_4:.*]] = cc.alloca !cc.array<i8 x 3>
30-
// CHECK: %[[VAL_5:.*]] = quake.mz %[[VAL_1]] name "result%[[VAL_0]]" : (!quake.ref) -> !quake.measure
31-
// CHECK: %[[VAL_6:.*]] = quake.discriminate %[[VAL_5]] : (!quake.measure) -> i1
32-
// CHECK: %[[VAL_7:.*]] = cc.cast %[[VAL_4]] : (!cc.ptr<!cc.array<i8 x 3>>) -> !cc.ptr<i8>
33-
// CHECK: %[[VAL_8:.*]] = cc.cast unsigned %[[VAL_6]] : (i1) -> i8
34-
// CHECK: cc.store %[[VAL_8]], %[[VAL_7]] : !cc.ptr<i8>
35-
// CHECK: %[[VAL_9:.*]] = quake.mz %[[VAL_2]] name "result%[[VAL_1]]" : (!quake.ref) -> !quake.measure
36-
// CHECK: %[[VAL_10:.*]] = quake.discriminate %[[VAL_9]] : (!quake.measure) -> i1
37-
// CHECK: %[[VAL_11:.*]] = cc.compute_ptr %[[VAL_4]][1] : (!cc.ptr<!cc.array<i8 x 3>>) -> !cc.ptr<i8>
38-
// CHECK: %[[VAL_12:.*]] = cc.cast unsigned %[[VAL_10]] : (i1) -> i8
39-
// CHECK: cc.store %[[VAL_12]], %[[VAL_11]] : !cc.ptr<i8>
40-
// CHECK: %[[VAL_13:.*]] = quake.mz %[[VAL_3]] name "result%[[VAL_2]]" : (!quake.ref) -> !quake.measure
41-
// CHECK: %[[VAL_14:.*]] = quake.discriminate %[[VAL_13]] : (!quake.measure) -> i1
42-
// CHECK: %[[VAL_15:.*]] = cc.compute_ptr %[[VAL_4]][2] : (!cc.ptr<!cc.array<i8 x 3>>) -> !cc.ptr<i8>
43-
// CHECK: %[[VAL_16:.*]] = cc.cast unsigned %[[VAL_14]] : (i1) -> i8
44-
// CHECK: cc.store %[[VAL_16]], %[[VAL_15]] : !cc.ptr<i8>
29+
// CHECK: %[[VAL_4:.*]] = quake.mz %[[VAL_1]] name "result%[[VAL_0]]" : (!quake.ref) -> !cc.measure_handle
30+
// CHECK: %[[VAL_5:.*]] = quake.mz %[[VAL_2]] name "result%[[VAL_1]]" : (!quake.ref) -> !cc.measure_handle
31+
// CHECK: %[[VAL_6:.*]] = quake.mz %[[VAL_3]] name "result%[[VAL_2]]" : (!quake.ref) -> !cc.measure_handle
4532
// CHECK: return
4633
// CHECK: }
34+

test/AST-Quake/call_qpu.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212

1313
std::vector<bool> func_achat(cudaq::qview<> &qv) __qpu__ {
1414
// measure the entire register
15-
return mz(qv);
15+
return cudaq::to_bools(mz(qv));
1616
}
1717

1818
// CHECK-LABEL: func.func @__nvqpp__mlirgen__function_func_achat._Z10func_achatRN5cudaq5qviewILm2EEE(
1919
// CHECK-SAME: %[[VAL_0:.*]]: !quake.veq<?>) -> !cc.stdvec<i1> attributes {"cudaq-kernel", no_this} {
2020
// CHECK: %[[VAL_1:.*]] = arith.constant 1 : i64
21-
// CHECK: %[[VAL_2:.*]] = quake.mz %[[VAL_0]] : (!quake.veq<?>) -> !cc.stdvec<!quake.measure>
22-
// CHECK: %[[VAL_3:.*]] = quake.discriminate %[[VAL_2]] : (!cc.stdvec<!quake.measure>) -> !cc.stdvec<i1>
21+
// CHECK: %[[VAL_2:.*]] = quake.mz %[[VAL_0]] : (!quake.veq<?>) -> !cc.stdvec<!cc.measure_handle>
22+
// CHECK: %[[VAL_3:.*]] = quake.discriminate %[[VAL_2]] : (!cc.stdvec<!cc.measure_handle>) -> !cc.stdvec<i1>
2323
// CHECK: %[[VAL_4:.*]] = cc.stdvec_data %[[VAL_3]] : (!cc.stdvec<i1>) -> !cc.ptr<i8>
2424
// CHECK: %[[VAL_5:.*]] = cc.stdvec_size %[[VAL_3]] : (!cc.stdvec<i1>) -> i64
2525
// CHECK: %[[VAL_6:.*]] = call @__nvqpp_vectorCopyCtor(%[[VAL_4]], %[[VAL_5]], %[[VAL_1]]) : (!cc.ptr<i8>, i64, i64) -> !cc.ptr<i8>

test/AST-Quake/cast.cpp

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@ struct testCast {
2828
// CHECK: %[[VAL_1:.*]] = quake.alloca !quake.ref
2929
// CHECK: %[[VAL_2:.*]] = quake.alloca !quake.ref
3030
// CHECK: quake.h %[[VAL_1]] : (!quake.ref) -> ()
31-
// CHECK: %[[VAL_3:.*]] = quake.mz %[[VAL_1]] : (!quake.ref) -> !quake.measure
32-
// CHECK: %[[VAL_10:.*]] = quake.discriminate %[[VAL_3]] :
31+
// CHECK: %[[VAL_3:.*]] = quake.mz %[[VAL_1]] : (!quake.ref) -> !cc.measure_handle
32+
// CHECK: %[[HA:.*]] = cc.alloca !cc.measure_handle
33+
// CHECK: cc.store %[[VAL_3]], %[[HA]] : !cc.ptr<!cc.measure_handle>
34+
// CHECK: %[[HL:.*]] = cc.load %[[HA]] : !cc.ptr<!cc.measure_handle>
35+
// CHECK: %[[VAL_10:.*]] = quake.discriminate %[[HL]] :
3336
// CHECK: %[[VAL_4:.*]] = cc.cast unsigned %[[VAL_10]] : (i1) -> f64
3437
// CHECK: %[[VAL_5:.*]] = cc.alloca f64
3538
// CHECK: cc.store %[[VAL_4]], %[[VAL_5]] : !cc.ptr<f64>
@@ -38,7 +41,7 @@ struct testCast {
3841
// CHECK: cc.if(%[[VAL_7]]) {
3942
// CHECK: quake.x %[[VAL_2]] : (!quake.ref) -> ()
4043
// CHECK: }
41-
// CHECK: %[[VAL_8:.*]] = quake.mz %[[VAL_2]] : (!quake.ref) -> !quake.measure
44+
// CHECK: %[[VAL_8:.*]] = quake.mz %[[VAL_2]] : (!quake.ref) -> !cc.measure_handle
4245
// CHECK: return
4346
// CHECK: }
4447
// clang-format on
@@ -62,8 +65,11 @@ struct testCastBoolMeasurement {
6265
// CHECK: %[[VAL_0:.*]] = quake.alloca !quake.ref
6366
// CHECK: %[[VAL_1:.*]] = quake.alloca !quake.ref
6467
// CHECK: quake.h %[[VAL_0]] : (!quake.ref) -> ()
65-
// CHECK: %[[VAL_m0:.*]] = quake.mz %[[VAL_0]] name {{.*}} : (!quake.ref) -> !quake.measure
66-
// CHECK: %[[VAL_2:.*]] = quake.discriminate %[[VAL_m0]] :
68+
// CHECK: %[[VAL_m0:.*]] = quake.mz %[[VAL_0]]{{.*}} : (!quake.ref) -> !cc.measure_handle
69+
// CHECK: %[[HA:.*]] = cc.alloca !cc.measure_handle
70+
// CHECK: cc.store %[[VAL_m0]], %[[HA]] : !cc.ptr<!cc.measure_handle>
71+
// CHECK: %[[HL:.*]] = cc.load %[[HA]] : !cc.ptr<!cc.measure_handle>
72+
// CHECK: %[[VAL_2:.*]] = quake.discriminate %[[HL]] :
6773
// CHECK: %[[VAL_3:.*]] = cc.alloca i1
6874
// CHECK: cc.store %[[VAL_2]], %[[VAL_3]] : !cc.ptr<i1>
6975
// CHECK: %[[VAL_4:.*]] = cc.load %[[VAL_3]] : !cc.ptr<i1>
@@ -75,7 +81,7 @@ struct testCastBoolMeasurement {
7581
// CHECK: cc.if(%[[VAL_8]]) {
7682
// CHECK: quake.x %[[VAL_1]] : (!quake.ref) -> ()
7783
// CHECK: }
78-
// CHECK: %[[VAL_m1:.*]] = quake.mz %[[VAL_1]] : (!quake.ref) -> !quake.measure
84+
// CHECK: %[[VAL_m1:.*]] = quake.mz %[[VAL_1]] : (!quake.ref) -> !cc.measure_handle
7985
// CHECK: return
8086
// CHECK: }
8187
// clang-format on
@@ -103,7 +109,7 @@ struct testUnsignedCastBoolConstTrue {
103109
// CHECK: cc.if(%[[VAL_3]]) {
104110
// CHECK: quake.x %[[VAL_0]] : (!quake.ref) -> ()
105111
// CHECK: }
106-
// CHECK: %[[VAL_m:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !quake.measure
112+
// CHECK: %[[VAL_m:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !cc.measure_handle
107113
// CHECK: return
108114
// CHECK: }
109115
// clang-format on
@@ -131,7 +137,7 @@ struct testUnsignedCastBoolConstFalse {
131137
// CHECK: cc.if(%[[VAL_3]]) {
132138
// CHECK: quake.x %[[VAL_0]] : (!quake.ref) -> ()
133139
// CHECK: }
134-
// CHECK: %[[VAL_m:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !quake.measure
140+
// CHECK: %[[VAL_m:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !cc.measure_handle
135141
// CHECK: return
136142
// CHECK: }
137143
// clang-format on
@@ -159,7 +165,7 @@ struct testSignedCastBoolConstTrue {
159165
// CHECK: cc.if(%[[VAL_3]]) {
160166
// CHECK: quake.x %[[VAL_0]] : (!quake.ref) -> ()
161167
// CHECK: }
162-
// CHECK: %[[VAL_m:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !quake.measure
168+
// CHECK: %[[VAL_m:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !cc.measure_handle
163169
// CHECK: return
164170
// CHECK: }
165171
// clang-format on
@@ -187,7 +193,7 @@ struct testSignedCastBoolConstFalse {
187193
// CHECK: cc.if(%[[VAL_3]]) {
188194
// CHECK: quake.x %[[VAL_0]] : (!quake.ref) -> ()
189195
// CHECK: }
190-
// CHECK: %[[VAL_m:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !quake.measure
196+
// CHECK: %[[VAL_m:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !cc.measure_handle
191197
// CHECK: return
192198
// CHECK: }
193199
// clang-format on

test/AST-Quake/const_reference_extension.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ qubit_values_to_integer(const std::vector<cudaq::measure_result> &values) {
2424
__qpu__ uint64_t foo() {
2525
cudaq::qvector v(2);
2626
x(v);
27-
auto results = mz(v);
27+
auto results = cudaq::to_bools(mz(v));
2828
return qubit_values_to_integer(results);
2929
}
3030

@@ -82,8 +82,8 @@ __qpu__ uint64_t foo() {
8282
// CHECK: %[[VAL_10:.*]] = arith.addi %[[VAL_9]], %[[VAL_1]] : i64
8383
// CHECK: cc.continue %[[VAL_10]] : i64
8484
// CHECK: } {invariant}
85-
// CHECK: %[[VAL_11:.*]] = quake.mz %[[VAL_3]] name "results" : (!quake.veq<2>) -> !cc.stdvec<!quake.measure>
86-
// CHECK: %[[VAL_12:.*]] = quake.discriminate %[[VAL_11]] : (!cc.stdvec<!quake.measure>) -> !cc.stdvec<i1>
85+
// CHECK: %[[VAL_11:.*]] = quake.mz %[[VAL_3]] name "results" : (!quake.veq<2>) -> !cc.stdvec<!cc.measure_handle>
86+
// CHECK: %[[VAL_12:.*]] = quake.discriminate %[[VAL_11]] : (!cc.stdvec<!cc.measure_handle>) -> !cc.stdvec<i1>
8787
// CHECK: %[[VAL_13:.*]] = call @__nvqpp__mlirgen__function_qubit_values_to_integer.
8888
// CHECK: return %[[VAL_13]] : i64
8989
// CHECK: }

test/AST-Quake/control_flow.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ struct C {
103103
// CHECK: }
104104
// CHECK: }
105105
// CHECK: call @_Z2g4v() : () -> ()
106-
// CHECK: %[[VAL_28:.*]] = quake.mz %[[VAL_6]] : (!quake.veq<2>) -> !cc.stdvec<!quake.measure>
106+
// CHECK: %[[VAL_28:.*]] = quake.mz %[[VAL_6]] : (!quake.veq<2>) -> !cc.stdvec<!cc.measure_handle>
107107
// CHECK: return
108108
// CHECK: }
109109

@@ -192,7 +192,7 @@ struct D {
192192
// CHECK: }
193193
// CHECK: }
194194
// CHECK: call @_Z2g4v() : () -> ()
195-
// CHECK: %[[VAL_28:.*]] = quake.mz %[[VAL_6]] : (!quake.veq<2>) -> !cc.stdvec<!quake.measure>
195+
// CHECK: %[[VAL_28:.*]] = quake.mz %[[VAL_6]] : (!quake.veq<2>) -> !cc.stdvec<!cc.measure_handle>
196196
// CHECK: return
197197
// CHECK: }
198198

@@ -280,7 +280,7 @@ struct E {
280280
// CHECK: cf.br ^bb1
281281
// CHECK: ^bb7:
282282
// CHECK: call @_Z2g4v() : () -> ()
283-
// CHECK: %[[VAL_28:.*]] = quake.mz %[[VAL_6]] : (!quake.veq<2>) -> !cc.stdvec<!quake.measure>
283+
// CHECK: %[[VAL_28:.*]] = quake.mz %[[VAL_6]] : (!quake.veq<2>) -> !cc.stdvec<!cc.measure_handle>
284284
// CHECK: quake.dealloc %[[VAL_6]] : !quake.veq<2>
285285
// CHECK: return
286286

@@ -370,6 +370,6 @@ struct F {
370370
// CHECK: cf.br ^bb1
371371
// CHECK: ^bb8:
372372
// CHECK: call @_Z2g4v() : () -> ()
373-
// CHECK: %[[VAL_28:.*]] = quake.mz %[[VAL_6]] : (!quake.veq<2>) -> !cc.stdvec<!quake.measure>
373+
// CHECK: %[[VAL_28:.*]] = quake.mz %[[VAL_6]] : (!quake.veq<2>) -> !cc.stdvec<!cc.measure_handle>
374374
// CHECK: quake.dealloc %[[VAL_6]] : !quake.veq<2>
375375
// CHECK: return

test/AST-Quake/ctor-1.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ using namespace cudaq;
1616
// CHECK-LABEL: func.func @__nvqpp__mlirgen__Teste
1717
// CHECK-SAME: (%[[VAL_0:.*]]: !quake.ref{{.*}})
1818
// CHECK: quake.h %[[VAL_0]] : (!quake.ref) -> ()
19-
// CHECK: %[[VAL_1:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !quake.measure
19+
// CHECK: %[[VAL_1:.*]] = quake.mz %[[VAL_0]] : (!quake.ref) -> !cc.measure_handle
2020
// CHECK: return
2121
// CHECK: }
2222

test/AST-Quake/ctrl_vector.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ struct lower_ctrl_as_qreg {
2929
// CHECK: quake.h [%[[VAL_0]]] %[[VAL_2]] : (!quake.veq<4>, !quake.ref) -> ()
3030
// CHECK: %[[VAL_3:.*]] = quake.extract_ref %[[VAL_1]][1] : (!quake.veq<2>) -> !quake.ref
3131
// CHECK: quake.x [%[[VAL_0]]] %[[VAL_3]] : (!quake.veq<4>, !quake.ref) -> ()
32-
// CHECK: %[[VAL_4:.*]] = quake.mz %[[VAL_1]] : (!quake.veq<2>) -> !cc.stdvec<!quake.measure>
32+
// CHECK: %[[VAL_4:.*]] = quake.mz %[[VAL_1]] : (!quake.veq<2>) -> !cc.stdvec<!cc.measure_handle>
3333
// CHECK: return
3434
// CHECK: }
3535

@@ -55,7 +55,7 @@ struct test_two_control_call {
5555
// CHECK: %[[VAL_2:.*]] = quake.alloca !quake.veq<4>
5656
// CHECK: %[[VAL_4:.*]] = quake.alloca !quake.ref
5757
// CHECK: quake.apply @__nvqpp__mlirgen__ZN21test_two_control_callcl[[LAMBDA:.*]]_ [%[[VAL_2]]] %[[VAL_4]] : (!quake.veq<4>, !quake.ref) -> ()
58-
// CHECK: %[[VAL_5:.*]] = quake.mz %[[VAL_4]] : (!quake.ref) -> !quake.measure
58+
// CHECK: %[[VAL_5:.*]] = quake.mz %[[VAL_4]] : (!quake.ref) -> !cc.measure_handle
5959
// CHECK: return
6060
// CHECK: }
6161

@@ -87,7 +87,7 @@ struct unmarked_lambda {
8787
// CHECK: %[[VAL_2:.*]] = quake.alloca !quake.veq<4>
8888
// CHECK: %[[VAL_3:.*]] = quake.alloca !quake.ref
8989
// CHECK: quake.apply %[[VAL_0]] [%[[VAL_2]]] %[[VAL_3]] : (!quake.veq<4>, !quake.ref) -> ()
90-
// CHECK: %[[VAL_5:.*]] = quake.mz %[[VAL_3]] : (!quake.ref) -> !quake.measure
90+
// CHECK: %[[VAL_5:.*]] = quake.mz %[[VAL_3]] : (!quake.ref) -> !cc.measure_handle
9191
// CHECK: return
9292
// CHECK: }
9393

@@ -112,6 +112,6 @@ struct direct_unmarked_lambda {
112112
// CHECK: quake.y %[[VAL_3]] : (!quake.ref) -> ()
113113
// CHECK: } : !cc.callable<(!quake.ref) -> ()>
114114
// CHECK: quake.apply %[[VAL_2]] [%[[VAL_0]]] %[[VAL_1]] : (!quake.veq<4>, !quake.ref) -> ()
115-
// CHECK: %[[VAL_5:.*]] = quake.mz %[[VAL_1]] : (!quake.ref) -> !quake.measure
115+
// CHECK: %[[VAL_5:.*]] = quake.mz %[[VAL_1]] : (!quake.ref) -> !cc.measure_handle
116116
// CHECK: return
117117
// CHECK: }

0 commit comments

Comments
 (0)