; The base profile's own example program (the QIR specification, MIT): two ; qubits entangled, measured, and a tuple of the two results recorded. @0 = internal constant [3 x i8] c"r1\00" @1 = internal constant [3 x i8] c"r2\00" @2 = internal constant [3 x i8] c"t0\00" define i64 @Entry_Point_Name() #0 { entry: call void @__quantum__rt__initialize(ptr null) br label %body body: ; preds = %entry call void @__quantum__qis__h__body(ptr null) call void @__quantum__qis__cnot__body(ptr null, ptr inttoptr (i64 1 to ptr)) br label %measurements measurements: ; preds = %body call void @__quantum__qis__mz__body(ptr null, ptr writeonly null) call void @__quantum__qis__mz__body(ptr inttoptr (i64 1 to ptr), ptr writeonly inttoptr (i64 1 to ptr)) br label %output output: ; preds = %measurements call void @__quantum__rt__tuple_record_output(i64 2, ptr @2) call void @__quantum__rt__result_record_output(ptr null, ptr @0) call void @__quantum__rt__result_record_output(ptr inttoptr (i64 1 to ptr), ptr @1) ret i64 0 } declare void @__quantum__qis__h__body(ptr) declare void @__quantum__qis__cnot__body(ptr, ptr) declare void @__quantum__qis__mz__body(ptr, ptr writeonly) #1 declare void @__quantum__rt__initialize(ptr) declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__result_record_output(ptr, ptr) attributes #0 = { "entry_point" "qir_profiles"="base_profile" "output_labeling_schema"="schema_id" "required_num_qubits"="2" "required_num_results"="2" } attributes #1 = { "irreversible" } !llvm.module.flags = !{!0, !1, !2, !3} !0 = !{i32 1, !"qir_major_version", i32 2} !1 = !{i32 7, !"qir_minor_version", i32 0} !2 = !{i32 1, !"dynamic_qubit_management", i1 false} !3 = !{i32 1, !"dynamic_result_management", i1 false}