Skip to content

Commit 19706c7

Browse files
committed
Add RUS test case
1 parent a150d07 commit 19706c7

3 files changed

Lines changed: 94 additions & 0 deletions

File tree

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace Test {
2+
operation Main() : Result[] {
3+
use qs = Qubit[2];
4+
use anc = Qubit();
5+
repeat {
6+
ApplyToEach(H, qs);
7+
Controlled X(qs, anc);
8+
} until MResetZ(anc) == Zero
9+
fixup {
10+
ResetAll(qs);
11+
}
12+
MResetEachZ(qs)
13+
}
14+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
@0 = internal constant [4 x i8] c"0_a\00"
2+
@1 = internal constant [6 x i8] c"1_a0r\00"
3+
@2 = internal constant [6 x i8] c"2_a1r\00"
4+
5+
define i64 @ENTRYPOINT__main() #0 {
6+
block_0:
7+
%var_1 = alloca i1
8+
call void @__quantum__rt__initialize(ptr null)
9+
store i1 true, ptr %var_1
10+
br label %block_1
11+
block_1:
12+
%var_7 = load i1, ptr %var_1
13+
br i1 %var_7, label %block_2, label %block_3
14+
block_2:
15+
call void @__quantum__qis__h__body(ptr inttoptr (i64 0 to ptr))
16+
call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr))
17+
call void @__quantum__qis__ccx__body(ptr inttoptr (i64 0 to ptr), ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 2 to ptr))
18+
call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 0 to ptr))
19+
%var_3 = call i1 @__quantum__rt__read_result(ptr inttoptr (i64 0 to ptr))
20+
%var_4 = icmp eq i1 %var_3, false
21+
%var_5 = xor i1 %var_4, true
22+
store i1 %var_5, ptr %var_1
23+
%var_9 = load i1, ptr %var_1
24+
br i1 %var_9, label %block_4, label %block_5
25+
block_3:
26+
call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 0 to ptr), ptr inttoptr (i64 1 to ptr))
27+
call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 2 to ptr))
28+
call void @__quantum__rt__array_record_output(i64 2, ptr @0)
29+
call void @__quantum__rt__result_record_output(ptr inttoptr (i64 1 to ptr), ptr @1)
30+
call void @__quantum__rt__result_record_output(ptr inttoptr (i64 2 to ptr), ptr @2)
31+
ret i64 0
32+
block_4:
33+
call void @__quantum__qis__reset__body(ptr inttoptr (i64 0 to ptr))
34+
call void @__quantum__qis__reset__body(ptr inttoptr (i64 1 to ptr))
35+
br label %block_5
36+
block_5:
37+
br label %block_1
38+
}
39+
40+
declare void @__quantum__rt__initialize(ptr)
41+
42+
declare void @__quantum__qis__h__body(ptr)
43+
44+
declare void @__quantum__qis__ccx__body(ptr, ptr, ptr)
45+
46+
declare void @__quantum__qis__mresetz__body(ptr, ptr) #1
47+
48+
declare i1 @__quantum__rt__read_result(ptr)
49+
50+
declare void @__quantum__qis__reset__body(ptr) #1
51+
52+
declare void @__quantum__rt__array_record_output(i64, ptr)
53+
54+
declare void @__quantum__rt__result_record_output(ptr, ptr)
55+
56+
attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="3" "required_num_results"="3" }
57+
attributes #1 = { "irreversible" }
58+
59+
; module flags
60+
61+
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7}
62+
63+
!0 = !{i32 1, !"qir_major_version", i32 2}
64+
!1 = !{i32 7, !"qir_minor_version", i32 1}
65+
!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
66+
!3 = !{i32 1, !"dynamic_result_management", i1 false}
67+
!4 = !{i32 5, !"int_computations", !{!"i64"}}
68+
!5 = !{i32 5, !"float_computations", !{!"double"}}
69+
!6 = !{i32 7, !"backwards_branching", i2 3}
70+
!7 = !{i32 1, !"arrays", i1 true}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
START
2+
METADATA entry_point
3+
METADATA output_labeling_schema
4+
METADATA qir_profiles adaptive_profile
5+
METADATA required_num_qubits 3
6+
METADATA required_num_results 3
7+
OUTPUT ARRAY 2 0_a
8+
OUTPUT RESULT 0 1_a0r
9+
OUTPUT RESULT 0 2_a1r
10+
END 0

0 commit comments

Comments
 (0)