@@ -993,14 +993,20 @@ mod given_interpreter {
993993 %Result = type opaque
994994 %Qubit = type opaque
995995
996- define void @ENTRYPOINT__main() #0 {
996+ @empty_tag = internal constant [1 x i8] c"\00"
997+ @0 = internal constant [4 x i8] c"0_r\00"
998+
999+ define i64 @ENTRYPOINT__main() #0 {
9971000 block_0:
1001+ call void @__quantum__rt__initialize(i8* null)
9981002 call void @__quantum__qis__cx__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*))
9991003 call void @__quantum__qis__m__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
1000- call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null )
1001- ret void
1004+ call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0) )
1005+ ret i64 0
10021006 }
10031007
1008+ declare void @__quantum__rt__initialize(i8*)
1009+
10041010 declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1
10051011
10061012 declare void @__quantum__rt__result_record_output(%Result*, i8*)
@@ -1054,16 +1060,22 @@ mod given_interpreter {
10541060 %Result = type opaque
10551061 %Qubit = type opaque
10561062
1057- define void @ENTRYPOINT__main() #0 {
1063+ @empty_tag = internal constant [1 x i8] c"\00"
1064+ @0 = internal constant [4 x i8] c"0_r\00"
1065+
1066+ define i64 @ENTRYPOINT__main() #0 {
10581067 block_0:
1068+ call void @__quantum__rt__initialize(i8* null)
10591069 call void @__quantum__qis__rz__body(double 2.0, %Qubit* inttoptr (i64 0 to %Qubit*))
10601070 call void @__quantum__qis__rz__body(double 0.0, %Qubit* inttoptr (i64 0 to %Qubit*))
10611071 call void @__quantum__qis__rz__body(double 1.0, %Qubit* inttoptr (i64 0 to %Qubit*))
10621072 call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
1063- call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null )
1064- ret void
1073+ call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0) )
1074+ ret i64 0
10651075 }
10661076
1077+ declare void @__quantum__rt__initialize(i8*)
1078+
10671079 declare void @__quantum__qis__rz__body(double, %Qubit*)
10681080
10691081 declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1
@@ -1081,7 +1093,7 @@ mod given_interpreter {
10811093 !1 = !{i32 7, !"qir_minor_version", i32 0}
10821094 !2 = !{i32 1, !"dynamic_qubit_management", i1 false}
10831095 !3 = !{i32 1, !"dynamic_result_management", i1 false}
1084- !4 = !{i32 1 , !"int_computations", !"i64"}
1096+ !4 = !{i32 5 , !"int_computations", !{! "i64"} }
10851097 "# ] ]
10861098 . assert_eq ( & res) ;
10871099 }
@@ -1111,23 +1123,31 @@ mod given_interpreter {
11111123 %Result = type opaque
11121124 %Qubit = type opaque
11131125
1114- define void @ENTRYPOINT__main() #0 {
1126+ @empty_tag = internal constant [1 x i8] c"\00"
1127+ @0 = internal constant [6 x i8] c"0_t0r\00"
1128+ @1 = internal constant [8 x i8] c"1_t1t0b\00"
1129+ @2 = internal constant [8 x i8] c"2_t1t1b\00"
1130+
1131+ define i64 @ENTRYPOINT__main() #0 {
11151132 block_0:
1133+ call void @__quantum__rt__initialize(i8* null)
11161134 call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
1117- %var_0 = call i1 @__quantum__qis__read_result__body (%Result* inttoptr (i64 0 to %Result*))
1118- %var_2 = call i1 @__quantum__qis__read_result__body (%Result* inttoptr (i64 0 to %Result*))
1135+ %var_0 = call i1 @__quantum__rt__read_result (%Result* inttoptr (i64 0 to %Result*))
1136+ %var_2 = call i1 @__quantum__rt__read_result (%Result* inttoptr (i64 0 to %Result*))
11191137 %var_3 = icmp eq i1 %var_2, false
1120- call void @__quantum__rt__tuple_record_output(i64 2, i8* null )
1121- call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null )
1122- call void @__quantum__rt__tuple_record_output(i64 2, i8* null )
1123- call void @__quantum__rt__bool_record_output(i1 %var_0, i8* null )
1124- call void @__quantum__rt__bool_record_output(i1 %var_3, i8* null )
1125- ret void
1138+ call void @__quantum__rt__tuple_record_output(i64 2, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @empty_tag, i64 0, i64 0) )
1139+ call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @0, i64 0, i64 0) )
1140+ call void @__quantum__rt__tuple_record_output(i64 2, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @empty_tag, i64 0, i64 0) )
1141+ call void @__quantum__rt__bool_record_output(i1 %var_0, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @1, i64 0, i64 0) )
1142+ call void @__quantum__rt__bool_record_output(i1 %var_3, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @2, i64 0, i64 0) )
1143+ ret i64 0
11261144 }
11271145
1146+ declare void @__quantum__rt__initialize(i8*)
1147+
11281148 declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1
11291149
1130- declare i1 @__quantum__qis__read_result__body (%Result*)
1150+ declare i1 @__quantum__rt__read_result (%Result*)
11311151
11321152 declare void @__quantum__rt__tuple_record_output(i64, i8*)
11331153
@@ -1188,14 +1208,20 @@ mod given_interpreter {
11881208 %Result = type opaque
11891209 %Qubit = type opaque
11901210
1191- define void @ENTRYPOINT__main() #0 {
1211+ @empty_tag = internal constant [1 x i8] c"\00"
1212+ @0 = internal constant [4 x i8] c"0_r\00"
1213+
1214+ define i64 @ENTRYPOINT__main() #0 {
11921215 block_0:
1216+ call void @__quantum__rt__initialize(i8* null)
11931217 call void @__quantum__qis__cx__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*))
11941218 call void @__quantum__qis__m__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
1195- call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null )
1196- ret void
1219+ call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0) )
1220+ ret i64 0
11971221 }
11981222
1223+ declare void @__quantum__rt__initialize(i8*)
1224+
11991225 declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1
12001226
12011227 declare void @__quantum__rt__result_record_output(%Result*, i8*)
@@ -1232,14 +1258,20 @@ mod given_interpreter {
12321258 %Result = type opaque
12331259 %Qubit = type opaque
12341260
1235- define void @ENTRYPOINT__main() #0 {
1261+ @empty_tag = internal constant [1 x i8] c"\00"
1262+ @0 = internal constant [4 x i8] c"0_r\00"
1263+
1264+ define i64 @ENTRYPOINT__main() #0 {
12361265 block_0:
1266+ call void @__quantum__rt__initialize(i8* null)
12371267 call void @__quantum__qis__cx__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*))
12381268 call void @__quantum__qis__m__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
1239- call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null )
1240- ret void
1269+ call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0) )
1270+ ret i64 0
12411271 }
12421272
1273+ declare void @__quantum__rt__initialize(i8*)
1274+
12431275 declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1
12441276
12451277 declare void @__quantum__rt__result_record_output(%Result*, i8*)
@@ -1308,14 +1340,20 @@ mod given_interpreter {
13081340 %Result = type opaque
13091341 %Qubit = type opaque
13101342
1311- define void @ENTRYPOINT__main() #0 {
1343+ @empty_tag = internal constant [1 x i8] c"\00"
1344+ @0 = internal constant [4 x i8] c"0_r\00"
1345+
1346+ define i64 @ENTRYPOINT__main() #0 {
13121347 block_0:
1348+ call void @__quantum__rt__initialize(i8* null)
13131349 call void @__quantum__qis__cx__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*))
13141350 call void @__quantum__qis__m__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
1315- call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null )
1316- ret void
1351+ call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0) )
1352+ ret i64 0
13171353 }
13181354
1355+ declare void @__quantum__rt__initialize(i8*)
1356+
13191357 declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1
13201358
13211359 declare void @__quantum__rt__result_record_output(%Result*, i8*)
@@ -1364,14 +1402,20 @@ mod given_interpreter {
13641402 %Result = type opaque
13651403 %Qubit = type opaque
13661404
1367- define void @ENTRYPOINT__main() #0 {
1405+ @empty_tag = internal constant [1 x i8] c"\00"
1406+ @0 = internal constant [4 x i8] c"0_r\00"
1407+
1408+ define i64 @ENTRYPOINT__main() #0 {
13681409 block_0:
1410+ call void @__quantum__rt__initialize(i8* null)
13691411 call void @__quantum__qis__cx__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*))
13701412 call void @__quantum__qis__m__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
1371- call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null )
1372- ret void
1413+ call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0) )
1414+ ret i64 0
13731415 }
13741416
1417+ declare void @__quantum__rt__initialize(i8*)
1418+
13751419 declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1
13761420
13771421 declare void @__quantum__rt__result_record_output(%Result*, i8*)
@@ -1419,14 +1463,20 @@ mod given_interpreter {
14191463 %Result = type opaque
14201464 %Qubit = type opaque
14211465
1422- define void @ENTRYPOINT__main() #0 {
1466+ @empty_tag = internal constant [1 x i8] c"\00"
1467+ @0 = internal constant [4 x i8] c"0_b\00"
1468+
1469+ define i64 @ENTRYPOINT__main() #0 {
14231470 block_0:
1471+ call void @__quantum__rt__initialize(i8* null)
14241472 call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
14251473 %var_0 = call i1 @check_result(%Result* inttoptr (i64 0 to %Result*))
1426- call void @__quantum__rt__bool_record_output(i1 %var_0, i8* null )
1427- ret void
1474+ call void @__quantum__rt__bool_record_output(i1 %var_0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0) )
1475+ ret i64 0
14281476 }
14291477
1478+ declare void @__quantum__rt__initialize(i8*)
1479+
14301480 declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1
14311481
14321482 declare i1 @check_result(%Result*)
0 commit comments