Skip to content

Commit

Permalink
remove redundant unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
orpuente-MS committed Oct 24, 2024
1 parent ae535ce commit eaf0cc8
Showing 1 changed file with 0 additions and 145 deletions.
145 changes: 0 additions & 145 deletions compiler/qsc/src/codegen/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -883,151 +883,6 @@ mod adaptive_ri_profile {
"#]].assert_eq(&qir);
}

#[test]
fn custom_measurement_generates_correct_qir() {
let source = "namespace Test {
operation Main() : Result {
use q = Qubit();
H(q);
__quantum__qis__mx__body(q)
}
@Measurement()
operation __quantum__qis__mx__body(target: Qubit) : Result {
body intrinsic;
}
}";
let sources = SourceMap::new([("test.qs".into(), source.into())], None);
let language_features = LanguageFeatures::default();
let capabilities = TargetCapabilityFlags::Adaptive
| TargetCapabilityFlags::QubitReset
| TargetCapabilityFlags::IntegerComputations;

let (std_id, store) = crate::compile::package_store_with_stdlib(capabilities);
let qir = get_qir(
sources,
language_features,
capabilities,
store,
&[(std_id, None)],
)
.expect("the input program set in the `source` variable should be valid Q#");
expect![[r#"
%Result = type opaque
%Qubit = type opaque
define void @ENTRYPOINT__main() #0 {
block_0:
call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 0 to %Qubit*))
call void @__quantum__qis__mx__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null)
ret void
}
declare void @__quantum__qis__h__body(%Qubit*)
declare void @__quantum__qis__mx__body(%Qubit*, %Result*) #1
declare void @__quantum__rt__result_record_output(%Result*, i8*)
attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="1" }
attributes #1 = { "irreversible" }
; module flags
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10}
!0 = !{i32 1, !"qir_major_version", i32 1}
!1 = !{i32 7, !"qir_minor_version", i32 0}
!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
!3 = !{i32 1, !"dynamic_result_management", i1 false}
!4 = !{i32 1, !"classical_ints", i1 true}
!5 = !{i32 1, !"qubit_resetting", i1 true}
!6 = !{i32 1, !"classical_floats", i1 false}
!7 = !{i32 1, !"backwards_branching", i1 false}
!8 = !{i32 1, !"classical_fixed_points", i1 false}
!9 = !{i32 1, !"user_functions", i1 false}
!10 = !{i32 1, !"multiple_target_branching", i1 false}
"#]]
.assert_eq(&qir);
}

#[test]
fn custom_joint_measurement_generates_correct_qir() {
let source = "namespace Test {
operation Main() : (Result, Result) {
use q1 = Qubit();
use q2 = Qubit();
H(q1);
H(q2);
__quantum__qis__mzz__body(q1, q2)
}
@Measurement()
operation __quantum__qis__mzz__body(q1: Qubit, q2: Qubit) : (Result, Result) {
body intrinsic;
}
}";
let sources = SourceMap::new([("test.qs".into(), source.into())], None);
let language_features = LanguageFeatures::default();
let capabilities = TargetCapabilityFlags::Adaptive
| TargetCapabilityFlags::QubitReset
| TargetCapabilityFlags::IntegerComputations;

let (std_id, store) = crate::compile::package_store_with_stdlib(capabilities);
let qir = get_qir(
sources,
language_features,
capabilities,
store,
&[(std_id, None)],
)
.expect("the input program set in the `source` variable should be valid Q#");
expect![[r#"
%Result = type opaque
%Qubit = type opaque
define void @ENTRYPOINT__main() #0 {
block_0:
call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 0 to %Qubit*))
call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*))
call void @__quantum__qis__mzz__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 0 to %Result*), %Result* inttoptr (i64 1 to %Result*))
call void @__quantum__rt__tuple_record_output(i64 2, i8* null)
call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null)
call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 1 to %Result*), i8* null)
ret void
}
declare void @__quantum__qis__h__body(%Qubit*)
declare void @__quantum__qis__mzz__body(%Qubit*, %Qubit*, %Result*, %Result*) #1
declare void @__quantum__rt__tuple_record_output(i64, i8*)
declare void @__quantum__rt__result_record_output(%Result*, i8*)
attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="2" }
attributes #1 = { "irreversible" }
; module flags
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10}
!0 = !{i32 1, !"qir_major_version", i32 1}
!1 = !{i32 7, !"qir_minor_version", i32 0}
!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
!3 = !{i32 1, !"dynamic_result_management", i1 false}
!4 = !{i32 1, !"classical_ints", i1 true}
!5 = !{i32 1, !"qubit_resetting", i1 true}
!6 = !{i32 1, !"classical_floats", i1 false}
!7 = !{i32 1, !"backwards_branching", i1 false}
!8 = !{i32 1, !"classical_fixed_points", i1 false}
!9 = !{i32 1, !"user_functions", i1 false}
!10 = !{i32 1, !"multiple_target_branching", i1 false}
"#]]
.assert_eq(&qir);
}

#[test]
fn qubit_measurements_not_deferred() {
let source = "namespace Test {
Expand Down

0 comments on commit eaf0cc8

Please sign in to comment.