%Result = type opaque %Qubit = type opaque @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" @3 = internal constant [3 x i8] c"r3\00" @4 = internal constant [3 x i8] c"r4\00" define i64 @Entry_Point_Name() #0 { entry: call void @__quantum__rt__initialize(i8* null) br label %body body: ; preds = %entry call void @__quantum__qis__h__body(%Qubit* null) call void @__quantum__qis__cnot__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) %wc1 = call i64 @___get_wasm_context(i64 0) %wc2 = call i64 @___get_wasm_context(i64 1) %rti = call i64 @round_to_int(i64 %wc1, double 3.14) ; 3 %abs = call i64 @abs_i64(i64 %wc2, i64 -42) ; 42 %dbl = sitofp i64 %abs to double %sqf = call i64 @sqrt_floor(i64 %wc1, double %dbl) ; 6 %var = add i64 2, %rti %fct = call i64 @factorial(i64 %wc2, i64 %var) ; 120 br label %measurements measurements: ; preds = %body call void @__quantum__qis__mz__body(%Qubit* null, %Result* writeonly null) call void @__quantum__qis__mz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* writeonly inttoptr (i64 1 to %Result*)) br label %output output: ; preds = %measurements call void @__quantum__rt__tuple_record_output(i64 4, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @2, i32 0, i32 0)) call void @__quantum__rt__int_record_output(i64 %rti, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @0, i32 0, i32 0)) call void @__quantum__rt__int_record_output(i64 %abs, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @1, i32 0, i32 0)) call void @__quantum__rt__int_record_output(i64 %sqf, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @3, i32 0, i32 0)) call void @__quantum__rt__int_record_output(i64 %fct, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @4, i32 0, i32 0)) ret i64 0 } declare void @__quantum__qis__h__body(%Qubit*) declare void @__quantum__qis__cnot__body(%Qubit*, %Qubit*) declare void @__quantum__qis__mz__body(%Qubit*, %Result* writeonly) #1 declare void @__quantum__rt__initialize(i8*) declare void @__quantum__rt__tuple_record_output(i64, i8*) declare void @__quantum__rt__int_record_output(i64, i8*) ; WASM init function declare i64 @___get_wasm_context(i64) ; WASM function declarations declare i64 @round_to_int(i64, double) #2 declare i64 @abs_i64(i64, i64) #2 declare i64 @sqrt_floor(i64, double) #2 declare i64 @factorial(i64, i64) #2 attributes #0 = { "entry_point" "qir_profiles"="base_profile" "output_labeling_schema"="labeled" "required_num_qubits"="2" "required_num_results"="2" } attributes #1 = { "irreversible" } ; WASM attribute attributes #2 = { "wasm" } !llvm.module.flags = !{!0, !1, !2, !3} !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}