microsoft/qdk

Public

mirrored from https://github.com/microsoft/qdkAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
fedimser/permutation

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

source/pip/tests-integration/devices/test_atom_schedule.py

1467lines · modecode

1# Copyright (c) Microsoft Corporation.
2# Licensed under the MIT License.
3
4import pytest
5from expecttest import assert_expected_inline
6
7import qsharp
8from qsharp._device._atom import NeutralAtomDevice
9from qsharp._device._atom._scheduler import Schedule
10from .validation import (
11 ValidateBeginEndParallel,
12 PerQubitOrdering,
13 check_qubit_ordering_unchanged,
14)
15
16try:
17 import pyqir
18
19 PYQIR_AVAILABLE = True
20except ImportError:
21 PYQIR_AVAILABLE = False
22
23SKIP_REASON = "PyQIR is not available"
24
25qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RIF)
26
27
28@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
29def test_scheduler_inserts_move_to_iz_for_single_qubit_gates():
30 qir = qsharp.compile(
31 """
32 {
33 use q = Qubit();
34 SX(q);
35 }
36 """
37 )
38
39 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
40 before = PerQubitOrdering()
41 before.run(module)
42 Schedule(NeutralAtomDevice()).run(module)
43 ValidateBeginEndParallel().run(module)
44 after = PerQubitOrdering()
45 after.run(module)
46 check_qubit_ordering_unchanged(after, before)
47
48 assert_expected_inline(
49 str(module),
50 """\
51
52@0 = internal constant [4 x i8] c"0_t\\00"
53
54define i64 @ENTRYPOINT__main() #0 {
55block_0:
56 call void @__quantum__rt__initialize(ptr null)
57 call void @__quantum__rt__begin_parallel()
58 call void @__quantum__qis__move__body(ptr null, i64 25, i64 0)
59 call void @__quantum__rt__end_parallel()
60 call void @__quantum__rt__begin_parallel()
61 call void @__quantum__qis__sx__body(ptr null)
62 call void @__quantum__rt__end_parallel()
63 call void @__quantum__rt__begin_parallel()
64 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
65 call void @__quantum__rt__end_parallel()
66 call void @__quantum__rt__tuple_record_output(i64 0, ptr @0)
67 ret i64 0
68}
69
70declare void @__quantum__rt__initialize(ptr)
71
72declare void @__quantum__qis__sx__body(ptr)
73
74declare void @__quantum__rt__tuple_record_output(i64, ptr)
75
76declare void @__quantum__rt__begin_parallel()
77
78declare void @__quantum__rt__end_parallel()
79
80declare void @__quantum__qis__move__body(ptr, i64, i64)
81
82attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" }
83
84!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
85
86!0 = !{i32 1, !"qir_major_version", i32 1}
87!1 = !{i32 7, !"qir_minor_version", i32 0}
88!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
89!3 = !{i32 1, !"dynamic_result_management", i1 false}
90!4 = !{i32 5, !"int_computations", !5}
91!5 = !{!"i64"}
92!6 = !{i32 5, !"float_computations", !7}
93!7 = !{!"double"}
94""",
95 )
96
97
98@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
99def test_scheduler_inserts_move_to_iz_for_two_qubit_gates():
100 qir = qsharp.compile(
101 """
102 {
103 use q = Qubit[2];
104 CZ(q[0], q[1]);
105 }
106 """
107 )
108
109 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
110 before = PerQubitOrdering()
111 before.run(module)
112 Schedule(NeutralAtomDevice()).run(module)
113 ValidateBeginEndParallel().run(module)
114 after = PerQubitOrdering()
115 after.run(module)
116 check_qubit_ordering_unchanged(after, before)
117
118 assert_expected_inline(
119 str(module),
120 """\
121
122@0 = internal constant [4 x i8] c"0_t\\00"
123
124define i64 @ENTRYPOINT__main() #0 {
125block_0:
126 call void @__quantum__rt__initialize(ptr null)
127 call void @__quantum__rt__begin_parallel()
128 call void @__quantum__qis__move__body(ptr null, i64 25, i64 0)
129 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1)
130 call void @__quantum__rt__end_parallel()
131 call void @__quantum__rt__begin_parallel()
132 call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr))
133 call void @__quantum__rt__end_parallel()
134 call void @__quantum__rt__begin_parallel()
135 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
136 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
137 call void @__quantum__rt__end_parallel()
138 call void @__quantum__rt__tuple_record_output(i64 0, ptr @0)
139 ret i64 0
140}
141
142declare void @__quantum__rt__initialize(ptr)
143
144declare void @__quantum__qis__cz__body(ptr, ptr)
145
146declare void @__quantum__rt__tuple_record_output(i64, ptr)
147
148declare void @__quantum__rt__begin_parallel()
149
150declare void @__quantum__rt__end_parallel()
151
152declare void @__quantum__qis__move__body(ptr, i64, i64)
153
154attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" }
155
156!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
157
158!0 = !{i32 1, !"qir_major_version", i32 1}
159!1 = !{i32 7, !"qir_minor_version", i32 0}
160!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
161!3 = !{i32 1, !"dynamic_result_management", i1 false}
162!4 = !{i32 5, !"int_computations", !5}
163!5 = !{!"i64"}
164!6 = !{i32 5, !"float_computations", !7}
165!7 = !{!"double"}
166""",
167 )
168
169
170@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
171def test_scheduler_inserts_move_to_iz_for_mixed_gates_with_1q_gates_first():
172 qir = qsharp.compile(
173 """
174 {
175 use q = Qubit[2];
176 SX(q[0]);
177 CZ(q[0], q[1]);
178 }
179 """
180 )
181
182 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
183 before = PerQubitOrdering()
184 before.run(module)
185 Schedule(NeutralAtomDevice()).run(module)
186 ValidateBeginEndParallel().run(module)
187 after = PerQubitOrdering()
188 after.run(module)
189 check_qubit_ordering_unchanged(after, before)
190
191 assert_expected_inline(
192 str(module),
193 """\
194
195@0 = internal constant [4 x i8] c"0_t\\00"
196
197define i64 @ENTRYPOINT__main() #0 {
198block_0:
199 call void @__quantum__rt__initialize(ptr null)
200 call void @__quantum__rt__begin_parallel()
201 call void @__quantum__qis__move__body(ptr null, i64 25, i64 0)
202 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1)
203 call void @__quantum__rt__end_parallel()
204 call void @__quantum__rt__begin_parallel()
205 call void @__quantum__qis__sx__body(ptr null)
206 call void @__quantum__rt__end_parallel()
207 call void @__quantum__rt__begin_parallel()
208 call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr))
209 call void @__quantum__rt__end_parallel()
210 call void @__quantum__rt__begin_parallel()
211 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
212 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
213 call void @__quantum__rt__end_parallel()
214 call void @__quantum__rt__tuple_record_output(i64 0, ptr @0)
215 ret i64 0
216}
217
218declare void @__quantum__rt__initialize(ptr)
219
220declare void @__quantum__qis__sx__body(ptr)
221
222declare void @__quantum__qis__cz__body(ptr, ptr)
223
224declare void @__quantum__rt__tuple_record_output(i64, ptr)
225
226declare void @__quantum__rt__begin_parallel()
227
228declare void @__quantum__rt__end_parallel()
229
230declare void @__quantum__qis__move__body(ptr, i64, i64)
231
232attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" }
233
234!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
235
236!0 = !{i32 1, !"qir_major_version", i32 1}
237!1 = !{i32 7, !"qir_minor_version", i32 0}
238!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
239!3 = !{i32 1, !"dynamic_result_management", i1 false}
240!4 = !{i32 5, !"int_computations", !5}
241!5 = !{!"i64"}
242!6 = !{i32 5, !"float_computations", !7}
243!7 = !{!"double"}
244""",
245 )
246
247
248@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
249def test_scheduler_parallelizes_operations_when_possible():
250 qir = qsharp.compile(
251 """
252 {
253 use q = Qubit[4];
254 SX(q[0]);
255 SX(q[2]);
256 CZ(q[0], q[1]);
257 CZ(q[2], q[3]);
258 }
259 """
260 )
261
262 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
263 before = PerQubitOrdering()
264 before.run(module)
265 Schedule(NeutralAtomDevice()).run(module)
266 after = PerQubitOrdering()
267 ValidateBeginEndParallel().run(module)
268 after.run(module)
269 check_qubit_ordering_unchanged(after, before)
270
271 assert_expected_inline(
272 str(module),
273 """\
274
275@0 = internal constant [4 x i8] c"0_t\\00"
276
277define i64 @ENTRYPOINT__main() #0 {
278block_0:
279 call void @__quantum__rt__initialize(ptr null)
280 call void @__quantum__rt__begin_parallel()
281 call void @__quantum__qis__move__body(ptr null, i64 25, i64 0)
282 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1)
283 call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 25, i64 2)
284 call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 25, i64 3)
285 call void @__quantum__rt__end_parallel()
286 call void @__quantum__rt__begin_parallel()
287 call void @__quantum__qis__sx__body(ptr null)
288 call void @__quantum__qis__sx__body(ptr inttoptr (i64 2 to ptr))
289 call void @__quantum__rt__end_parallel()
290 call void @__quantum__rt__begin_parallel()
291 call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr))
292 call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 3 to ptr))
293 call void @__quantum__rt__end_parallel()
294 call void @__quantum__rt__begin_parallel()
295 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
296 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
297 call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 24, i64 2)
298 call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 24, i64 3)
299 call void @__quantum__rt__end_parallel()
300 call void @__quantum__rt__tuple_record_output(i64 0, ptr @0)
301 ret i64 0
302}
303
304declare void @__quantum__rt__initialize(ptr)
305
306declare void @__quantum__qis__sx__body(ptr)
307
308declare void @__quantum__qis__cz__body(ptr, ptr)
309
310declare void @__quantum__rt__tuple_record_output(i64, ptr)
311
312declare void @__quantum__rt__begin_parallel()
313
314declare void @__quantum__rt__end_parallel()
315
316declare void @__quantum__qis__move__body(ptr, i64, i64)
317
318attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="4" "required_num_results"="0" }
319
320!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
321
322!0 = !{i32 1, !"qir_major_version", i32 1}
323!1 = !{i32 7, !"qir_minor_version", i32 0}
324!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
325!3 = !{i32 1, !"dynamic_result_management", i1 false}
326!4 = !{i32 5, !"int_computations", !5}
327!5 = !{!"i64"}
328!6 = !{i32 5, !"float_computations", !7}
329!7 = !{!"double"}
330""",
331 )
332
333
334@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
335def test_scheduler_inserts_moves_to_mz_for_measurement():
336 qir = qsharp.compile(
337 """
338 {
339 use q = Qubit[2];
340 MResetZ(q[0]);
341 MResetZ(q[1]);
342 }
343 """
344 )
345
346 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
347 before = PerQubitOrdering()
348 before.run(module)
349 Schedule(NeutralAtomDevice()).run(module)
350 after = PerQubitOrdering()
351 ValidateBeginEndParallel().run(module)
352 after.run(module)
353 check_qubit_ordering_unchanged(after, before)
354
355 assert_expected_inline(
356 str(module),
357 """\
358
359@0 = internal constant [4 x i8] c"0_t\\00"
360
361define i64 @ENTRYPOINT__main() #0 {
362block_0:
363 call void @__quantum__rt__initialize(ptr null)
364 call void @__quantum__rt__begin_parallel()
365 call void @__quantum__qis__move__body(ptr null, i64 27, i64 0)
366 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 27, i64 1)
367 call void @__quantum__rt__end_parallel()
368 call void @__quantum__rt__begin_parallel()
369 call void @__quantum__qis__mresetz__body(ptr null, ptr null)
370 call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 1 to ptr))
371 call void @__quantum__rt__end_parallel()
372 call void @__quantum__rt__begin_parallel()
373 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
374 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
375 call void @__quantum__rt__end_parallel()
376 call void @__quantum__rt__tuple_record_output(i64 0, ptr @0)
377 ret i64 0
378}
379
380declare void @__quantum__rt__initialize(ptr)
381
382declare void @__quantum__qis__mresetz__body(ptr, ptr) #1
383
384declare void @__quantum__rt__tuple_record_output(i64, ptr)
385
386declare void @__quantum__rt__begin_parallel()
387
388declare void @__quantum__rt__end_parallel()
389
390declare void @__quantum__qis__move__body(ptr, i64, i64)
391
392attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="2" }
393attributes #1 = { "irreversible" }
394
395!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
396
397!0 = !{i32 1, !"qir_major_version", i32 1}
398!1 = !{i32 7, !"qir_minor_version", i32 0}
399!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
400!3 = !{i32 1, !"dynamic_result_management", i1 false}
401!4 = !{i32 5, !"int_computations", !5}
402!5 = !{!"i64"}
403!6 = !{i32 5, !"float_computations", !7}
404!7 = !{!"double"}
405""",
406 )
407
408
409@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
410def test_scheduler_parallelizes_1q_gates_by_iz_row():
411 device = NeutralAtomDevice()
412 num_qubits = device.column_count * 2
413 qir = qsharp.compile(
414 f"""
415 {{
416 use qs = Qubit[{num_qubits}];
417 ApplyToEach(SX, qs);
418 }}
419 """
420 )
421
422 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
423 before = PerQubitOrdering()
424 before.run(module)
425 Schedule(device).run(module)
426 after = PerQubitOrdering()
427 after.run(module)
428 check_qubit_ordering_unchanged(after, before)
429
430 assert_expected_inline(
431 str(module),
432 """\
433
434@0 = internal constant [4 x i8] c"0_t\\00"
435
436define i64 @ENTRYPOINT__main() #0 {
437block_0:
438 call void @__quantum__rt__initialize(ptr null)
439 call void @__quantum__rt__begin_parallel()
440 call void @__quantum__qis__move__body(ptr null, i64 26, i64 0)
441 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 26, i64 1)
442 call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 26, i64 2)
443 call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 26, i64 3)
444 call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 26, i64 4)
445 call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 26, i64 5)
446 call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 26, i64 6)
447 call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 26, i64 7)
448 call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 26, i64 8)
449 call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 26, i64 9)
450 call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 26, i64 10)
451 call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 26, i64 11)
452 call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 26, i64 12)
453 call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 26, i64 13)
454 call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 26, i64 14)
455 call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 26, i64 15)
456 call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 26, i64 16)
457 call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 26, i64 17)
458 call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 26, i64 18)
459 call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 26, i64 19)
460 call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 26, i64 20)
461 call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 26, i64 21)
462 call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 26, i64 22)
463 call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 26, i64 23)
464 call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 26, i64 24)
465 call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 26, i64 25)
466 call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 26, i64 26)
467 call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 26, i64 27)
468 call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 26, i64 28)
469 call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 26, i64 29)
470 call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 26, i64 30)
471 call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 26, i64 31)
472 call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 26, i64 32)
473 call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 26, i64 33)
474 call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 26, i64 34)
475 call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 26, i64 35)
476 call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 26, i64 36)
477 call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 26, i64 37)
478 call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 26, i64 38)
479 call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 26, i64 39)
480 call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 25, i64 0)
481 call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 25, i64 1)
482 call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 25, i64 2)
483 call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 25, i64 3)
484 call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 25, i64 4)
485 call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 25, i64 5)
486 call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 25, i64 6)
487 call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 25, i64 7)
488 call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 25, i64 8)
489 call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 25, i64 9)
490 call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 25, i64 10)
491 call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 25, i64 11)
492 call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 25, i64 12)
493 call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 25, i64 13)
494 call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 25, i64 14)
495 call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 25, i64 15)
496 call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 25, i64 16)
497 call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 25, i64 17)
498 call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 25, i64 18)
499 call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 25, i64 19)
500 call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 25, i64 20)
501 call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 25, i64 21)
502 call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 25, i64 22)
503 call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 25, i64 23)
504 call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 25, i64 24)
505 call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 25, i64 25)
506 call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 25, i64 26)
507 call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 25, i64 27)
508 call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 25, i64 28)
509 call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 25, i64 29)
510 call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 25, i64 30)
511 call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 25, i64 31)
512 call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 25, i64 32)
513 call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 25, i64 33)
514 call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 25, i64 34)
515 call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 25, i64 35)
516 call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 25, i64 36)
517 call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 25, i64 37)
518 call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 25, i64 38)
519 call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 25, i64 39)
520 call void @__quantum__rt__end_parallel()
521 call void @__quantum__rt__begin_parallel()
522 call void @__quantum__qis__sx__body(ptr inttoptr (i64 40 to ptr))
523 call void @__quantum__qis__sx__body(ptr inttoptr (i64 41 to ptr))
524 call void @__quantum__qis__sx__body(ptr inttoptr (i64 42 to ptr))
525 call void @__quantum__qis__sx__body(ptr inttoptr (i64 43 to ptr))
526 call void @__quantum__qis__sx__body(ptr inttoptr (i64 44 to ptr))
527 call void @__quantum__qis__sx__body(ptr inttoptr (i64 45 to ptr))
528 call void @__quantum__qis__sx__body(ptr inttoptr (i64 46 to ptr))
529 call void @__quantum__qis__sx__body(ptr inttoptr (i64 47 to ptr))
530 call void @__quantum__qis__sx__body(ptr inttoptr (i64 48 to ptr))
531 call void @__quantum__qis__sx__body(ptr inttoptr (i64 49 to ptr))
532 call void @__quantum__qis__sx__body(ptr inttoptr (i64 50 to ptr))
533 call void @__quantum__qis__sx__body(ptr inttoptr (i64 51 to ptr))
534 call void @__quantum__qis__sx__body(ptr inttoptr (i64 52 to ptr))
535 call void @__quantum__qis__sx__body(ptr inttoptr (i64 53 to ptr))
536 call void @__quantum__qis__sx__body(ptr inttoptr (i64 54 to ptr))
537 call void @__quantum__qis__sx__body(ptr inttoptr (i64 55 to ptr))
538 call void @__quantum__qis__sx__body(ptr inttoptr (i64 56 to ptr))
539 call void @__quantum__qis__sx__body(ptr inttoptr (i64 57 to ptr))
540 call void @__quantum__qis__sx__body(ptr inttoptr (i64 58 to ptr))
541 call void @__quantum__qis__sx__body(ptr inttoptr (i64 59 to ptr))
542 call void @__quantum__qis__sx__body(ptr inttoptr (i64 60 to ptr))
543 call void @__quantum__qis__sx__body(ptr inttoptr (i64 61 to ptr))
544 call void @__quantum__qis__sx__body(ptr inttoptr (i64 62 to ptr))
545 call void @__quantum__qis__sx__body(ptr inttoptr (i64 63 to ptr))
546 call void @__quantum__qis__sx__body(ptr inttoptr (i64 64 to ptr))
547 call void @__quantum__qis__sx__body(ptr inttoptr (i64 65 to ptr))
548 call void @__quantum__qis__sx__body(ptr inttoptr (i64 66 to ptr))
549 call void @__quantum__qis__sx__body(ptr inttoptr (i64 67 to ptr))
550 call void @__quantum__qis__sx__body(ptr inttoptr (i64 68 to ptr))
551 call void @__quantum__qis__sx__body(ptr inttoptr (i64 69 to ptr))
552 call void @__quantum__qis__sx__body(ptr inttoptr (i64 70 to ptr))
553 call void @__quantum__qis__sx__body(ptr inttoptr (i64 71 to ptr))
554 call void @__quantum__qis__sx__body(ptr inttoptr (i64 72 to ptr))
555 call void @__quantum__qis__sx__body(ptr inttoptr (i64 73 to ptr))
556 call void @__quantum__qis__sx__body(ptr inttoptr (i64 74 to ptr))
557 call void @__quantum__qis__sx__body(ptr inttoptr (i64 75 to ptr))
558 call void @__quantum__qis__sx__body(ptr inttoptr (i64 76 to ptr))
559 call void @__quantum__qis__sx__body(ptr inttoptr (i64 77 to ptr))
560 call void @__quantum__qis__sx__body(ptr inttoptr (i64 78 to ptr))
561 call void @__quantum__qis__sx__body(ptr inttoptr (i64 79 to ptr))
562 call void @__quantum__rt__end_parallel()
563 call void @__quantum__rt__begin_parallel()
564 call void @__quantum__qis__sx__body(ptr null)
565 call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr))
566 call void @__quantum__qis__sx__body(ptr inttoptr (i64 2 to ptr))
567 call void @__quantum__qis__sx__body(ptr inttoptr (i64 3 to ptr))
568 call void @__quantum__qis__sx__body(ptr inttoptr (i64 4 to ptr))
569 call void @__quantum__qis__sx__body(ptr inttoptr (i64 5 to ptr))
570 call void @__quantum__qis__sx__body(ptr inttoptr (i64 6 to ptr))
571 call void @__quantum__qis__sx__body(ptr inttoptr (i64 7 to ptr))
572 call void @__quantum__qis__sx__body(ptr inttoptr (i64 8 to ptr))
573 call void @__quantum__qis__sx__body(ptr inttoptr (i64 9 to ptr))
574 call void @__quantum__qis__sx__body(ptr inttoptr (i64 10 to ptr))
575 call void @__quantum__qis__sx__body(ptr inttoptr (i64 11 to ptr))
576 call void @__quantum__qis__sx__body(ptr inttoptr (i64 12 to ptr))
577 call void @__quantum__qis__sx__body(ptr inttoptr (i64 13 to ptr))
578 call void @__quantum__qis__sx__body(ptr inttoptr (i64 14 to ptr))
579 call void @__quantum__qis__sx__body(ptr inttoptr (i64 15 to ptr))
580 call void @__quantum__qis__sx__body(ptr inttoptr (i64 16 to ptr))
581 call void @__quantum__qis__sx__body(ptr inttoptr (i64 17 to ptr))
582 call void @__quantum__qis__sx__body(ptr inttoptr (i64 18 to ptr))
583 call void @__quantum__qis__sx__body(ptr inttoptr (i64 19 to ptr))
584 call void @__quantum__qis__sx__body(ptr inttoptr (i64 20 to ptr))
585 call void @__quantum__qis__sx__body(ptr inttoptr (i64 21 to ptr))
586 call void @__quantum__qis__sx__body(ptr inttoptr (i64 22 to ptr))
587 call void @__quantum__qis__sx__body(ptr inttoptr (i64 23 to ptr))
588 call void @__quantum__qis__sx__body(ptr inttoptr (i64 24 to ptr))
589 call void @__quantum__qis__sx__body(ptr inttoptr (i64 25 to ptr))
590 call void @__quantum__qis__sx__body(ptr inttoptr (i64 26 to ptr))
591 call void @__quantum__qis__sx__body(ptr inttoptr (i64 27 to ptr))
592 call void @__quantum__qis__sx__body(ptr inttoptr (i64 28 to ptr))
593 call void @__quantum__qis__sx__body(ptr inttoptr (i64 29 to ptr))
594 call void @__quantum__qis__sx__body(ptr inttoptr (i64 30 to ptr))
595 call void @__quantum__qis__sx__body(ptr inttoptr (i64 31 to ptr))
596 call void @__quantum__qis__sx__body(ptr inttoptr (i64 32 to ptr))
597 call void @__quantum__qis__sx__body(ptr inttoptr (i64 33 to ptr))
598 call void @__quantum__qis__sx__body(ptr inttoptr (i64 34 to ptr))
599 call void @__quantum__qis__sx__body(ptr inttoptr (i64 35 to ptr))
600 call void @__quantum__qis__sx__body(ptr inttoptr (i64 36 to ptr))
601 call void @__quantum__qis__sx__body(ptr inttoptr (i64 37 to ptr))
602 call void @__quantum__qis__sx__body(ptr inttoptr (i64 38 to ptr))
603 call void @__quantum__qis__sx__body(ptr inttoptr (i64 39 to ptr))
604 call void @__quantum__rt__end_parallel()
605 call void @__quantum__rt__begin_parallel()
606 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
607 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
608 call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 24, i64 2)
609 call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 24, i64 3)
610 call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 24, i64 4)
611 call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 24, i64 5)
612 call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 24, i64 6)
613 call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 24, i64 7)
614 call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 24, i64 8)
615 call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 24, i64 9)
616 call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 24, i64 10)
617 call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 24, i64 11)
618 call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 24, i64 12)
619 call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 24, i64 13)
620 call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 24, i64 14)
621 call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 24, i64 15)
622 call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 24, i64 16)
623 call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 24, i64 17)
624 call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 24, i64 18)
625 call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 24, i64 19)
626 call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 24, i64 20)
627 call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 24, i64 21)
628 call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 24, i64 22)
629 call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 24, i64 23)
630 call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 24, i64 24)
631 call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 24, i64 25)
632 call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 24, i64 26)
633 call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 24, i64 27)
634 call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 24, i64 28)
635 call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 24, i64 29)
636 call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 24, i64 30)
637 call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 24, i64 31)
638 call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 24, i64 32)
639 call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 24, i64 33)
640 call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 24, i64 34)
641 call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 24, i64 35)
642 call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 24, i64 36)
643 call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 24, i64 37)
644 call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 24, i64 38)
645 call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 24, i64 39)
646 call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 23, i64 0)
647 call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 23, i64 1)
648 call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 23, i64 2)
649 call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 23, i64 3)
650 call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 23, i64 4)
651 call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 23, i64 5)
652 call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 23, i64 6)
653 call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 23, i64 7)
654 call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 23, i64 8)
655 call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 23, i64 9)
656 call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 23, i64 10)
657 call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 23, i64 11)
658 call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 23, i64 12)
659 call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 23, i64 13)
660 call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 23, i64 14)
661 call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 23, i64 15)
662 call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 23, i64 16)
663 call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 23, i64 17)
664 call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 23, i64 18)
665 call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 23, i64 19)
666 call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 23, i64 20)
667 call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 23, i64 21)
668 call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 23, i64 22)
669 call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 23, i64 23)
670 call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 23, i64 24)
671 call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 23, i64 25)
672 call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 23, i64 26)
673 call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 23, i64 27)
674 call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 23, i64 28)
675 call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 23, i64 29)
676 call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 23, i64 30)
677 call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 23, i64 31)
678 call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 23, i64 32)
679 call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 23, i64 33)
680 call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 23, i64 34)
681 call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 23, i64 35)
682 call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 23, i64 36)
683 call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 23, i64 37)
684 call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 23, i64 38)
685 call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 23, i64 39)
686 call void @__quantum__rt__end_parallel()
687 call void @__quantum__rt__tuple_record_output(i64 0, ptr @0)
688 ret i64 0
689}
690
691declare void @__quantum__rt__initialize(ptr)
692
693declare void @__quantum__qis__sx__body(ptr)
694
695declare void @__quantum__rt__tuple_record_output(i64, ptr)
696
697declare void @__quantum__rt__begin_parallel()
698
699declare void @__quantum__rt__end_parallel()
700
701declare void @__quantum__qis__move__body(ptr, i64, i64)
702
703attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="80" "required_num_results"="0" }
704
705!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
706
707!0 = !{i32 1, !"qir_major_version", i32 1}
708!1 = !{i32 7, !"qir_minor_version", i32 0}
709!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
710!3 = !{i32 1, !"dynamic_result_management", i1 false}
711!4 = !{i32 5, !"int_computations", !5}
712!5 = !{!"i64"}
713!6 = !{i32 5, !"float_computations", !7}
714!7 = !{!"double"}
715""",
716 )
717
718
719@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
720def test_scheduler_parallelizes_all_2q_in_iz():
721 device = NeutralAtomDevice()
722 num_qubits = device.column_count * 2
723 qir = qsharp.compile(
724 f"""
725 {{
726 use qs = Qubit[{num_qubits}];
727 for i in 0..2..(Length(qs)-2) {{
728 CZ(qs[i], qs[i+1]);
729 }}
730 }}
731 """
732 )
733
734 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
735 before = PerQubitOrdering()
736 before.run(module)
737 Schedule(device).run(module)
738 after = PerQubitOrdering()
739 after.run(module)
740 check_qubit_ordering_unchanged(after, before)
741
742 assert_expected_inline(
743 str(module),
744 """\
745
746@0 = internal constant [4 x i8] c"0_t\\00"
747
748define i64 @ENTRYPOINT__main() #0 {
749block_0:
750 call void @__quantum__rt__initialize(ptr null)
751 call void @__quantum__rt__begin_parallel()
752 call void @__quantum__qis__move__body(ptr null, i64 26, i64 0)
753 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 26, i64 1)
754 call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 26, i64 2)
755 call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 26, i64 3)
756 call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 26, i64 4)
757 call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 26, i64 5)
758 call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 26, i64 6)
759 call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 26, i64 7)
760 call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 26, i64 8)
761 call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 26, i64 9)
762 call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 26, i64 10)
763 call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 26, i64 11)
764 call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 26, i64 12)
765 call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 26, i64 13)
766 call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 26, i64 14)
767 call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 26, i64 15)
768 call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 26, i64 16)
769 call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 26, i64 17)
770 call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 26, i64 18)
771 call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 26, i64 19)
772 call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 26, i64 20)
773 call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 26, i64 21)
774 call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 26, i64 22)
775 call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 26, i64 23)
776 call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 26, i64 24)
777 call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 26, i64 25)
778 call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 26, i64 26)
779 call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 26, i64 27)
780 call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 26, i64 28)
781 call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 26, i64 29)
782 call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 26, i64 30)
783 call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 26, i64 31)
784 call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 26, i64 32)
785 call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 26, i64 33)
786 call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 26, i64 34)
787 call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 26, i64 35)
788 call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 26, i64 36)
789 call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 26, i64 37)
790 call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 26, i64 38)
791 call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 26, i64 39)
792 call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 25, i64 0)
793 call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 25, i64 1)
794 call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 25, i64 2)
795 call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 25, i64 3)
796 call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 25, i64 4)
797 call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 25, i64 5)
798 call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 25, i64 6)
799 call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 25, i64 7)
800 call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 25, i64 8)
801 call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 25, i64 9)
802 call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 25, i64 10)
803 call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 25, i64 11)
804 call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 25, i64 12)
805 call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 25, i64 13)
806 call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 25, i64 14)
807 call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 25, i64 15)
808 call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 25, i64 16)
809 call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 25, i64 17)
810 call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 25, i64 18)
811 call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 25, i64 19)
812 call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 25, i64 20)
813 call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 25, i64 21)
814 call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 25, i64 22)
815 call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 25, i64 23)
816 call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 25, i64 24)
817 call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 25, i64 25)
818 call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 25, i64 26)
819 call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 25, i64 27)
820 call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 25, i64 28)
821 call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 25, i64 29)
822 call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 25, i64 30)
823 call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 25, i64 31)
824 call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 25, i64 32)
825 call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 25, i64 33)
826 call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 25, i64 34)
827 call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 25, i64 35)
828 call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 25, i64 36)
829 call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 25, i64 37)
830 call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 25, i64 38)
831 call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 25, i64 39)
832 call void @__quantum__rt__end_parallel()
833 call void @__quantum__rt__begin_parallel()
834 call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr))
835 call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 3 to ptr))
836 call void @__quantum__qis__cz__body(ptr inttoptr (i64 4 to ptr), ptr inttoptr (i64 5 to ptr))
837 call void @__quantum__qis__cz__body(ptr inttoptr (i64 6 to ptr), ptr inttoptr (i64 7 to ptr))
838 call void @__quantum__qis__cz__body(ptr inttoptr (i64 8 to ptr), ptr inttoptr (i64 9 to ptr))
839 call void @__quantum__qis__cz__body(ptr inttoptr (i64 10 to ptr), ptr inttoptr (i64 11 to ptr))
840 call void @__quantum__qis__cz__body(ptr inttoptr (i64 12 to ptr), ptr inttoptr (i64 13 to ptr))
841 call void @__quantum__qis__cz__body(ptr inttoptr (i64 14 to ptr), ptr inttoptr (i64 15 to ptr))
842 call void @__quantum__qis__cz__body(ptr inttoptr (i64 16 to ptr), ptr inttoptr (i64 17 to ptr))
843 call void @__quantum__qis__cz__body(ptr inttoptr (i64 18 to ptr), ptr inttoptr (i64 19 to ptr))
844 call void @__quantum__qis__cz__body(ptr inttoptr (i64 20 to ptr), ptr inttoptr (i64 21 to ptr))
845 call void @__quantum__qis__cz__body(ptr inttoptr (i64 22 to ptr), ptr inttoptr (i64 23 to ptr))
846 call void @__quantum__qis__cz__body(ptr inttoptr (i64 24 to ptr), ptr inttoptr (i64 25 to ptr))
847 call void @__quantum__qis__cz__body(ptr inttoptr (i64 26 to ptr), ptr inttoptr (i64 27 to ptr))
848 call void @__quantum__qis__cz__body(ptr inttoptr (i64 28 to ptr), ptr inttoptr (i64 29 to ptr))
849 call void @__quantum__qis__cz__body(ptr inttoptr (i64 30 to ptr), ptr inttoptr (i64 31 to ptr))
850 call void @__quantum__qis__cz__body(ptr inttoptr (i64 32 to ptr), ptr inttoptr (i64 33 to ptr))
851 call void @__quantum__qis__cz__body(ptr inttoptr (i64 34 to ptr), ptr inttoptr (i64 35 to ptr))
852 call void @__quantum__qis__cz__body(ptr inttoptr (i64 36 to ptr), ptr inttoptr (i64 37 to ptr))
853 call void @__quantum__qis__cz__body(ptr inttoptr (i64 38 to ptr), ptr inttoptr (i64 39 to ptr))
854 call void @__quantum__qis__cz__body(ptr inttoptr (i64 40 to ptr), ptr inttoptr (i64 41 to ptr))
855 call void @__quantum__qis__cz__body(ptr inttoptr (i64 42 to ptr), ptr inttoptr (i64 43 to ptr))
856 call void @__quantum__qis__cz__body(ptr inttoptr (i64 44 to ptr), ptr inttoptr (i64 45 to ptr))
857 call void @__quantum__qis__cz__body(ptr inttoptr (i64 46 to ptr), ptr inttoptr (i64 47 to ptr))
858 call void @__quantum__qis__cz__body(ptr inttoptr (i64 48 to ptr), ptr inttoptr (i64 49 to ptr))
859 call void @__quantum__qis__cz__body(ptr inttoptr (i64 50 to ptr), ptr inttoptr (i64 51 to ptr))
860 call void @__quantum__qis__cz__body(ptr inttoptr (i64 52 to ptr), ptr inttoptr (i64 53 to ptr))
861 call void @__quantum__qis__cz__body(ptr inttoptr (i64 54 to ptr), ptr inttoptr (i64 55 to ptr))
862 call void @__quantum__qis__cz__body(ptr inttoptr (i64 56 to ptr), ptr inttoptr (i64 57 to ptr))
863 call void @__quantum__qis__cz__body(ptr inttoptr (i64 58 to ptr), ptr inttoptr (i64 59 to ptr))
864 call void @__quantum__qis__cz__body(ptr inttoptr (i64 60 to ptr), ptr inttoptr (i64 61 to ptr))
865 call void @__quantum__qis__cz__body(ptr inttoptr (i64 62 to ptr), ptr inttoptr (i64 63 to ptr))
866 call void @__quantum__qis__cz__body(ptr inttoptr (i64 64 to ptr), ptr inttoptr (i64 65 to ptr))
867 call void @__quantum__qis__cz__body(ptr inttoptr (i64 66 to ptr), ptr inttoptr (i64 67 to ptr))
868 call void @__quantum__qis__cz__body(ptr inttoptr (i64 68 to ptr), ptr inttoptr (i64 69 to ptr))
869 call void @__quantum__qis__cz__body(ptr inttoptr (i64 70 to ptr), ptr inttoptr (i64 71 to ptr))
870 call void @__quantum__qis__cz__body(ptr inttoptr (i64 72 to ptr), ptr inttoptr (i64 73 to ptr))
871 call void @__quantum__qis__cz__body(ptr inttoptr (i64 74 to ptr), ptr inttoptr (i64 75 to ptr))
872 call void @__quantum__qis__cz__body(ptr inttoptr (i64 76 to ptr), ptr inttoptr (i64 77 to ptr))
873 call void @__quantum__qis__cz__body(ptr inttoptr (i64 78 to ptr), ptr inttoptr (i64 79 to ptr))
874 call void @__quantum__rt__end_parallel()
875 call void @__quantum__rt__begin_parallel()
876 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
877 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
878 call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 24, i64 2)
879 call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 24, i64 3)
880 call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 24, i64 4)
881 call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 24, i64 5)
882 call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 24, i64 6)
883 call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 24, i64 7)
884 call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 24, i64 8)
885 call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 24, i64 9)
886 call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 24, i64 10)
887 call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 24, i64 11)
888 call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 24, i64 12)
889 call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 24, i64 13)
890 call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 24, i64 14)
891 call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 24, i64 15)
892 call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 24, i64 16)
893 call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 24, i64 17)
894 call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 24, i64 18)
895 call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 24, i64 19)
896 call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 24, i64 20)
897 call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 24, i64 21)
898 call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 24, i64 22)
899 call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 24, i64 23)
900 call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 24, i64 24)
901 call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 24, i64 25)
902 call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 24, i64 26)
903 call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 24, i64 27)
904 call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 24, i64 28)
905 call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 24, i64 29)
906 call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 24, i64 30)
907 call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 24, i64 31)
908 call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 24, i64 32)
909 call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 24, i64 33)
910 call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 24, i64 34)
911 call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 24, i64 35)
912 call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 24, i64 36)
913 call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 24, i64 37)
914 call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 24, i64 38)
915 call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 24, i64 39)
916 call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 23, i64 0)
917 call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 23, i64 1)
918 call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 23, i64 2)
919 call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 23, i64 3)
920 call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 23, i64 4)
921 call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 23, i64 5)
922 call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 23, i64 6)
923 call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 23, i64 7)
924 call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 23, i64 8)
925 call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 23, i64 9)
926 call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 23, i64 10)
927 call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 23, i64 11)
928 call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 23, i64 12)
929 call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 23, i64 13)
930 call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 23, i64 14)
931 call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 23, i64 15)
932 call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 23, i64 16)
933 call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 23, i64 17)
934 call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 23, i64 18)
935 call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 23, i64 19)
936 call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 23, i64 20)
937 call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 23, i64 21)
938 call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 23, i64 22)
939 call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 23, i64 23)
940 call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 23, i64 24)
941 call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 23, i64 25)
942 call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 23, i64 26)
943 call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 23, i64 27)
944 call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 23, i64 28)
945 call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 23, i64 29)
946 call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 23, i64 30)
947 call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 23, i64 31)
948 call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 23, i64 32)
949 call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 23, i64 33)
950 call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 23, i64 34)
951 call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 23, i64 35)
952 call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 23, i64 36)
953 call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 23, i64 37)
954 call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 23, i64 38)
955 call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 23, i64 39)
956 call void @__quantum__rt__end_parallel()
957 call void @__quantum__rt__tuple_record_output(i64 0, ptr @0)
958 ret i64 0
959}
960
961declare void @__quantum__rt__initialize(ptr)
962
963declare void @__quantum__qis__cz__body(ptr, ptr)
964
965declare void @__quantum__rt__tuple_record_output(i64, ptr)
966
967declare void @__quantum__rt__begin_parallel()
968
969declare void @__quantum__rt__end_parallel()
970
971declare void @__quantum__qis__move__body(ptr, i64, i64)
972
973attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="80" "required_num_results"="0" }
974
975!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
976
977!0 = !{i32 1, !"qir_major_version", i32 1}
978!1 = !{i32 7, !"qir_minor_version", i32 0}
979!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
980!3 = !{i32 1, !"dynamic_result_management", i1 false}
981!4 = !{i32 5, !"int_computations", !5}
982!5 = !{!"i64"}
983!6 = !{i32 5, !"float_computations", !7}
984!7 = !{!"double"}
985""",
986 )
987
988
989@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
990def test_scheduler_splits_large_parallel_2q_in_iz_by_iz_size():
991 device = NeutralAtomDevice()
992 num_qubits = int(
993 device.column_count * device.get_interaction_zones()[0].row_count * 1.5
994 )
995 qir = qsharp.compile(
996 f"""
997 {{
998 use qs = Qubit[{num_qubits}];
999 for i in 0..2..(Length(qs)-2) {{
1000 CZ(qs[i], qs[i+1]);
1001 }}
1002 }}
1003 """
1004 )
1005
1006 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
1007 before = PerQubitOrdering()
1008 before.run(module)
1009 Schedule(device).run(module)
1010 after = PerQubitOrdering()
1011 after.run(module)
1012 check_qubit_ordering_unchanged(after, before)
1013
1014 assert_expected_inline(
1015 str(module),
1016 """\
1017
1018@0 = internal constant [4 x i8] c"0_t\\00"
1019
1020define i64 @ENTRYPOINT__main() #0 {
1021block_0:
1022 call void @__quantum__rt__initialize(ptr null)
1023 call void @__quantum__rt__begin_parallel()
1024 call void @__quantum__qis__move__body(ptr null, i64 26, i64 0)
1025 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 26, i64 1)
1026 call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 26, i64 2)
1027 call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 26, i64 3)
1028 call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 26, i64 4)
1029 call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 26, i64 5)
1030 call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 26, i64 6)
1031 call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 26, i64 7)
1032 call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 26, i64 8)
1033 call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 26, i64 9)
1034 call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 26, i64 10)
1035 call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 26, i64 11)
1036 call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 26, i64 12)
1037 call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 26, i64 13)
1038 call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 26, i64 14)
1039 call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 26, i64 15)
1040 call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 26, i64 16)
1041 call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 26, i64 17)
1042 call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 26, i64 18)
1043 call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 26, i64 19)
1044 call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 26, i64 20)
1045 call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 26, i64 21)
1046 call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 26, i64 22)
1047 call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 26, i64 23)
1048 call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 26, i64 24)
1049 call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 26, i64 25)
1050 call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 26, i64 26)
1051 call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 26, i64 27)
1052 call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 26, i64 28)
1053 call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 26, i64 29)
1054 call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 26, i64 30)
1055 call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 26, i64 31)
1056 call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 26, i64 32)
1057 call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 26, i64 33)
1058 call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 26, i64 34)
1059 call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 26, i64 35)
1060 call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 26, i64 36)
1061 call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 26, i64 37)
1062 call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 26, i64 38)
1063 call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 26, i64 39)
1064 call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 25, i64 0)
1065 call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 25, i64 1)
1066 call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 25, i64 2)
1067 call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 25, i64 3)
1068 call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 25, i64 4)
1069 call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 25, i64 5)
1070 call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 25, i64 6)
1071 call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 25, i64 7)
1072 call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 25, i64 8)
1073 call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 25, i64 9)
1074 call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 25, i64 10)
1075 call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 25, i64 11)
1076 call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 25, i64 12)
1077 call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 25, i64 13)
1078 call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 25, i64 14)
1079 call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 25, i64 15)
1080 call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 25, i64 16)
1081 call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 25, i64 17)
1082 call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 25, i64 18)
1083 call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 25, i64 19)
1084 call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 25, i64 20)
1085 call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 25, i64 21)
1086 call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 25, i64 22)
1087 call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 25, i64 23)
1088 call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 25, i64 24)
1089 call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 25, i64 25)
1090 call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 25, i64 26)
1091 call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 25, i64 27)
1092 call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 25, i64 28)
1093 call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 25, i64 29)
1094 call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 25, i64 30)
1095 call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 25, i64 31)
1096 call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 25, i64 32)
1097 call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 25, i64 33)
1098 call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 25, i64 34)
1099 call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 25, i64 35)
1100 call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 25, i64 36)
1101 call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 25, i64 37)
1102 call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 25, i64 38)
1103 call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 25, i64 39)
1104 call void @__quantum__rt__end_parallel()
1105 call void @__quantum__rt__begin_parallel()
1106 call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr))
1107 call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 3 to ptr))
1108 call void @__quantum__qis__cz__body(ptr inttoptr (i64 4 to ptr), ptr inttoptr (i64 5 to ptr))
1109 call void @__quantum__qis__cz__body(ptr inttoptr (i64 6 to ptr), ptr inttoptr (i64 7 to ptr))
1110 call void @__quantum__qis__cz__body(ptr inttoptr (i64 8 to ptr), ptr inttoptr (i64 9 to ptr))
1111 call void @__quantum__qis__cz__body(ptr inttoptr (i64 10 to ptr), ptr inttoptr (i64 11 to ptr))
1112 call void @__quantum__qis__cz__body(ptr inttoptr (i64 12 to ptr), ptr inttoptr (i64 13 to ptr))
1113 call void @__quantum__qis__cz__body(ptr inttoptr (i64 14 to ptr), ptr inttoptr (i64 15 to ptr))
1114 call void @__quantum__qis__cz__body(ptr inttoptr (i64 16 to ptr), ptr inttoptr (i64 17 to ptr))
1115 call void @__quantum__qis__cz__body(ptr inttoptr (i64 18 to ptr), ptr inttoptr (i64 19 to ptr))
1116 call void @__quantum__qis__cz__body(ptr inttoptr (i64 20 to ptr), ptr inttoptr (i64 21 to ptr))
1117 call void @__quantum__qis__cz__body(ptr inttoptr (i64 22 to ptr), ptr inttoptr (i64 23 to ptr))
1118 call void @__quantum__qis__cz__body(ptr inttoptr (i64 24 to ptr), ptr inttoptr (i64 25 to ptr))
1119 call void @__quantum__qis__cz__body(ptr inttoptr (i64 26 to ptr), ptr inttoptr (i64 27 to ptr))
1120 call void @__quantum__qis__cz__body(ptr inttoptr (i64 28 to ptr), ptr inttoptr (i64 29 to ptr))
1121 call void @__quantum__qis__cz__body(ptr inttoptr (i64 30 to ptr), ptr inttoptr (i64 31 to ptr))
1122 call void @__quantum__qis__cz__body(ptr inttoptr (i64 32 to ptr), ptr inttoptr (i64 33 to ptr))
1123 call void @__quantum__qis__cz__body(ptr inttoptr (i64 34 to ptr), ptr inttoptr (i64 35 to ptr))
1124 call void @__quantum__qis__cz__body(ptr inttoptr (i64 36 to ptr), ptr inttoptr (i64 37 to ptr))
1125 call void @__quantum__qis__cz__body(ptr inttoptr (i64 38 to ptr), ptr inttoptr (i64 39 to ptr))
1126 call void @__quantum__qis__cz__body(ptr inttoptr (i64 40 to ptr), ptr inttoptr (i64 41 to ptr))
1127 call void @__quantum__qis__cz__body(ptr inttoptr (i64 42 to ptr), ptr inttoptr (i64 43 to ptr))
1128 call void @__quantum__qis__cz__body(ptr inttoptr (i64 44 to ptr), ptr inttoptr (i64 45 to ptr))
1129 call void @__quantum__qis__cz__body(ptr inttoptr (i64 46 to ptr), ptr inttoptr (i64 47 to ptr))
1130 call void @__quantum__qis__cz__body(ptr inttoptr (i64 48 to ptr), ptr inttoptr (i64 49 to ptr))
1131 call void @__quantum__qis__cz__body(ptr inttoptr (i64 50 to ptr), ptr inttoptr (i64 51 to ptr))
1132 call void @__quantum__qis__cz__body(ptr inttoptr (i64 52 to ptr), ptr inttoptr (i64 53 to ptr))
1133 call void @__quantum__qis__cz__body(ptr inttoptr (i64 54 to ptr), ptr inttoptr (i64 55 to ptr))
1134 call void @__quantum__qis__cz__body(ptr inttoptr (i64 56 to ptr), ptr inttoptr (i64 57 to ptr))
1135 call void @__quantum__qis__cz__body(ptr inttoptr (i64 58 to ptr), ptr inttoptr (i64 59 to ptr))
1136 call void @__quantum__qis__cz__body(ptr inttoptr (i64 60 to ptr), ptr inttoptr (i64 61 to ptr))
1137 call void @__quantum__qis__cz__body(ptr inttoptr (i64 62 to ptr), ptr inttoptr (i64 63 to ptr))
1138 call void @__quantum__qis__cz__body(ptr inttoptr (i64 64 to ptr), ptr inttoptr (i64 65 to ptr))
1139 call void @__quantum__qis__cz__body(ptr inttoptr (i64 66 to ptr), ptr inttoptr (i64 67 to ptr))
1140 call void @__quantum__qis__cz__body(ptr inttoptr (i64 68 to ptr), ptr inttoptr (i64 69 to ptr))
1141 call void @__quantum__qis__cz__body(ptr inttoptr (i64 70 to ptr), ptr inttoptr (i64 71 to ptr))
1142 call void @__quantum__qis__cz__body(ptr inttoptr (i64 72 to ptr), ptr inttoptr (i64 73 to ptr))
1143 call void @__quantum__qis__cz__body(ptr inttoptr (i64 74 to ptr), ptr inttoptr (i64 75 to ptr))
1144 call void @__quantum__qis__cz__body(ptr inttoptr (i64 76 to ptr), ptr inttoptr (i64 77 to ptr))
1145 call void @__quantum__qis__cz__body(ptr inttoptr (i64 78 to ptr), ptr inttoptr (i64 79 to ptr))
1146 call void @__quantum__rt__end_parallel()
1147 call void @__quantum__rt__begin_parallel()
1148 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
1149 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
1150 call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 24, i64 2)
1151 call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 24, i64 3)
1152 call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 24, i64 4)
1153 call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 24, i64 5)
1154 call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 24, i64 6)
1155 call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 24, i64 7)
1156 call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 24, i64 8)
1157 call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 24, i64 9)
1158 call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 24, i64 10)
1159 call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 24, i64 11)
1160 call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 24, i64 12)
1161 call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 24, i64 13)
1162 call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 24, i64 14)
1163 call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 24, i64 15)
1164 call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 24, i64 16)
1165 call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 24, i64 17)
1166 call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 24, i64 18)
1167 call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 24, i64 19)
1168 call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 24, i64 20)
1169 call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 24, i64 21)
1170 call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 24, i64 22)
1171 call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 24, i64 23)
1172 call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 24, i64 24)
1173 call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 24, i64 25)
1174 call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 24, i64 26)
1175 call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 24, i64 27)
1176 call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 24, i64 28)
1177 call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 24, i64 29)
1178 call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 24, i64 30)
1179 call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 24, i64 31)
1180 call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 24, i64 32)
1181 call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 24, i64 33)
1182 call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 24, i64 34)
1183 call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 24, i64 35)
1184 call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 24, i64 36)
1185 call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 24, i64 37)
1186 call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 24, i64 38)
1187 call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 24, i64 39)
1188 call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 23, i64 0)
1189 call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 23, i64 1)
1190 call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 23, i64 2)
1191 call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 23, i64 3)
1192 call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 23, i64 4)
1193 call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 23, i64 5)
1194 call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 23, i64 6)
1195 call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 23, i64 7)
1196 call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 23, i64 8)
1197 call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 23, i64 9)
1198 call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 23, i64 10)
1199 call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 23, i64 11)
1200 call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 23, i64 12)
1201 call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 23, i64 13)
1202 call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 23, i64 14)
1203 call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 23, i64 15)
1204 call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 23, i64 16)
1205 call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 23, i64 17)
1206 call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 23, i64 18)
1207 call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 23, i64 19)
1208 call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 23, i64 20)
1209 call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 23, i64 21)
1210 call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 23, i64 22)
1211 call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 23, i64 23)
1212 call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 23, i64 24)
1213 call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 23, i64 25)
1214 call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 23, i64 26)
1215 call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 23, i64 27)
1216 call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 23, i64 28)
1217 call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 23, i64 29)
1218 call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 23, i64 30)
1219 call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 23, i64 31)
1220 call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 23, i64 32)
1221 call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 23, i64 33)
1222 call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 23, i64 34)
1223 call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 23, i64 35)
1224 call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 23, i64 36)
1225 call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 23, i64 37)
1226 call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 23, i64 38)
1227 call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 23, i64 39)
1228 call void @__quantum__rt__end_parallel()
1229 call void @__quantum__rt__begin_parallel()
1230 call void @__quantum__qis__move__body(ptr inttoptr (i64 80 to ptr), i64 25, i64 0)
1231 call void @__quantum__qis__move__body(ptr inttoptr (i64 81 to ptr), i64 25, i64 1)
1232 call void @__quantum__qis__move__body(ptr inttoptr (i64 82 to ptr), i64 25, i64 2)
1233 call void @__quantum__qis__move__body(ptr inttoptr (i64 83 to ptr), i64 25, i64 3)
1234 call void @__quantum__qis__move__body(ptr inttoptr (i64 84 to ptr), i64 25, i64 4)
1235 call void @__quantum__qis__move__body(ptr inttoptr (i64 85 to ptr), i64 25, i64 5)
1236 call void @__quantum__qis__move__body(ptr inttoptr (i64 86 to ptr), i64 25, i64 6)
1237 call void @__quantum__qis__move__body(ptr inttoptr (i64 87 to ptr), i64 25, i64 7)
1238 call void @__quantum__qis__move__body(ptr inttoptr (i64 88 to ptr), i64 25, i64 8)
1239 call void @__quantum__qis__move__body(ptr inttoptr (i64 89 to ptr), i64 25, i64 9)
1240 call void @__quantum__qis__move__body(ptr inttoptr (i64 90 to ptr), i64 25, i64 10)
1241 call void @__quantum__qis__move__body(ptr inttoptr (i64 91 to ptr), i64 25, i64 11)
1242 call void @__quantum__qis__move__body(ptr inttoptr (i64 92 to ptr), i64 25, i64 12)
1243 call void @__quantum__qis__move__body(ptr inttoptr (i64 93 to ptr), i64 25, i64 13)
1244 call void @__quantum__qis__move__body(ptr inttoptr (i64 94 to ptr), i64 25, i64 14)
1245 call void @__quantum__qis__move__body(ptr inttoptr (i64 95 to ptr), i64 25, i64 15)
1246 call void @__quantum__qis__move__body(ptr inttoptr (i64 96 to ptr), i64 25, i64 16)
1247 call void @__quantum__qis__move__body(ptr inttoptr (i64 97 to ptr), i64 25, i64 17)
1248 call void @__quantum__qis__move__body(ptr inttoptr (i64 98 to ptr), i64 25, i64 18)
1249 call void @__quantum__qis__move__body(ptr inttoptr (i64 99 to ptr), i64 25, i64 19)
1250 call void @__quantum__qis__move__body(ptr inttoptr (i64 100 to ptr), i64 25, i64 20)
1251 call void @__quantum__qis__move__body(ptr inttoptr (i64 101 to ptr), i64 25, i64 21)
1252 call void @__quantum__qis__move__body(ptr inttoptr (i64 102 to ptr), i64 25, i64 22)
1253 call void @__quantum__qis__move__body(ptr inttoptr (i64 103 to ptr), i64 25, i64 23)
1254 call void @__quantum__qis__move__body(ptr inttoptr (i64 104 to ptr), i64 25, i64 24)
1255 call void @__quantum__qis__move__body(ptr inttoptr (i64 105 to ptr), i64 25, i64 25)
1256 call void @__quantum__qis__move__body(ptr inttoptr (i64 106 to ptr), i64 25, i64 26)
1257 call void @__quantum__qis__move__body(ptr inttoptr (i64 107 to ptr), i64 25, i64 27)
1258 call void @__quantum__qis__move__body(ptr inttoptr (i64 108 to ptr), i64 25, i64 28)
1259 call void @__quantum__qis__move__body(ptr inttoptr (i64 109 to ptr), i64 25, i64 29)
1260 call void @__quantum__qis__move__body(ptr inttoptr (i64 110 to ptr), i64 25, i64 30)
1261 call void @__quantum__qis__move__body(ptr inttoptr (i64 111 to ptr), i64 25, i64 31)
1262 call void @__quantum__qis__move__body(ptr inttoptr (i64 112 to ptr), i64 25, i64 32)
1263 call void @__quantum__qis__move__body(ptr inttoptr (i64 113 to ptr), i64 25, i64 33)
1264 call void @__quantum__qis__move__body(ptr inttoptr (i64 114 to ptr), i64 25, i64 34)
1265 call void @__quantum__qis__move__body(ptr inttoptr (i64 115 to ptr), i64 25, i64 35)
1266 call void @__quantum__qis__move__body(ptr inttoptr (i64 116 to ptr), i64 25, i64 36)
1267 call void @__quantum__qis__move__body(ptr inttoptr (i64 117 to ptr), i64 25, i64 37)
1268 call void @__quantum__qis__move__body(ptr inttoptr (i64 118 to ptr), i64 25, i64 38)
1269 call void @__quantum__qis__move__body(ptr inttoptr (i64 119 to ptr), i64 25, i64 39)
1270 call void @__quantum__rt__end_parallel()
1271 call void @__quantum__rt__begin_parallel()
1272 call void @__quantum__qis__cz__body(ptr inttoptr (i64 80 to ptr), ptr inttoptr (i64 81 to ptr))
1273 call void @__quantum__qis__cz__body(ptr inttoptr (i64 82 to ptr), ptr inttoptr (i64 83 to ptr))
1274 call void @__quantum__qis__cz__body(ptr inttoptr (i64 84 to ptr), ptr inttoptr (i64 85 to ptr))
1275 call void @__quantum__qis__cz__body(ptr inttoptr (i64 86 to ptr), ptr inttoptr (i64 87 to ptr))
1276 call void @__quantum__qis__cz__body(ptr inttoptr (i64 88 to ptr), ptr inttoptr (i64 89 to ptr))
1277 call void @__quantum__qis__cz__body(ptr inttoptr (i64 90 to ptr), ptr inttoptr (i64 91 to ptr))
1278 call void @__quantum__qis__cz__body(ptr inttoptr (i64 92 to ptr), ptr inttoptr (i64 93 to ptr))
1279 call void @__quantum__qis__cz__body(ptr inttoptr (i64 94 to ptr), ptr inttoptr (i64 95 to ptr))
1280 call void @__quantum__qis__cz__body(ptr inttoptr (i64 96 to ptr), ptr inttoptr (i64 97 to ptr))
1281 call void @__quantum__qis__cz__body(ptr inttoptr (i64 98 to ptr), ptr inttoptr (i64 99 to ptr))
1282 call void @__quantum__qis__cz__body(ptr inttoptr (i64 100 to ptr), ptr inttoptr (i64 101 to ptr))
1283 call void @__quantum__qis__cz__body(ptr inttoptr (i64 102 to ptr), ptr inttoptr (i64 103 to ptr))
1284 call void @__quantum__qis__cz__body(ptr inttoptr (i64 104 to ptr), ptr inttoptr (i64 105 to ptr))
1285 call void @__quantum__qis__cz__body(ptr inttoptr (i64 106 to ptr), ptr inttoptr (i64 107 to ptr))
1286 call void @__quantum__qis__cz__body(ptr inttoptr (i64 108 to ptr), ptr inttoptr (i64 109 to ptr))
1287 call void @__quantum__qis__cz__body(ptr inttoptr (i64 110 to ptr), ptr inttoptr (i64 111 to ptr))
1288 call void @__quantum__qis__cz__body(ptr inttoptr (i64 112 to ptr), ptr inttoptr (i64 113 to ptr))
1289 call void @__quantum__qis__cz__body(ptr inttoptr (i64 114 to ptr), ptr inttoptr (i64 115 to ptr))
1290 call void @__quantum__qis__cz__body(ptr inttoptr (i64 116 to ptr), ptr inttoptr (i64 117 to ptr))
1291 call void @__quantum__qis__cz__body(ptr inttoptr (i64 118 to ptr), ptr inttoptr (i64 119 to ptr))
1292 call void @__quantum__rt__end_parallel()
1293 call void @__quantum__rt__begin_parallel()
1294 call void @__quantum__qis__move__body(ptr inttoptr (i64 80 to ptr), i64 22, i64 0)
1295 call void @__quantum__qis__move__body(ptr inttoptr (i64 81 to ptr), i64 22, i64 1)
1296 call void @__quantum__qis__move__body(ptr inttoptr (i64 82 to ptr), i64 22, i64 2)
1297 call void @__quantum__qis__move__body(ptr inttoptr (i64 83 to ptr), i64 22, i64 3)
1298 call void @__quantum__qis__move__body(ptr inttoptr (i64 84 to ptr), i64 22, i64 4)
1299 call void @__quantum__qis__move__body(ptr inttoptr (i64 85 to ptr), i64 22, i64 5)
1300 call void @__quantum__qis__move__body(ptr inttoptr (i64 86 to ptr), i64 22, i64 6)
1301 call void @__quantum__qis__move__body(ptr inttoptr (i64 87 to ptr), i64 22, i64 7)
1302 call void @__quantum__qis__move__body(ptr inttoptr (i64 88 to ptr), i64 22, i64 8)
1303 call void @__quantum__qis__move__body(ptr inttoptr (i64 89 to ptr), i64 22, i64 9)
1304 call void @__quantum__qis__move__body(ptr inttoptr (i64 90 to ptr), i64 22, i64 10)
1305 call void @__quantum__qis__move__body(ptr inttoptr (i64 91 to ptr), i64 22, i64 11)
1306 call void @__quantum__qis__move__body(ptr inttoptr (i64 92 to ptr), i64 22, i64 12)
1307 call void @__quantum__qis__move__body(ptr inttoptr (i64 93 to ptr), i64 22, i64 13)
1308 call void @__quantum__qis__move__body(ptr inttoptr (i64 94 to ptr), i64 22, i64 14)
1309 call void @__quantum__qis__move__body(ptr inttoptr (i64 95 to ptr), i64 22, i64 15)
1310 call void @__quantum__qis__move__body(ptr inttoptr (i64 96 to ptr), i64 22, i64 16)
1311 call void @__quantum__qis__move__body(ptr inttoptr (i64 97 to ptr), i64 22, i64 17)
1312 call void @__quantum__qis__move__body(ptr inttoptr (i64 98 to ptr), i64 22, i64 18)
1313 call void @__quantum__qis__move__body(ptr inttoptr (i64 99 to ptr), i64 22, i64 19)
1314 call void @__quantum__qis__move__body(ptr inttoptr (i64 100 to ptr), i64 22, i64 20)
1315 call void @__quantum__qis__move__body(ptr inttoptr (i64 101 to ptr), i64 22, i64 21)
1316 call void @__quantum__qis__move__body(ptr inttoptr (i64 102 to ptr), i64 22, i64 22)
1317 call void @__quantum__qis__move__body(ptr inttoptr (i64 103 to ptr), i64 22, i64 23)
1318 call void @__quantum__qis__move__body(ptr inttoptr (i64 104 to ptr), i64 22, i64 24)
1319 call void @__quantum__qis__move__body(ptr inttoptr (i64 105 to ptr), i64 22, i64 25)
1320 call void @__quantum__qis__move__body(ptr inttoptr (i64 106 to ptr), i64 22, i64 26)
1321 call void @__quantum__qis__move__body(ptr inttoptr (i64 107 to ptr), i64 22, i64 27)
1322 call void @__quantum__qis__move__body(ptr inttoptr (i64 108 to ptr), i64 22, i64 28)
1323 call void @__quantum__qis__move__body(ptr inttoptr (i64 109 to ptr), i64 22, i64 29)
1324 call void @__quantum__qis__move__body(ptr inttoptr (i64 110 to ptr), i64 22, i64 30)
1325 call void @__quantum__qis__move__body(ptr inttoptr (i64 111 to ptr), i64 22, i64 31)
1326 call void @__quantum__qis__move__body(ptr inttoptr (i64 112 to ptr), i64 22, i64 32)
1327 call void @__quantum__qis__move__body(ptr inttoptr (i64 113 to ptr), i64 22, i64 33)
1328 call void @__quantum__qis__move__body(ptr inttoptr (i64 114 to ptr), i64 22, i64 34)
1329 call void @__quantum__qis__move__body(ptr inttoptr (i64 115 to ptr), i64 22, i64 35)
1330 call void @__quantum__qis__move__body(ptr inttoptr (i64 116 to ptr), i64 22, i64 36)
1331 call void @__quantum__qis__move__body(ptr inttoptr (i64 117 to ptr), i64 22, i64 37)
1332 call void @__quantum__qis__move__body(ptr inttoptr (i64 118 to ptr), i64 22, i64 38)
1333 call void @__quantum__qis__move__body(ptr inttoptr (i64 119 to ptr), i64 22, i64 39)
1334 call void @__quantum__rt__end_parallel()
1335 call void @__quantum__rt__tuple_record_output(i64 0, ptr @0)
1336 ret i64 0
1337}
1338
1339declare void @__quantum__rt__initialize(ptr)
1340
1341declare void @__quantum__qis__cz__body(ptr, ptr)
1342
1343declare void @__quantum__rt__tuple_record_output(i64, ptr)
1344
1345declare void @__quantum__rt__begin_parallel()
1346
1347declare void @__quantum__rt__end_parallel()
1348
1349declare void @__quantum__qis__move__body(ptr, i64, i64)
1350
1351attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="120" "required_num_results"="0" }
1352
1353!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
1354
1355!0 = !{i32 1, !"qir_major_version", i32 1}
1356!1 = !{i32 7, !"qir_minor_version", i32 0}
1357!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
1358!3 = !{i32 1, !"dynamic_result_management", i1 false}
1359!4 = !{i32 5, !"int_computations", !5}
1360!5 = !{!"i64"}
1361!6 = !{i32 5, !"float_computations", !7}
1362!7 = !{!"double"}
1363""",
1364 )
1365
1366
1367@pytest.mark.skipif(not PYQIR_AVAILABLE, reason=SKIP_REASON)
1368def test_scheduler_moves_qubits_to_iz_for_1q_gate_after_2q_gate_before_measurement():
1369 qir = qsharp.compile(
1370 """
1371 {
1372 use qs = Qubit[2];
1373 SX(qs[0]);
1374 SX(qs[1]);
1375 CZ(qs[0], qs[1]);
1376 SX(qs[1]);
1377 MResetZ(qs[1])
1378 }
1379 """
1380 )
1381
1382 module = pyqir.Module.from_ir(pyqir.Context(), str(qir))
1383 before = PerQubitOrdering()
1384 before.run(module)
1385 Schedule(NeutralAtomDevice()).run(module)
1386 after = PerQubitOrdering()
1387 ValidateBeginEndParallel().run(module)
1388 after.run(module)
1389 check_qubit_ordering_unchanged(after, before)
1390
1391 assert_expected_inline(
1392 str(module),
1393 """\
1394
1395@0 = internal constant [4 x i8] c"0_r\\00"
1396
1397define i64 @ENTRYPOINT__main() #0 {
1398block_0:
1399 call void @__quantum__rt__initialize(ptr null)
1400 call void @__quantum__rt__begin_parallel()
1401 call void @__quantum__qis__move__body(ptr null, i64 25, i64 0)
1402 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1)
1403 call void @__quantum__rt__end_parallel()
1404 call void @__quantum__rt__begin_parallel()
1405 call void @__quantum__qis__sx__body(ptr null)
1406 call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr))
1407 call void @__quantum__rt__end_parallel()
1408 call void @__quantum__rt__begin_parallel()
1409 call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr))
1410 call void @__quantum__rt__end_parallel()
1411 call void @__quantum__rt__begin_parallel()
1412 call void @__quantum__qis__move__body(ptr null, i64 24, i64 0)
1413 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
1414 call void @__quantum__rt__end_parallel()
1415 call void @__quantum__rt__begin_parallel()
1416 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1)
1417 call void @__quantum__rt__end_parallel()
1418 call void @__quantum__rt__begin_parallel()
1419 call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr))
1420 call void @__quantum__rt__end_parallel()
1421 call void @__quantum__rt__begin_parallel()
1422 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
1423 call void @__quantum__rt__end_parallel()
1424 call void @__quantum__rt__begin_parallel()
1425 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 27, i64 1)
1426 call void @__quantum__rt__end_parallel()
1427 call void @__quantum__rt__begin_parallel()
1428 call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr null)
1429 call void @__quantum__rt__end_parallel()
1430 call void @__quantum__rt__begin_parallel()
1431 call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1)
1432 call void @__quantum__rt__end_parallel()
1433 call void @__quantum__rt__result_record_output(ptr null, ptr @0)
1434 ret i64 0
1435}
1436
1437declare void @__quantum__rt__initialize(ptr)
1438
1439declare void @__quantum__qis__sx__body(ptr)
1440
1441declare void @__quantum__qis__cz__body(ptr, ptr)
1442
1443declare void @__quantum__qis__mresetz__body(ptr, ptr) #1
1444
1445declare void @__quantum__rt__result_record_output(ptr, ptr)
1446
1447declare void @__quantum__rt__begin_parallel()
1448
1449declare void @__quantum__rt__end_parallel()
1450
1451declare void @__quantum__qis__move__body(ptr, i64, i64)
1452
1453attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="1" }
1454attributes #1 = { "irreversible" }
1455
1456!llvm.module.flags = !{!0, !1, !2, !3, !4, !6}
1457
1458!0 = !{i32 1, !"qir_major_version", i32 1}
1459!1 = !{i32 7, !"qir_minor_version", i32 0}
1460!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
1461!3 = !{i32 1, !"dynamic_result_management", i1 false}
1462!4 = !{i32 5, !"int_computations", !5}
1463!5 = !{!"i64"}
1464!6 = !{i32 5, !"float_computations", !7}
1465!7 = !{!"double"}
1466""",
1467 )
1468