diff --git a/source/pip/qsharp/_adaptive_pass.py b/source/pip/qsharp/_adaptive_pass.py index 81c7c4b6f6..44b8724780 100644 --- a/source/pip/qsharp/_adaptive_pass.py +++ b/source/pip/qsharp/_adaptive_pass.py @@ -437,15 +437,12 @@ def _resolve_operand(self, value: pyqir.Value) -> IntOperand | FloatOperand | Re if isinstance(value, pyqir.Instruction): return self._alloc_reg(value, self._type_tag(value.type)) - # Constant expressions (e.g. inttoptr (i64 N to %Qubit*)). + # Constant expressions (e.g. inttoptr (i64 N to ptr)). if isinstance(value, pyqir.Constant): # Try extracting as a qubit/result pointer constant. - qid = pyqir.qubit_id(value) - if qid is not None: - return IntOperand(qid) - rid = pyqir.result_id(value) - if rid is not None: - return IntOperand(rid) + pid = pyqir.ptr_id(value) + if pid is not None: + return IntOperand(pid) # Null pointer if value.is_null: reg = self._alloc_reg(value, REG_TYPE_PTR) diff --git a/source/pip/qsharp/_device/_atom/_decomp.py b/source/pip/qsharp/_device/_atom/_decomp.py index 56451113de..f51d878119 100644 --- a/source/pip/qsharp/_device/_atom/_decomp.py +++ b/source/pip/qsharp/_device/_atom/_decomp.py @@ -6,9 +6,8 @@ const, Function, FunctionType, + PointerType, Type, - qubit_type, - result_type, result, Context, Linkage, @@ -34,7 +33,7 @@ class DecomposeMultiQubitToCZ(QirModuleVisitor): def _on_module(self, module): void = Type.void(module.context) - qubit_ty = qubit_type(module.context) + qubit_ty = PointerType(Type.void(module.context)) self.double_ty = Type.double(module.context) # Find or create all the needed functions. for func in module.functions: @@ -214,7 +213,7 @@ class DecomposeSingleRotationToRz(QirModuleVisitor): def _on_module(self, module): void = Type.void(module.context) - qubit_ty = qubit_type(module.context) + qubit_ty = PointerType(Type.void(module.context)) self.double_ty = Type.double(module.context) # Find or create all the needed functions. for func in module.functions: @@ -290,7 +289,7 @@ class DecomposeSingleQubitToRzSX(QirModuleVisitor): def _on_module(self, module): void = Type.void(module.context) - qubit_ty = qubit_type(module.context) + qubit_ty = PointerType(Type.void(module.context)) self.double_ty = Type.double(module.context) # Find or create all the needed functions. for func in module.functions: @@ -400,7 +399,7 @@ class DecomposeRzAnglesToCliffordGates(QirModuleVisitor): def _on_module(self, module): void = Type.void(module.context) - qubit_ty = qubit_type(module.context) + qubit_ty = PointerType(Type.void(module.context)) self.double_ty = Type.double(module.context) # Find or create all the needed functions. for func in module.functions: @@ -482,8 +481,8 @@ class ReplaceResetWithMResetZ(QirModuleVisitor): def _on_module(self, module): self.context = module.context void = Type.void(self.context) - qubit_ty = qubit_type(self.context) - result_ty = result_type(self.context) + qubit_ty = PointerType(Type.void(self.context)) + result_ty = PointerType(Type.void(self.context)) # Find or create the intrinsic mresetz function for func in module.functions: match func.name: diff --git a/source/pip/qsharp/_device/_atom/_optimize.py b/source/pip/qsharp/_device/_atom/_optimize.py index a6f6058fc6..090a2fa16b 100644 --- a/source/pip/qsharp/_device/_atom/_optimize.py +++ b/source/pip/qsharp/_device/_atom/_optimize.py @@ -7,10 +7,9 @@ FunctionType, FloatConstant, Linkage, + PointerType, const, - qubit_type, - qubit_id, - result_type, + ptr_id, is_entry_point, QirModuleVisitor, ) @@ -30,8 +29,8 @@ class OptimizeSingleQubitGates(QirModuleVisitor): def _on_module(self, module): void = Type.void(module.context) - qubit_ty = qubit_type(module.context) - result_ty = result_type(module.context) + qubit_ty = PointerType(Type.void(module.context)) + result_ty = qubit_ty self.double_ty = Type.double(module.context) self.used_qubits = set() # Find or create the intrinsic gate functions @@ -61,7 +60,7 @@ def _drop_ops(self, qubits): # Since instructions are only removed when they are canceled out by their adjoint or folded with another # instruction, we can just pop the entries for these qubits so they start fresh with the next gates. for qubit in qubits: - q = qubit_id(qubit) + q = ptr_id(qubit) self.qubit_ops.pop(q, None) self.last_meas.pop(q, None) self.used_qubits.add(q) @@ -201,43 +200,43 @@ def _on_call_instr(self, call): super()._on_call_instr(call) def _on_qis_h(self, call, target): - self._schedule_gate(call, qubit_id(target), "h", "h") + self._schedule_gate(call, ptr_id(target), "h", "h") def _on_qis_s(self, call, target): - self._schedule_gate(call, qubit_id(target), "s", "s_adj") + self._schedule_gate(call, ptr_id(target), "s", "s_adj") def _on_qis_s_adj(self, call, target): - self._schedule_gate(call, qubit_id(target), "s_adj", "s") + self._schedule_gate(call, ptr_id(target), "s_adj", "s") def _on_qis_t(self, call, target): - self._schedule_gate(call, qubit_id(target), "t", "t_adj") + self._schedule_gate(call, ptr_id(target), "t", "t_adj") def _on_qis_t_adj(self, call, target): - self._schedule_gate(call, qubit_id(target), "t_adj", "t") + self._schedule_gate(call, ptr_id(target), "t_adj", "t") def _on_qis_x(self, call, target): - self._schedule_gate(call, qubit_id(target), "x", "x") + self._schedule_gate(call, ptr_id(target), "x", "x") def _on_qis_y(self, call, target): - self._schedule_gate(call, qubit_id(target), "y", "y") + self._schedule_gate(call, ptr_id(target), "y", "y") def _on_qis_z(self, call, target): - self._schedule_gate(call, qubit_id(target), "z", "z") + self._schedule_gate(call, ptr_id(target), "z", "z") def _on_qis_rx(self, call, angle, target): - self._schedule_rotation(call, qubit_id(target), "rx") + self._schedule_rotation(call, ptr_id(target), "rx") def _on_qis_rxx(self, call, angle, target1, target2): self._drop_ops([target1, target2]) def _on_qis_ry(self, call, angle, target): - self._schedule_rotation(call, qubit_id(target), "ry") + self._schedule_rotation(call, ptr_id(target), "ry") def _on_qis_ryy(self, call, angle, target1, target2): self._drop_ops([target1, target2]) def _on_qis_rz(self, call, angle, target): - self._schedule_rotation(call, qubit_id(target), "rz") + self._schedule_rotation(call, ptr_id(target), "rz") def _on_qis_rzz(self, call, angle, target1, target2): self._drop_ops([target1, target2]) @@ -259,7 +258,7 @@ def _on_qis_swap(self, call, target1, target2): def _on_qis_m(self, call, target, result): self._drop_ops([target]) - self.last_meas[qubit_id(target)] = (call, target, result) + self.last_meas[ptr_id(target)] = (call, target, result) def _on_qis_mz(self, call, target, result): self._on_qis_m(call, target, result) @@ -268,7 +267,7 @@ def _on_qis_mresetz(self, call, target, result): self._on_qis_m(call, target, result) def _on_qis_reset(self, call, target): - id = qubit_id(target) + id = ptr_id(target) if id in self.last_meas: # Since the last operation on this qubit was a measurement, # we can combine that measurement with the reset. @@ -280,7 +279,7 @@ def _on_qis_reset(self, call, target): [target, result], ) call.erase() - self.last_meas[qubit_id(target)] = (new_call, target, result) + self.last_meas[ptr_id(target)] = (new_call, target, result) elif not id in self.used_qubits: # This qubit was never used, so we can just erase the reset instruction. call.erase() diff --git a/source/pip/qsharp/_device/_atom/_scheduler.py b/source/pip/qsharp/_device/_atom/_scheduler.py index 77282010fb..5b24cc019d 100644 --- a/source/pip/qsharp/_device/_atom/_scheduler.py +++ b/source/pip/qsharp/_device/_atom/_scheduler.py @@ -8,10 +8,10 @@ Function, QirModuleVisitor, FunctionType, + PointerType, Type, Linkage, - qubit_type, - qubit_id, + ptr_id, IntType, Value, ) @@ -48,7 +48,7 @@ def __repr__(self): @property def qubit_id(self) -> int: - q_id = qubit_id(self.qubit_id_ptr) + q_id = ptr_id(self.qubit_id_ptr) assert q_id is not None, "Qubit id should be known" return q_id @@ -70,7 +70,7 @@ class PartialMove: @property def qubit_id(self) -> int: - q_id = qubit_id(self.qubit_id_ptr) + q_id = ptr_id(self.qubit_id_ptr) assert q_id is not None, "Qubit id should be known" return q_id @@ -405,15 +405,15 @@ def qubits_to_partial_moves( partial_moves = [] for elt in qubits_to_move: if isinstance(elt, tuple): - q_id1 = qubit_id(elt[0]) - q_id2 = qubit_id(elt[1]) + q_id1 = ptr_id(elt[0]) + q_id2 = ptr_id(elt[1]) assert q_id1 is not None assert q_id2 is not None mov1 = PartialMove(elt[0], self.device.get_home_loc(q_id1)) mov2 = PartialMove(elt[1], self.device.get_home_loc(q_id2)) partial_moves.append((mov1, mov2)) else: - q_id = qubit_id(elt) + q_id = ptr_id(elt) assert q_id is not None mov = PartialMove(elt, self.device.get_home_loc(q_id)) partial_moves.append(mov) @@ -630,7 +630,7 @@ def _on_module(self, module): self.move_func = Function( FunctionType( Type.void(module.context), - [qubit_type(module.context), i64_ty, i64_ty], + [PointerType(Type.void(module.context)), i64_ty, i64_ty], ), Linkage.EXTERNAL, "__quantum__qis__move__body", @@ -676,11 +676,11 @@ def _on_block(self, block): # If this qubit is involved in pending moves, that implies a CZ or measurement is pending, so flush now. if any( ( - gate["qubit_args"][0] == qubit_id(q) + gate["qubit_args"][0] == ptr_id(q) if isinstance(q, QubitId) else ( - gate["qubit_args"][0] == qubit_id(q[0]) - or gate["qubit_args"][0] == qubit_id(q[1]) + gate["qubit_args"][0] == ptr_id(q[0]) + or gate["qubit_args"][0] == ptr_id(q[1]) ) ) for q in self.pending_qubits_to_move diff --git a/source/pip/qsharp/_device/_atom/_trace.py b/source/pip/qsharp/_device/_atom/_trace.py index 7bae2649d1..3308b52548 100644 --- a/source/pip/qsharp/_device/_atom/_trace.py +++ b/source/pip/qsharp/_device/_atom/_trace.py @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. -from pyqir import QirModuleVisitor, qubit_id, required_num_qubits +from pyqir import QirModuleVisitor, ptr_id, required_num_qubits from .._device import Device @@ -44,27 +44,27 @@ def _on_call_instr(self, call): def _on_qis_move(self, call, qubit, row, col): if not self.in_parallel: self._next_step() - q = qubit_id(qubit) + q = ptr_id(qubit) self.q_cols[q] = col.value self.trace["steps"][-1]["ops"].append(f"move({row.value}, {col.value}) {q}") def _on_qis_sx(self, call, qubit): if not self.in_parallel: self._next_step() - q = qubit_id(qubit) + q = ptr_id(qubit) self.trace["steps"][-1]["ops"].append(f"sx {q}") def _on_qis_rz(self, call, angle, qubit): if not self.in_parallel: self._next_step() - q = qubit_id(qubit) + q = ptr_id(qubit) self.trace["steps"][-1]["ops"].append(f"rz({angle.value}) {q}") def _on_qis_cz(self, call, qubit1, qubit2): if not self.in_parallel: self._next_step() - q1 = qubit_id(qubit1) - q2 = qubit_id(qubit2) + q1 = ptr_id(qubit1) + q2 = ptr_id(qubit2) if self.q_cols.get(q1, -1) > self.q_cols.get(q2, -1): q1, q2 = q2, q1 self.trace["steps"][-1]["ops"].append(f"cz {q1}, {q2}") @@ -72,5 +72,5 @@ def _on_qis_cz(self, call, qubit1, qubit2): def _on_qis_mresetz(self, call, target, result): if not self.in_parallel: self._next_step() - q = qubit_id(target) + q = ptr_id(target) self.trace["steps"][-1]["ops"].append(f"mz {q}") diff --git a/source/pip/qsharp/_device/_atom/_utils.py b/source/pip/qsharp/_device/_atom/_utils.py index 683f5cd5f4..17d1eb3248 100644 --- a/source/pip/qsharp/_device/_atom/_utils.py +++ b/source/pip/qsharp/_device/_atom/_utils.py @@ -5,34 +5,49 @@ Instruction, Call, Constant, + PointerType, Value, - qubit_id, - is_qubit_type, - result_id, - is_result_type, + ptr_id, ) from typing import Dict TOLERANCE: float = 1.1920929e-7 # Machine epsilon for 32-bit IEEE FP numbers. +# QIS gates that consume a measurement result; the value is the 0-based index +# of the result argument. All other pointer-typed arguments of a QIS call are +# qubit arguments. +_RESULT_ARG_INDEX: Dict[str, int] = { + "__quantum__qis__m__body": 1, + "__quantum__qis__mz__body": 1, + "__quantum__qis__mresetz__body": 1, + "__quantum__qis__read_result__body": 0, +} + # If this is a call to a __qis__ gate, return a dict describing the gate and its arguments. def as_qis_gate(instr: Instruction) -> Dict: if isinstance(instr, Call) and instr.callee.name.startswith("__quantum__qis__"): parts = instr.callee.name.split("__") + result_idx = _RESULT_ARG_INDEX.get(instr.callee.name) + qubit_args = [] + result_args = [] + other_args = [] + for i, arg in enumerate(instr.args): + if isinstance(arg.type, PointerType): + pid = ptr_id(arg) + if pid is None: + other_args.append(arg) + elif result_idx is not None and i == result_idx: + result_args.append(pid) + else: + qubit_args.append(pid) + else: + other_args.append(arg) return { "gate": parts[3] + ("_adj" if parts[4] == "adj" else ""), - "qubit_args": [ - qubit_id(arg) for arg in instr.args if qubit_id(arg) is not None - ], - "result_args": [ - result_id(arg) for arg in instr.args if result_id(arg) is not None - ], - "other_args": [ - arg - for arg in instr.args - if qubit_id(arg) is None and result_id(arg) is None - ], + "qubit_args": qubit_args, + "result_args": result_args, + "other_args": other_args, } return {} @@ -72,7 +87,6 @@ def uses_any_value(used_values, existing_values) -> bool: [ val in existing_values for val in used_values - if not isinstance(val, Constant) - or (is_qubit_type(val.type) or is_result_type(val.type)) + if not isinstance(val, Constant) or isinstance(val.type, PointerType) ] ) diff --git a/source/pip/qsharp/_simulation.py b/source/pip/qsharp/_simulation.py index 76621961f3..c3ae4d405c 100644 --- a/source/pip/qsharp/_simulation.py +++ b/source/pip/qsharp/_simulation.py @@ -19,8 +19,8 @@ from pyqir import ( Function, FunctionType, + PointerType, Type, - qubit_type, Linkage, ) from ._qsharp import QirInputData, Result @@ -75,41 +75,41 @@ def _on_call_instr(self, call: pyqir.Call) -> None: self.gates.append( ( QirInstructionId.CCX, - pyqir.qubit_id(call.args[0]), - pyqir.qubit_id(call.args[1]), - pyqir.qubit_id(call.args[2]), + pyqir.ptr_id(call.args[0]), + pyqir.ptr_id(call.args[1]), + pyqir.ptr_id(call.args[2]), ) ) elif callee_name == "__quantum__qis__cx__body": self.gates.append( ( QirInstructionId.CX, - pyqir.qubit_id(call.args[0]), - pyqir.qubit_id(call.args[1]), + pyqir.ptr_id(call.args[0]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__cy__body": self.gates.append( ( QirInstructionId.CY, - pyqir.qubit_id(call.args[0]), - pyqir.qubit_id(call.args[1]), + pyqir.ptr_id(call.args[0]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__cz__body": self.gates.append( ( QirInstructionId.CZ, - pyqir.qubit_id(call.args[0]), - pyqir.qubit_id(call.args[1]), + pyqir.ptr_id(call.args[0]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__swap__body": self.gates.append( ( QirInstructionId.SWAP, - pyqir.qubit_id(call.args[0]), - pyqir.qubit_id(call.args[1]), + pyqir.ptr_id(call.args[0]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__rx__body": @@ -117,7 +117,7 @@ def _on_call_instr(self, call: pyqir.Call) -> None: ( QirInstructionId.RX, call.args[0].value, - pyqir.qubit_id(call.args[1]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__rxx__body": @@ -125,8 +125,8 @@ def _on_call_instr(self, call: pyqir.Call) -> None: ( QirInstructionId.RXX, call.args[0].value, - pyqir.qubit_id(call.args[1]), - pyqir.qubit_id(call.args[2]), + pyqir.ptr_id(call.args[1]), + pyqir.ptr_id(call.args[2]), ) ) elif callee_name == "__quantum__qis__ry__body": @@ -134,7 +134,7 @@ def _on_call_instr(self, call: pyqir.Call) -> None: ( QirInstructionId.RY, call.args[0].value, - pyqir.qubit_id(call.args[1]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__ryy__body": @@ -142,8 +142,8 @@ def _on_call_instr(self, call: pyqir.Call) -> None: ( QirInstructionId.RYY, call.args[0].value, - pyqir.qubit_id(call.args[1]), - pyqir.qubit_id(call.args[2]), + pyqir.ptr_id(call.args[1]), + pyqir.ptr_id(call.args[2]), ) ) elif callee_name == "__quantum__qis__rz__body": @@ -151,7 +151,7 @@ def _on_call_instr(self, call: pyqir.Call) -> None: ( QirInstructionId.RZ, call.args[0].value, - pyqir.qubit_id(call.args[1]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__rzz__body": @@ -159,59 +159,59 @@ def _on_call_instr(self, call: pyqir.Call) -> None: ( QirInstructionId.RZZ, call.args[0].value, - pyqir.qubit_id(call.args[1]), - pyqir.qubit_id(call.args[2]), + pyqir.ptr_id(call.args[1]), + pyqir.ptr_id(call.args[2]), ) ) elif callee_name == "__quantum__qis__h__body": - self.gates.append((QirInstructionId.H, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.H, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__s__body": - self.gates.append((QirInstructionId.S, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.S, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__s__adj": - self.gates.append((QirInstructionId.SAdj, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.SAdj, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__sx__body": - self.gates.append((QirInstructionId.SX, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.SX, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__t__body": - self.gates.append((QirInstructionId.T, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.T, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__t__adj": - self.gates.append((QirInstructionId.TAdj, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.TAdj, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__x__body": - self.gates.append((QirInstructionId.X, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.X, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__y__body": - self.gates.append((QirInstructionId.Y, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.Y, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__z__body": - self.gates.append((QirInstructionId.Z, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.Z, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__m__body": self.gates.append( ( QirInstructionId.M, - pyqir.qubit_id(call.args[0]), - pyqir.result_id(call.args[1]), + pyqir.ptr_id(call.args[0]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__mz__body": self.gates.append( ( QirInstructionId.MZ, - pyqir.qubit_id(call.args[0]), - pyqir.result_id(call.args[1]), + pyqir.ptr_id(call.args[0]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__mresetz__body": self.gates.append( ( QirInstructionId.MResetZ, - pyqir.qubit_id(call.args[0]), - pyqir.result_id(call.args[1]), + pyqir.ptr_id(call.args[0]), + pyqir.ptr_id(call.args[1]), ) ) elif callee_name == "__quantum__qis__reset__body": - self.gates.append((QirInstructionId.RESET, pyqir.qubit_id(call.args[0]))) + self.gates.append((QirInstructionId.RESET, pyqir.ptr_id(call.args[0]))) elif callee_name == "__quantum__qis__move__body": self.gates.append( ( QirInstructionId.Move, - pyqir.qubit_id(call.args[0]), + pyqir.ptr_id(call.args[0]), ) ) elif callee_name == "__quantum__rt__result_record_output": @@ -219,7 +219,7 @@ def _on_call_instr(self, call: pyqir.Call) -> None: self.gates.append( ( QirInstructionId.ResultRecordOutput, - str(pyqir.result_id(call.args[0])), + str(pyqir.ptr_id(call.args[0])), tag, ) ) @@ -263,7 +263,7 @@ def _on_call_instr(self, call: pyqir.Call) -> None: ( QirInstructionId.CorrelatedNoise, self.noise_intrinsics_table.get_intrinsic_id(callee_name), - [pyqir.qubit_id(arg) for arg in call.args], + [pyqir.ptr_id(arg) for arg in call.args], ) ) elif "qdk_noise" in call.callee.attributes.func: @@ -294,7 +294,7 @@ def _on_call_instr(self, call: pyqir.Call) -> None: ( QirInstructionId.CorrelatedNoise, int(self.noise_table[callee_name]), # Noise table ID - [pyqir.qubit_id(qubit) for qubit in call.args], # qubit args + [pyqir.ptr_id(qubit) for qubit in call.args], # qubit args ) ) elif "qdk_noise" in call.callee.attributes.func: @@ -329,7 +329,7 @@ def _on_function(self, function): self._counters.pop() def _on_rt_result_record_output(self, call, result, target): - self._output_str += f"o[{pyqir.result_id(result)}]" + self._output_str += f"o[{pyqir.ptr_id(result)}]" while len(self._counters) > 0: self._output_str += "," self._counters[-1] -= 1 @@ -367,7 +367,7 @@ def __init__(self): def _on_module(self, module): void = Type.void(module.context) - qubit_ty = qubit_type(module.context) + qubit_ty = PointerType(Type.void(module.context)) # Find or create all the needed functions. for func in module.functions: diff --git a/source/pip/test_requirements.txt b/source/pip/test_requirements.txt index ae3f808636..5ca47e9f71 100644 --- a/source/pip/test_requirements.txt +++ b/source/pip/test_requirements.txt @@ -1,3 +1,3 @@ pytest expecttest==0.3.0 -pyqir>=0.11.1,<0.12 +pyqir>=0.12.3,<0.13 diff --git a/source/pip/tests-integration/devices/test_atom_decomp.py b/source/pip/tests-integration/devices/test_atom_decomp.py index c6a671bb2b..6b71011bb5 100644 --- a/source/pip/tests-integration/devices/test_atom_decomp.py +++ b/source/pip/tests-integration/devices/test_atom_decomp.py @@ -43,63 +43,61 @@ def test_ccx_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__t__adj(%Qubit* null) - call void @__quantum__qis__t__adj(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 2 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__t__body(%Qubit* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__t__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__t__adj(%Qubit* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 2 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__t__adj(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__t__body(%Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__t__adj(ptr null) + call void @__quantum__qis__t__adj(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__t__body(ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__h__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__t__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__t__adj(ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__h__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__t__adj(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__t__body(ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__ccx__body(%Qubit*, %Qubit*, %Qubit*) +declare void @__quantum__qis__ccx__body(ptr, ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="3" "required_num_results"="0" } @@ -137,39 +135,37 @@ def test_cx_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__cx__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cx__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -207,41 +203,39 @@ def test_cy_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__s__adj(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__s__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__s__adj(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__s__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__cy__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cy__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -279,43 +273,41 @@ def test_rxx_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__rz__body(double 1.234500e+00, %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__rz__body(double 1.234500e+00, ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rxx__body(double, %Qubit*, %Qubit*) +declare void @__quantum__qis__rxx__body(double, ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -353,47 +345,45 @@ def test_ryy_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__s__adj(%Qubit* null) - call void @__quantum__qis__s__adj(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__rz__body(double 1.234500e+00, %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__s__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__s__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__s__adj(ptr null) + call void @__quantum__qis__s__adj(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__rz__body(double 1.234500e+00, ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__s__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__s__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__ryy__body(double, %Qubit*, %Qubit*) +declare void @__quantum__qis__ryy__body(double, ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -431,43 +421,41 @@ def test_rzz_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__rz__body(double 1.234500e+00, %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__rz__body(double 1.234500e+00, ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rzz__body(double, %Qubit*, %Qubit*) +declare void @__quantum__qis__rzz__body(double, ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -505,45 +493,43 @@ def test_swap_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__h__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__swap__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__swap__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -581,33 +567,31 @@ def test_rx_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__rz__body(double 1.234500e+00, %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__rz__body(double 1.234500e+00, ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rx__body(double, %Qubit*) +declare void @__quantum__qis__rx__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -645,35 +629,33 @@ def test_ry_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__s__adj(%Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__rz__body(double 1.234500e+00, %Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__s__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__s__adj(ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__rz__body(double 1.234500e+00, ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__s__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__ry__body(double, %Qubit*) +declare void @__quantum__qis__ry__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -711,29 +693,27 @@ def test_h_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -771,27 +751,25 @@ def test_s_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -829,27 +807,25 @@ def test_sadj_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__rz__body(double 0xBFF921FB54442D18, %Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__rz__body(double 0xBFF921FB54442D18, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -887,27 +863,25 @@ def test_t_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__rz__body(double 0x3FE921FB54442D18, %Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__rz__body(double 0x3FE921FB54442D18, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -945,27 +919,25 @@ def test_tadj_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__rz__body(double 0xBFE921FB54442D18, %Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__rz__body(double 0xBFE921FB54442D18, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1003,28 +975,26 @@ def test_x_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1062,29 +1032,27 @@ def test_y_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__rz__body(double 0x400921FB54442D18, %Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__rz__body(double 0x400921FB54442D18, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__y__body(%Qubit*) +declare void @__quantum__qis__y__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1122,27 +1090,25 @@ def test_z_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__rz__body(double 0x400921FB54442D18, %Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__rz__body(double 0x400921FB54442D18, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1180,29 +1146,27 @@ def test_rz_3pi_over_2_clifford_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__s__adj(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__s__adj(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1240,29 +1204,27 @@ def test_rz_neg_pi_over_2_clifford_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__s__adj(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__s__adj(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1300,29 +1262,27 @@ def test_rz_pi_clifford_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__z__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__z__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1360,29 +1320,27 @@ def test_rz_neg_pi_clifford_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__z__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__z__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1420,29 +1378,27 @@ def test_rz_pi_over_2_clifford_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__s__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__s__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1480,29 +1436,27 @@ def test_rz_neg_3pi_over_2_clifford_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__s__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__s__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1540,28 +1494,26 @@ def test_rz_2pi_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1599,28 +1551,26 @@ def test_rz_neg_2pi_decomposition() -> None: transformed_qir, """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -1681,26 +1631,23 @@ def test_reset_replaced_by_mresetz() -> None: transformed_qir, """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__reset__body(%Qubit*) #1 +declare void @__quantum__qis__reset__body(ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } attributes #1 = { "irreversible" } diff --git a/source/pip/tests-integration/devices/test_atom_e2e.py b/source/pip/tests-integration/devices/test_atom_e2e.py index 753f93d784..938751ba23 100644 --- a/source/pip/tests-integration/devices/test_atom_e2e.py +++ b/source/pip/tests-integration/devices/test_atom_e2e.py @@ -39,44 +39,41 @@ def test_device_compile() -> None: compiled_qir, """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_a\\00" @1 = internal constant [6 x i8] c"1_a0r\\00" @2 = internal constant [6 x i8] c"2_a1r\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* null) - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* null) - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*)) - call void @__quantum__rt__array_record_output(i64 2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* null, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @1, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 1 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @2, i64 0, i64 0)) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr null) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr null) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__rz__body(double 0x3FF921FB54442D18, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__array_record_output(i64 2, ptr @0) + call void @__quantum__rt__result_record_output(ptr null, ptr @1) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 1 to ptr), ptr @2) ret i64 0 } -declare void @__quantum__rt__array_record_output(i64, i8*) +declare void @__quantum__rt__array_record_output(i64, ptr) -declare void @__quantum__rt__result_record_output(%Result*, i8*) +declare void @__quantum__rt__result_record_output(ptr, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="base_profile" "required_num_qubits"="2" "required_num_results"="2" } diff --git a/source/pip/tests-integration/devices/test_atom_optimize.py b/source/pip/tests-integration/devices/test_atom_optimize.py index cb56b899e2..cc3a26f5cb 100644 --- a/source/pip/tests-integration/devices/test_atom_optimize.py +++ b/source/pip/tests-integration/devices/test_atom_optimize.py @@ -39,20 +39,18 @@ def test_prune_init_handled_by_unused_functions_pass() -> None: str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -93,30 +91,27 @@ def test_optimize_removes_h_h_gates() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -157,32 +152,29 @@ def test_optimize_removes_s_sadj_gates() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -223,32 +215,29 @@ def test_optimize_removes_t_tadj_gates() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__t__body(%Qubit*) +declare void @__quantum__qis__t__body(ptr) -declare void @__quantum__qis__t__adj(%Qubit*) +declare void @__quantum__qis__t__adj(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -287,30 +276,27 @@ def test_optimize_combines_h_s_h_gates() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -351,30 +337,27 @@ def test_optimize_removes_x_x_gates() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__z__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__z__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -415,30 +398,27 @@ def test_optimize_removes_y_y_gates() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__z__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__z__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__y__body(%Qubit*) +declare void @__quantum__qis__y__body(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -479,30 +459,27 @@ def test_optimize_removes_z_z_gates() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -547,34 +524,31 @@ def test_optimize_combines_rx_rotation_angles() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__rx__body(double 0x400921FB54442D18, %Qubit* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__y__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__rx__body(double 0x400921FB54442D18, ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__y__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rx__body(double, %Qubit*) +declare void @__quantum__qis__rx__body(double, ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__y__body(%Qubit*) +declare void @__quantum__qis__y__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -619,34 +593,31 @@ def test_optimize_combines_ry_rotation_angles() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__ry__body(double 0x400921FB54442D18, %Qubit* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__y__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__ry__body(double 0x400921FB54442D18, ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__y__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__ry__body(double, %Qubit*) +declare void @__quantum__qis__ry__body(double, ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__y__body(%Qubit*) +declare void @__quantum__qis__y__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -691,34 +662,31 @@ def test_optimize_combines_rz_rotation_angles() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__rz__body(double 0x400921FB54442D18, %Qubit* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__y__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__rz__body(double 0x400921FB54442D18, ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__y__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__y__body(%Qubit*) +declare void @__quantum__qis__y__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -761,33 +729,30 @@ def test_optimize_removes_adjoint_gates_after_removing_other_adjoint_gates() -> str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -828,36 +793,33 @@ def test_optimize_leaves_gates_with_intervening_gates() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__h__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__h__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__s__body(%Qubit*) +declare void @__quantum__qis__s__body(ptr) -declare void @__quantum__qis__s__adj(%Qubit*) +declare void @__quantum__qis__s__adj(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -897,32 +859,29 @@ def test_optimize_treats_rxx_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__rxx__body(double 5.000000e-01, %Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__rxx__body(double 5.000000e-01, ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__rxx__body(double, %Qubit*, %Qubit*) +declare void @__quantum__qis__rxx__body(double, ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -962,32 +921,29 @@ def test_optimize_treats_ryy_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__ryy__body(double 5.000000e-01, %Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__ryy__body(double 5.000000e-01, ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__ryy__body(double, %Qubit*, %Qubit*) +declare void @__quantum__qis__ryy__body(double, ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -1027,32 +983,29 @@ def test_optimize_treats_rzz_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__rzz__body(double 5.000000e-01, %Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__rzz__body(double 5.000000e-01, ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__rzz__body(double, %Qubit*, %Qubit*) +declare void @__quantum__qis__rzz__body(double, ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -1093,32 +1046,29 @@ def test_optimize_treats_ccx_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__ccx__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__ccx__body(ptr null, ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__ccx__body(%Qubit*, %Qubit*, %Qubit*) +declare void @__quantum__qis__ccx__body(ptr, ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="3" "required_num_results"="0" } @@ -1158,32 +1108,29 @@ def test_optimize_treats_cx_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__cx__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__cx__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__cx__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cx__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -1223,32 +1170,29 @@ def test_optimize_treats_cy_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__cy__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__cy__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__cy__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cy__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -1288,32 +1232,29 @@ def test_optimize_treats_cz_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -1353,32 +1294,29 @@ def test_optimize_treats_swap_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__swap__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__swap__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__swap__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__swap__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -1417,32 +1355,29 @@ def test_optimize_treats_m_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__m__body(%Qubit* null, %Result* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__m__body(ptr null, ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__m__body(ptr, ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="1" } attributes #1 = { "irreversible" } @@ -1482,30 +1417,27 @@ def test_optimize_treats_mresetz_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="1" } attributes #1 = { "irreversible" } @@ -1545,32 +1477,29 @@ def test_optimize_treats_reset_as_barrier() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__reset__body(%Qubit* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__reset__body(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__reset__body(%Qubit*) #1 +declare void @__quantum__qis__reset__body(ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } attributes #1 = { "irreversible" } @@ -1620,52 +1549,49 @@ def test_optimize_works_within_blocks_not_across_blocks() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - %var_0 = call i1 @__quantum__rt__read_result(%Result* null) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + %var_0 = call i1 @__quantum__rt__read_result(ptr null) br i1 %var_0, label %block_1, label %block_2 block_1: ; preds = %block_0 - call void @__quantum__qis__x__body(%Qubit* null) + call void @__quantum__qis__x__body(ptr null) br label %block_3 block_2: ; preds = %block_0 - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__y__body(%Qubit* null) - call void @__quantum__qis__x__body(%Qubit* null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__y__body(ptr null) + call void @__quantum__qis__x__body(ptr null) br label %block_3 block_3: ; preds = %block_2, %block_1 - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare i1 @__quantum__rt__read_result(%Result*) +declare i1 @__quantum__rt__read_result(ptr) -declare void @__quantum__qis__h__body(%Qubit*) +declare void @__quantum__qis__h__body(ptr) -declare void @__quantum__qis__z__body(%Qubit*) +declare void @__quantum__qis__z__body(ptr) -declare void @__quantum__qis__y__body(%Qubit*) +declare void @__quantum__qis__y__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="1" } attributes #1 = { "irreversible" } @@ -1706,34 +1632,31 @@ def test_optimize_combines_m_and_reset_into_mresetz() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__m__body(ptr, ptr) #1 -declare void @__quantum__qis__reset__body(%Qubit*) #1 +declare void @__quantum__qis__reset__body(ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="1" } attributes #1 = { "irreversible" } @@ -1774,32 +1697,29 @@ def test_optimize_removes_mresetz_and_reset_into_mresetz() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__qis__reset__body(%Qubit*) #1 +declare void @__quantum__qis__reset__body(ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="1" } attributes #1 = { "irreversible" } @@ -1842,33 +1762,30 @@ def test_optimize_removes_reset_of_unused_qubits() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__reset__body(%Qubit* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__x__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__reset__body(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__x__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__reset__body(%Qubit*) #1 +declare void @__quantum__qis__reset__body(ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } attributes #1 = { "irreversible" } @@ -1907,31 +1824,28 @@ def test_optimize_turns_final_m_into_mresetz() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__m__body(ptr, ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="1" } attributes #1 = { "irreversible" } @@ -1972,34 +1886,31 @@ def test_optimize_removes_reset_after_reset() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__qis__reset__body(%Qubit* null) - call void @__quantum__qis__y__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__qis__reset__body(ptr null) + call void @__quantum__qis__y__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__reset__body(%Qubit*) #1 +declare void @__quantum__qis__reset__body(ptr) #1 -declare void @__quantum__qis__y__body(%Qubit*) +declare void @__quantum__qis__y__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } attributes #1 = { "irreversible" } @@ -2038,30 +1949,27 @@ def test_optimize_removes_final_reset() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__x__body(%Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__x__body(ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__x__body(%Qubit*) +declare void @__quantum__qis__x__body(ptr) -declare void @__quantum__qis__reset__body(%Qubit*) #1 +declare void @__quantum__qis__reset__body(ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) +declare void @__quantum__qis__mresetz__body(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } attributes #1 = { "irreversible" } diff --git a/source/pip/tests-integration/devices/test_atom_reorder.py b/source/pip/tests-integration/devices/test_atom_reorder.py index 677fd5e717..ee8bacfc93 100644 --- a/source/pip/tests-integration/devices/test_atom_reorder.py +++ b/source/pip/tests-integration/devices/test_atom_reorder.py @@ -44,37 +44,34 @@ def test_reorder_no_changes_to_simple_ordered_program() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" @1 = internal constant [6 x i8] c"1_t0r\\00" @2 = internal constant [6 x i8] c"2_t1r\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*)) - call void @__quantum__rt__tuple_record_output(i64 2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* null, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @1, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 1 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @2, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 2, ptr @0) + call void @__quantum__rt__result_record_output(ptr null, ptr @1) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 1 to ptr), ptr @2) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__rt__result_record_output(%Result*, i8*) +declare void @__quantum__rt__result_record_output(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="2" } attributes #1 = { "irreversible" } @@ -122,9 +119,6 @@ def test_reorder_groups_matching_sequential_gates_into_same_step() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" @1 = internal constant [6 x i8] c"1_t0r\\00" @2 = internal constant [6 x i8] c"2_t1r\\00" @@ -133,34 +127,34 @@ def test_reorder_groups_matching_sequential_gates_into_same_step() -> None: define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 2 to %Qubit*), %Qubit* inttoptr (i64 3 to %Qubit*)) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*)) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 2 to %Qubit*), %Result* inttoptr (i64 2 to %Result*)) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 3 to %Qubit*), %Result* inttoptr (i64 3 to %Result*)) - call void @__quantum__rt__tuple_record_output(i64 4, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* null, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @1, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 1 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @2, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 2 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @3, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 3 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @4, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 3 to ptr)) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 3 to ptr), ptr inttoptr (i64 3 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 4, ptr @0) + call void @__quantum__rt__result_record_output(ptr null, ptr @1) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 1 to ptr), ptr @2) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 2 to ptr), ptr @3) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 3 to ptr), ptr @4) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__rt__result_record_output(%Result*, i8*) +declare void @__quantum__rt__result_record_output(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="4" "required_num_results"="4" } attributes #1 = { "irreversible" } @@ -208,35 +202,32 @@ def test_reorder_moves_gates_past_measurements_that_overlap_qubit_and_result_ids str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" @1 = internal constant [6 x i8] c"1_t0r\\00" @2 = internal constant [6 x i8] c"2_t1r\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* inttoptr (i64 1 to %Result*)) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* null) - call void @__quantum__rt__tuple_record_output(i64 2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 1 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @1, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* null, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @2, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__mresetz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__rt__tuple_record_output(i64 2, ptr @0) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 1 to ptr), ptr @1) + call void @__quantum__rt__result_record_output(ptr null, ptr @2) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__rt__result_record_output(%Result*, i8*) +declare void @__quantum__rt__result_record_output(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="2" } attributes #1 = { "irreversible" } @@ -282,39 +273,36 @@ def test_reorder_keeps_dependent_gates_in_order() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" @1 = internal constant [6 x i8] c"1_t0r\\00" @2 = internal constant [6 x i8] c"2_t1r\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*)) - call void @__quantum__rt__tuple_record_output(i64 2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* null, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @1, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 1 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @2, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 2, ptr @0) + call void @__quantum__rt__result_record_output(ptr null, ptr @1) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 1 to ptr), ptr @2) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) -declare void @__quantum__rt__result_record_output(%Result*, i8*) +declare void @__quantum__rt__result_record_output(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="2" } attributes #1 = { "irreversible" } @@ -366,9 +354,6 @@ def test_reorder_sorts_gates_by_qubit_id() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_a\\00" @1 = internal constant [6 x i8] c"1_a0r\\00" @2 = internal constant [6 x i8] c"2_a1r\\00" @@ -378,35 +363,35 @@ def test_reorder_sorts_gates_by_qubit_id() -> None: define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 3 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 4 to %Qubit*)) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* inttoptr (i64 3 to %Result*)) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*)) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 2 to %Qubit*), %Result* inttoptr (i64 4 to %Result*)) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 3 to %Qubit*), %Result* null) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 4 to %Qubit*), %Result* inttoptr (i64 2 to %Result*)) - call void @__quantum__rt__array_record_output(i64 5, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 3 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @1, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 1 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @2, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 4 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @3, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* null, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @4, i64 0, i64 0)) - call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 2 to %Result*), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @5, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 3 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 4 to ptr)) + call void @__quantum__qis__mresetz__body(ptr null, ptr inttoptr (i64 3 to ptr)) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 4 to ptr)) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 3 to ptr), ptr null) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 4 to ptr), ptr inttoptr (i64 2 to ptr)) + call void @__quantum__rt__array_record_output(i64 5, ptr @0) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 3 to ptr), ptr @1) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 1 to ptr), ptr @2) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 4 to ptr), ptr @3) + call void @__quantum__rt__result_record_output(ptr null, ptr @4) + call void @__quantum__rt__result_record_output(ptr inttoptr (i64 2 to ptr), ptr @5) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__rt__array_record_output(i64, i8*) +declare void @__quantum__rt__array_record_output(i64, ptr) -declare void @__quantum__rt__result_record_output(%Result*, i8*) +declare void @__quantum__rt__result_record_output(ptr, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="5" "required_num_results"="5" } attributes #1 = { "irreversible" } @@ -450,27 +435,25 @@ def test_reorder_sorts_cz_to_end_of_step() -> None: str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 3 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Qubit* null) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 3 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 1 to ptr), ptr null) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="4" "required_num_results"="0" } @@ -526,42 +509,39 @@ def test_reorder_respects_read_result_and_classical_compute() -> None: str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*)) - %0 = call i1 @__quantum__rt__read_result(%Result* null) + call void @__quantum__rt__initialize(ptr null) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 1 to ptr)) + %0 = call i1 @__quantum__rt__read_result(ptr null) br i1 %0, label %block_1, label %block_2 block_1: ; preds = %block_0 - %1 = call i1 @__quantum__rt__read_result(%Result* inttoptr (i64 1 to %Result*)) + %1 = call i1 @__quantum__rt__read_result(ptr inttoptr (i64 1 to ptr)) br i1 %1, label %block_3, label %block_4 block_2: ; preds = %block_0 - %2 = call i1 @__quantum__rt__read_result(%Result* inttoptr (i64 1 to %Result*)) + %2 = call i1 @__quantum__rt__read_result(ptr inttoptr (i64 1 to ptr)) br i1 %2, label %block_5, label %block_6 block_3: ; preds = %block_1 - call void @__quantum__qis__sx__body(%Qubit* null) + call void @__quantum__qis__sx__body(ptr null) br label %block_7 block_4: ; preds = %block_1 - call void @__quantum__qis__rz__body(double 1.000000e+00, %Qubit* null) + call void @__quantum__qis__rz__body(double 1.000000e+00, ptr null) br label %block_7 block_5: ; preds = %block_2 - call void @__quantum__qis__rz__body(double 2.000000e+00, %Qubit* null) + call void @__quantum__qis__rz__body(double 2.000000e+00, ptr null) br label %block_8 block_6: ; preds = %block_2 - call void @__quantum__qis__rz__body(double 3.000000e+00, %Qubit* null) + call void @__quantum__qis__rz__body(double 3.000000e+00, ptr null) br label %block_8 block_7: ; preds = %block_4, %block_3 @@ -575,22 +555,22 @@ def test_reorder_respects_read_result_and_classical_compute() -> None: block_9: ; preds = %block_8, %block_7 %5 = phi double [ %3, %block_7 ], [ %4, %block_8 ] %6 = fmul double 2.000000e+00, %5 - call void @__quantum__qis__rz__body(double %6, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__qis__rz__body(double %6, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare i1 @__quantum__rt__read_result(%Result*) +declare i1 @__quantum__rt__read_result(ptr) -declare void @__quantum__qis__rz__body(double, %Qubit*) +declare void @__quantum__qis__rz__body(double, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="2" } attributes #1 = { "irreversible" } diff --git a/source/pip/tests-integration/devices/test_atom_schedule.py b/source/pip/tests-integration/devices/test_atom_schedule.py index 5b12a47107..c90ec91daa 100644 --- a/source/pip/tests-integration/devices/test_atom_schedule.py +++ b/source/pip/tests-integration/devices/test_atom_schedule.py @@ -49,37 +49,35 @@ def test_scheduler_inserts_move_to_iz_for_single_qubit_gates(): str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 25, i64 0) + call void @__quantum__qis__move__body(ptr null, i64 25, i64 0) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__sx__body(%Qubit* null) + call void @__quantum__qis__sx__body(ptr null) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="1" "required_num_results"="0" } @@ -121,39 +119,37 @@ def test_scheduler_inserts_move_to_iz_for_two_qubit_gates(): str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 25, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr null, i64 25, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -196,44 +192,42 @@ def test_scheduler_inserts_move_to_iz_for_mixed_gates_with_1q_gates_first(): str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 25, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr null, i64 25, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__sx__body(%Qubit* null) + call void @__quantum__qis__sx__body(ptr null) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="0" } @@ -278,50 +272,48 @@ def test_scheduler_parallelizes_operations_when_possible(): str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 25, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 25, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 2 to %Qubit*), i64 25, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 3 to %Qubit*), i64 25, i64 3) + call void @__quantum__qis__move__body(ptr null, i64 25, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 25, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 25, i64 3) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 2 to %Qubit*)) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 2 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 2 to %Qubit*), %Qubit* inttoptr (i64 3 to %Qubit*)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 3 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 2 to %Qubit*), i64 24, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 3 to %Qubit*), i64 24, i64 3) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 24, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 24, i64 3) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="4" "required_num_results"="0" } @@ -364,41 +356,38 @@ def test_scheduler_inserts_moves_to_mz_for_measurement(): str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 27, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 27, i64 1) + call void @__quantum__qis__move__body(ptr null, i64 27, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 27, i64 1) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__mresetz__body(%Qubit* null, %Result* null) - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*)) + call void @__quantum__qis__mresetz__body(ptr null, ptr null) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr inttoptr (i64 1 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="2" } attributes #1 = { "irreversible" } @@ -442,276 +431,274 @@ def test_scheduler_parallelizes_1q_gates_by_iz_row(): str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 26, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 26, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 2 to %Qubit*), i64 26, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 3 to %Qubit*), i64 26, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 4 to %Qubit*), i64 26, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 5 to %Qubit*), i64 26, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 6 to %Qubit*), i64 26, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 7 to %Qubit*), i64 26, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 8 to %Qubit*), i64 26, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 9 to %Qubit*), i64 26, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 10 to %Qubit*), i64 26, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 11 to %Qubit*), i64 26, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 12 to %Qubit*), i64 26, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 13 to %Qubit*), i64 26, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 14 to %Qubit*), i64 26, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 15 to %Qubit*), i64 26, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 16 to %Qubit*), i64 26, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 17 to %Qubit*), i64 26, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 18 to %Qubit*), i64 26, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 19 to %Qubit*), i64 26, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 20 to %Qubit*), i64 26, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 21 to %Qubit*), i64 26, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 22 to %Qubit*), i64 26, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 23 to %Qubit*), i64 26, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 24 to %Qubit*), i64 26, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 25 to %Qubit*), i64 26, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 26 to %Qubit*), i64 26, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 27 to %Qubit*), i64 26, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 28 to %Qubit*), i64 26, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 29 to %Qubit*), i64 26, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 30 to %Qubit*), i64 26, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 31 to %Qubit*), i64 26, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 32 to %Qubit*), i64 26, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 33 to %Qubit*), i64 26, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 34 to %Qubit*), i64 26, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 35 to %Qubit*), i64 26, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 36 to %Qubit*), i64 26, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 37 to %Qubit*), i64 26, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 38 to %Qubit*), i64 26, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 39 to %Qubit*), i64 26, i64 39) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 40 to %Qubit*), i64 25, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 41 to %Qubit*), i64 25, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 42 to %Qubit*), i64 25, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 43 to %Qubit*), i64 25, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 44 to %Qubit*), i64 25, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 45 to %Qubit*), i64 25, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 46 to %Qubit*), i64 25, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 47 to %Qubit*), i64 25, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 48 to %Qubit*), i64 25, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 49 to %Qubit*), i64 25, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 50 to %Qubit*), i64 25, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 51 to %Qubit*), i64 25, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 52 to %Qubit*), i64 25, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 53 to %Qubit*), i64 25, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 54 to %Qubit*), i64 25, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 55 to %Qubit*), i64 25, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 56 to %Qubit*), i64 25, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 57 to %Qubit*), i64 25, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 58 to %Qubit*), i64 25, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 59 to %Qubit*), i64 25, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 60 to %Qubit*), i64 25, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 61 to %Qubit*), i64 25, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 62 to %Qubit*), i64 25, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 63 to %Qubit*), i64 25, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 64 to %Qubit*), i64 25, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 65 to %Qubit*), i64 25, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 66 to %Qubit*), i64 25, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 67 to %Qubit*), i64 25, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 68 to %Qubit*), i64 25, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 69 to %Qubit*), i64 25, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 70 to %Qubit*), i64 25, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 71 to %Qubit*), i64 25, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 72 to %Qubit*), i64 25, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 73 to %Qubit*), i64 25, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 74 to %Qubit*), i64 25, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 75 to %Qubit*), i64 25, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 76 to %Qubit*), i64 25, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 77 to %Qubit*), i64 25, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 78 to %Qubit*), i64 25, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 79 to %Qubit*), i64 25, i64 39) + call void @__quantum__qis__move__body(ptr null, i64 26, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 26, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 26, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 26, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 26, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 26, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 26, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 26, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 26, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 26, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 26, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 26, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 26, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 26, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 26, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 26, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 26, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 26, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 26, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 26, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 26, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 26, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 26, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 26, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 26, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 26, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 26, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 26, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 26, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 26, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 26, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 26, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 26, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 26, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 26, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 26, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 26, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 26, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 26, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 26, i64 39) + call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 25, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 25, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 25, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 25, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 25, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 25, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 25, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 25, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 25, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 25, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 25, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 25, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 25, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 25, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 25, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 25, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 25, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 25, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 25, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 25, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 25, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 25, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 25, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 25, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 25, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 25, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 25, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 25, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 25, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 25, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 25, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 25, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 25, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 25, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 25, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 25, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 25, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 25, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 25, i64 39) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 40 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 41 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 42 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 43 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 44 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 45 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 46 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 47 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 48 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 49 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 50 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 51 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 52 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 53 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 54 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 55 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 56 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 57 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 58 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 59 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 60 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 61 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 62 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 63 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 64 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 65 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 66 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 67 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 68 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 69 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 70 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 71 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 72 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 73 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 74 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 75 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 76 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 77 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 78 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 79 to %Qubit*)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 40 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 41 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 42 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 43 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 44 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 45 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 46 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 47 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 48 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 49 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 50 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 51 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 52 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 53 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 54 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 55 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 56 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 57 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 58 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 59 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 60 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 61 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 62 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 63 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 64 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 65 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 66 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 67 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 68 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 69 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 70 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 71 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 72 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 73 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 74 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 75 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 76 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 77 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 78 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 79 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 2 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 3 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 4 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 5 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 6 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 7 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 8 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 9 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 10 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 11 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 12 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 13 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 14 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 15 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 16 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 17 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 18 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 19 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 20 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 21 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 22 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 23 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 24 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 25 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 26 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 27 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 28 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 29 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 30 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 31 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 32 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 33 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 34 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 35 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 36 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 37 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 38 to %Qubit*)) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 39 to %Qubit*)) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 2 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 3 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 4 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 5 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 6 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 7 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 8 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 9 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 10 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 11 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 12 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 13 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 14 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 15 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 16 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 17 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 18 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 19 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 20 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 21 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 22 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 23 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 24 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 25 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 26 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 27 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 28 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 29 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 30 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 31 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 32 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 33 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 34 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 35 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 36 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 37 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 38 to ptr)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 39 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 2 to %Qubit*), i64 24, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 3 to %Qubit*), i64 24, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 4 to %Qubit*), i64 24, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 5 to %Qubit*), i64 24, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 6 to %Qubit*), i64 24, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 7 to %Qubit*), i64 24, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 8 to %Qubit*), i64 24, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 9 to %Qubit*), i64 24, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 10 to %Qubit*), i64 24, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 11 to %Qubit*), i64 24, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 12 to %Qubit*), i64 24, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 13 to %Qubit*), i64 24, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 14 to %Qubit*), i64 24, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 15 to %Qubit*), i64 24, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 16 to %Qubit*), i64 24, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 17 to %Qubit*), i64 24, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 18 to %Qubit*), i64 24, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 19 to %Qubit*), i64 24, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 20 to %Qubit*), i64 24, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 21 to %Qubit*), i64 24, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 22 to %Qubit*), i64 24, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 23 to %Qubit*), i64 24, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 24 to %Qubit*), i64 24, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 25 to %Qubit*), i64 24, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 26 to %Qubit*), i64 24, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 27 to %Qubit*), i64 24, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 28 to %Qubit*), i64 24, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 29 to %Qubit*), i64 24, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 30 to %Qubit*), i64 24, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 31 to %Qubit*), i64 24, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 32 to %Qubit*), i64 24, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 33 to %Qubit*), i64 24, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 34 to %Qubit*), i64 24, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 35 to %Qubit*), i64 24, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 36 to %Qubit*), i64 24, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 37 to %Qubit*), i64 24, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 38 to %Qubit*), i64 24, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 39 to %Qubit*), i64 24, i64 39) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 40 to %Qubit*), i64 23, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 41 to %Qubit*), i64 23, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 42 to %Qubit*), i64 23, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 43 to %Qubit*), i64 23, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 44 to %Qubit*), i64 23, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 45 to %Qubit*), i64 23, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 46 to %Qubit*), i64 23, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 47 to %Qubit*), i64 23, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 48 to %Qubit*), i64 23, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 49 to %Qubit*), i64 23, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 50 to %Qubit*), i64 23, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 51 to %Qubit*), i64 23, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 52 to %Qubit*), i64 23, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 53 to %Qubit*), i64 23, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 54 to %Qubit*), i64 23, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 55 to %Qubit*), i64 23, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 56 to %Qubit*), i64 23, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 57 to %Qubit*), i64 23, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 58 to %Qubit*), i64 23, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 59 to %Qubit*), i64 23, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 60 to %Qubit*), i64 23, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 61 to %Qubit*), i64 23, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 62 to %Qubit*), i64 23, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 63 to %Qubit*), i64 23, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 64 to %Qubit*), i64 23, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 65 to %Qubit*), i64 23, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 66 to %Qubit*), i64 23, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 67 to %Qubit*), i64 23, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 68 to %Qubit*), i64 23, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 69 to %Qubit*), i64 23, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 70 to %Qubit*), i64 23, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 71 to %Qubit*), i64 23, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 72 to %Qubit*), i64 23, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 73 to %Qubit*), i64 23, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 74 to %Qubit*), i64 23, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 75 to %Qubit*), i64 23, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 76 to %Qubit*), i64 23, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 77 to %Qubit*), i64 23, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 78 to %Qubit*), i64 23, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 79 to %Qubit*), i64 23, i64 39) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 24, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 24, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 24, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 24, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 24, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 24, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 24, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 24, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 24, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 24, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 24, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 24, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 24, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 24, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 24, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 24, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 24, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 24, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 24, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 24, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 24, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 24, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 24, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 24, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 24, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 24, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 24, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 24, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 24, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 24, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 24, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 24, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 24, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 24, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 24, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 24, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 24, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 24, i64 39) + call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 23, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 23, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 23, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 23, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 23, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 23, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 23, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 23, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 23, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 23, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 23, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 23, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 23, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 23, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 23, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 23, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 23, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 23, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 23, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 23, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 23, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 23, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 23, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 23, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 23, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 23, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 23, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 23, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 23, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 23, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 23, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 23, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 23, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 23, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 23, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 23, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 23, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 23, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 23, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 23, i64 39) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="80" "required_num_results"="0" } @@ -756,234 +743,232 @@ def test_scheduler_parallelizes_all_2q_in_iz(): str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 26, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 26, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 2 to %Qubit*), i64 26, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 3 to %Qubit*), i64 26, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 4 to %Qubit*), i64 26, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 5 to %Qubit*), i64 26, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 6 to %Qubit*), i64 26, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 7 to %Qubit*), i64 26, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 8 to %Qubit*), i64 26, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 9 to %Qubit*), i64 26, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 10 to %Qubit*), i64 26, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 11 to %Qubit*), i64 26, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 12 to %Qubit*), i64 26, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 13 to %Qubit*), i64 26, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 14 to %Qubit*), i64 26, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 15 to %Qubit*), i64 26, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 16 to %Qubit*), i64 26, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 17 to %Qubit*), i64 26, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 18 to %Qubit*), i64 26, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 19 to %Qubit*), i64 26, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 20 to %Qubit*), i64 26, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 21 to %Qubit*), i64 26, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 22 to %Qubit*), i64 26, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 23 to %Qubit*), i64 26, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 24 to %Qubit*), i64 26, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 25 to %Qubit*), i64 26, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 26 to %Qubit*), i64 26, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 27 to %Qubit*), i64 26, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 28 to %Qubit*), i64 26, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 29 to %Qubit*), i64 26, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 30 to %Qubit*), i64 26, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 31 to %Qubit*), i64 26, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 32 to %Qubit*), i64 26, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 33 to %Qubit*), i64 26, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 34 to %Qubit*), i64 26, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 35 to %Qubit*), i64 26, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 36 to %Qubit*), i64 26, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 37 to %Qubit*), i64 26, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 38 to %Qubit*), i64 26, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 39 to %Qubit*), i64 26, i64 39) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 40 to %Qubit*), i64 25, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 41 to %Qubit*), i64 25, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 42 to %Qubit*), i64 25, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 43 to %Qubit*), i64 25, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 44 to %Qubit*), i64 25, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 45 to %Qubit*), i64 25, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 46 to %Qubit*), i64 25, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 47 to %Qubit*), i64 25, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 48 to %Qubit*), i64 25, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 49 to %Qubit*), i64 25, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 50 to %Qubit*), i64 25, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 51 to %Qubit*), i64 25, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 52 to %Qubit*), i64 25, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 53 to %Qubit*), i64 25, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 54 to %Qubit*), i64 25, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 55 to %Qubit*), i64 25, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 56 to %Qubit*), i64 25, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 57 to %Qubit*), i64 25, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 58 to %Qubit*), i64 25, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 59 to %Qubit*), i64 25, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 60 to %Qubit*), i64 25, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 61 to %Qubit*), i64 25, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 62 to %Qubit*), i64 25, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 63 to %Qubit*), i64 25, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 64 to %Qubit*), i64 25, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 65 to %Qubit*), i64 25, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 66 to %Qubit*), i64 25, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 67 to %Qubit*), i64 25, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 68 to %Qubit*), i64 25, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 69 to %Qubit*), i64 25, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 70 to %Qubit*), i64 25, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 71 to %Qubit*), i64 25, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 72 to %Qubit*), i64 25, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 73 to %Qubit*), i64 25, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 74 to %Qubit*), i64 25, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 75 to %Qubit*), i64 25, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 76 to %Qubit*), i64 25, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 77 to %Qubit*), i64 25, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 78 to %Qubit*), i64 25, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 79 to %Qubit*), i64 25, i64 39) + call void @__quantum__qis__move__body(ptr null, i64 26, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 26, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 26, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 26, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 26, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 26, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 26, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 26, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 26, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 26, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 26, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 26, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 26, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 26, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 26, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 26, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 26, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 26, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 26, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 26, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 26, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 26, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 26, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 26, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 26, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 26, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 26, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 26, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 26, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 26, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 26, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 26, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 26, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 26, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 26, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 26, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 26, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 26, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 26, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 26, i64 39) + call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 25, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 25, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 25, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 25, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 25, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 25, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 25, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 25, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 25, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 25, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 25, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 25, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 25, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 25, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 25, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 25, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 25, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 25, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 25, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 25, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 25, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 25, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 25, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 25, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 25, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 25, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 25, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 25, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 25, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 25, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 25, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 25, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 25, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 25, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 25, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 25, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 25, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 25, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 25, i64 39) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 2 to %Qubit*), %Qubit* inttoptr (i64 3 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 4 to %Qubit*), %Qubit* inttoptr (i64 5 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 6 to %Qubit*), %Qubit* inttoptr (i64 7 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 8 to %Qubit*), %Qubit* inttoptr (i64 9 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 10 to %Qubit*), %Qubit* inttoptr (i64 11 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 12 to %Qubit*), %Qubit* inttoptr (i64 13 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 14 to %Qubit*), %Qubit* inttoptr (i64 15 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 16 to %Qubit*), %Qubit* inttoptr (i64 17 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 18 to %Qubit*), %Qubit* inttoptr (i64 19 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 20 to %Qubit*), %Qubit* inttoptr (i64 21 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 22 to %Qubit*), %Qubit* inttoptr (i64 23 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 24 to %Qubit*), %Qubit* inttoptr (i64 25 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 26 to %Qubit*), %Qubit* inttoptr (i64 27 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 28 to %Qubit*), %Qubit* inttoptr (i64 29 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 30 to %Qubit*), %Qubit* inttoptr (i64 31 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 32 to %Qubit*), %Qubit* inttoptr (i64 33 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 34 to %Qubit*), %Qubit* inttoptr (i64 35 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 36 to %Qubit*), %Qubit* inttoptr (i64 37 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 38 to %Qubit*), %Qubit* inttoptr (i64 39 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 40 to %Qubit*), %Qubit* inttoptr (i64 41 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 42 to %Qubit*), %Qubit* inttoptr (i64 43 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 44 to %Qubit*), %Qubit* inttoptr (i64 45 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 46 to %Qubit*), %Qubit* inttoptr (i64 47 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 48 to %Qubit*), %Qubit* inttoptr (i64 49 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 50 to %Qubit*), %Qubit* inttoptr (i64 51 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 52 to %Qubit*), %Qubit* inttoptr (i64 53 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 54 to %Qubit*), %Qubit* inttoptr (i64 55 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 56 to %Qubit*), %Qubit* inttoptr (i64 57 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 58 to %Qubit*), %Qubit* inttoptr (i64 59 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 60 to %Qubit*), %Qubit* inttoptr (i64 61 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 62 to %Qubit*), %Qubit* inttoptr (i64 63 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 64 to %Qubit*), %Qubit* inttoptr (i64 65 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 66 to %Qubit*), %Qubit* inttoptr (i64 67 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 68 to %Qubit*), %Qubit* inttoptr (i64 69 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 70 to %Qubit*), %Qubit* inttoptr (i64 71 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 72 to %Qubit*), %Qubit* inttoptr (i64 73 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 74 to %Qubit*), %Qubit* inttoptr (i64 75 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 76 to %Qubit*), %Qubit* inttoptr (i64 77 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 78 to %Qubit*), %Qubit* inttoptr (i64 79 to %Qubit*)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 3 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 4 to ptr), ptr inttoptr (i64 5 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 6 to ptr), ptr inttoptr (i64 7 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 8 to ptr), ptr inttoptr (i64 9 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 10 to ptr), ptr inttoptr (i64 11 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 12 to ptr), ptr inttoptr (i64 13 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 14 to ptr), ptr inttoptr (i64 15 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 16 to ptr), ptr inttoptr (i64 17 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 18 to ptr), ptr inttoptr (i64 19 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 20 to ptr), ptr inttoptr (i64 21 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 22 to ptr), ptr inttoptr (i64 23 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 24 to ptr), ptr inttoptr (i64 25 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 26 to ptr), ptr inttoptr (i64 27 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 28 to ptr), ptr inttoptr (i64 29 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 30 to ptr), ptr inttoptr (i64 31 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 32 to ptr), ptr inttoptr (i64 33 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 34 to ptr), ptr inttoptr (i64 35 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 36 to ptr), ptr inttoptr (i64 37 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 38 to ptr), ptr inttoptr (i64 39 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 40 to ptr), ptr inttoptr (i64 41 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 42 to ptr), ptr inttoptr (i64 43 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 44 to ptr), ptr inttoptr (i64 45 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 46 to ptr), ptr inttoptr (i64 47 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 48 to ptr), ptr inttoptr (i64 49 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 50 to ptr), ptr inttoptr (i64 51 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 52 to ptr), ptr inttoptr (i64 53 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 54 to ptr), ptr inttoptr (i64 55 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 56 to ptr), ptr inttoptr (i64 57 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 58 to ptr), ptr inttoptr (i64 59 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 60 to ptr), ptr inttoptr (i64 61 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 62 to ptr), ptr inttoptr (i64 63 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 64 to ptr), ptr inttoptr (i64 65 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 66 to ptr), ptr inttoptr (i64 67 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 68 to ptr), ptr inttoptr (i64 69 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 70 to ptr), ptr inttoptr (i64 71 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 72 to ptr), ptr inttoptr (i64 73 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 74 to ptr), ptr inttoptr (i64 75 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 76 to ptr), ptr inttoptr (i64 77 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 78 to ptr), ptr inttoptr (i64 79 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 2 to %Qubit*), i64 24, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 3 to %Qubit*), i64 24, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 4 to %Qubit*), i64 24, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 5 to %Qubit*), i64 24, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 6 to %Qubit*), i64 24, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 7 to %Qubit*), i64 24, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 8 to %Qubit*), i64 24, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 9 to %Qubit*), i64 24, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 10 to %Qubit*), i64 24, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 11 to %Qubit*), i64 24, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 12 to %Qubit*), i64 24, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 13 to %Qubit*), i64 24, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 14 to %Qubit*), i64 24, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 15 to %Qubit*), i64 24, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 16 to %Qubit*), i64 24, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 17 to %Qubit*), i64 24, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 18 to %Qubit*), i64 24, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 19 to %Qubit*), i64 24, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 20 to %Qubit*), i64 24, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 21 to %Qubit*), i64 24, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 22 to %Qubit*), i64 24, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 23 to %Qubit*), i64 24, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 24 to %Qubit*), i64 24, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 25 to %Qubit*), i64 24, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 26 to %Qubit*), i64 24, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 27 to %Qubit*), i64 24, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 28 to %Qubit*), i64 24, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 29 to %Qubit*), i64 24, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 30 to %Qubit*), i64 24, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 31 to %Qubit*), i64 24, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 32 to %Qubit*), i64 24, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 33 to %Qubit*), i64 24, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 34 to %Qubit*), i64 24, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 35 to %Qubit*), i64 24, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 36 to %Qubit*), i64 24, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 37 to %Qubit*), i64 24, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 38 to %Qubit*), i64 24, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 39 to %Qubit*), i64 24, i64 39) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 40 to %Qubit*), i64 23, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 41 to %Qubit*), i64 23, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 42 to %Qubit*), i64 23, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 43 to %Qubit*), i64 23, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 44 to %Qubit*), i64 23, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 45 to %Qubit*), i64 23, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 46 to %Qubit*), i64 23, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 47 to %Qubit*), i64 23, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 48 to %Qubit*), i64 23, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 49 to %Qubit*), i64 23, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 50 to %Qubit*), i64 23, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 51 to %Qubit*), i64 23, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 52 to %Qubit*), i64 23, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 53 to %Qubit*), i64 23, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 54 to %Qubit*), i64 23, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 55 to %Qubit*), i64 23, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 56 to %Qubit*), i64 23, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 57 to %Qubit*), i64 23, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 58 to %Qubit*), i64 23, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 59 to %Qubit*), i64 23, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 60 to %Qubit*), i64 23, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 61 to %Qubit*), i64 23, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 62 to %Qubit*), i64 23, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 63 to %Qubit*), i64 23, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 64 to %Qubit*), i64 23, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 65 to %Qubit*), i64 23, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 66 to %Qubit*), i64 23, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 67 to %Qubit*), i64 23, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 68 to %Qubit*), i64 23, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 69 to %Qubit*), i64 23, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 70 to %Qubit*), i64 23, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 71 to %Qubit*), i64 23, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 72 to %Qubit*), i64 23, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 73 to %Qubit*), i64 23, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 74 to %Qubit*), i64 23, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 75 to %Qubit*), i64 23, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 76 to %Qubit*), i64 23, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 77 to %Qubit*), i64 23, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 78 to %Qubit*), i64 23, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 79 to %Qubit*), i64 23, i64 39) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 24, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 24, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 24, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 24, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 24, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 24, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 24, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 24, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 24, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 24, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 24, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 24, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 24, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 24, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 24, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 24, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 24, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 24, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 24, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 24, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 24, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 24, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 24, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 24, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 24, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 24, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 24, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 24, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 24, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 24, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 24, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 24, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 24, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 24, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 24, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 24, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 24, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 24, i64 39) + call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 23, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 23, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 23, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 23, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 23, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 23, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 23, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 23, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 23, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 23, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 23, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 23, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 23, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 23, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 23, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 23, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 23, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 23, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 23, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 23, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 23, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 23, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 23, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 23, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 23, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 23, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 23, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 23, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 23, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 23, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 23, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 23, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 23, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 23, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 23, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 23, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 23, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 23, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 23, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 23, i64 39) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="80" "required_num_results"="0" } @@ -1030,340 +1015,338 @@ def test_scheduler_splits_large_parallel_2q_in_iz_by_iz_size(): str(module), """\ -%Qubit = type opaque - @0 = internal constant [4 x i8] c"0_t\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 26, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 26, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 2 to %Qubit*), i64 26, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 3 to %Qubit*), i64 26, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 4 to %Qubit*), i64 26, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 5 to %Qubit*), i64 26, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 6 to %Qubit*), i64 26, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 7 to %Qubit*), i64 26, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 8 to %Qubit*), i64 26, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 9 to %Qubit*), i64 26, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 10 to %Qubit*), i64 26, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 11 to %Qubit*), i64 26, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 12 to %Qubit*), i64 26, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 13 to %Qubit*), i64 26, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 14 to %Qubit*), i64 26, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 15 to %Qubit*), i64 26, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 16 to %Qubit*), i64 26, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 17 to %Qubit*), i64 26, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 18 to %Qubit*), i64 26, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 19 to %Qubit*), i64 26, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 20 to %Qubit*), i64 26, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 21 to %Qubit*), i64 26, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 22 to %Qubit*), i64 26, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 23 to %Qubit*), i64 26, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 24 to %Qubit*), i64 26, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 25 to %Qubit*), i64 26, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 26 to %Qubit*), i64 26, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 27 to %Qubit*), i64 26, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 28 to %Qubit*), i64 26, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 29 to %Qubit*), i64 26, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 30 to %Qubit*), i64 26, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 31 to %Qubit*), i64 26, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 32 to %Qubit*), i64 26, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 33 to %Qubit*), i64 26, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 34 to %Qubit*), i64 26, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 35 to %Qubit*), i64 26, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 36 to %Qubit*), i64 26, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 37 to %Qubit*), i64 26, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 38 to %Qubit*), i64 26, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 39 to %Qubit*), i64 26, i64 39) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 40 to %Qubit*), i64 25, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 41 to %Qubit*), i64 25, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 42 to %Qubit*), i64 25, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 43 to %Qubit*), i64 25, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 44 to %Qubit*), i64 25, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 45 to %Qubit*), i64 25, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 46 to %Qubit*), i64 25, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 47 to %Qubit*), i64 25, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 48 to %Qubit*), i64 25, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 49 to %Qubit*), i64 25, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 50 to %Qubit*), i64 25, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 51 to %Qubit*), i64 25, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 52 to %Qubit*), i64 25, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 53 to %Qubit*), i64 25, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 54 to %Qubit*), i64 25, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 55 to %Qubit*), i64 25, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 56 to %Qubit*), i64 25, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 57 to %Qubit*), i64 25, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 58 to %Qubit*), i64 25, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 59 to %Qubit*), i64 25, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 60 to %Qubit*), i64 25, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 61 to %Qubit*), i64 25, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 62 to %Qubit*), i64 25, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 63 to %Qubit*), i64 25, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 64 to %Qubit*), i64 25, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 65 to %Qubit*), i64 25, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 66 to %Qubit*), i64 25, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 67 to %Qubit*), i64 25, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 68 to %Qubit*), i64 25, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 69 to %Qubit*), i64 25, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 70 to %Qubit*), i64 25, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 71 to %Qubit*), i64 25, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 72 to %Qubit*), i64 25, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 73 to %Qubit*), i64 25, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 74 to %Qubit*), i64 25, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 75 to %Qubit*), i64 25, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 76 to %Qubit*), i64 25, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 77 to %Qubit*), i64 25, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 78 to %Qubit*), i64 25, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 79 to %Qubit*), i64 25, i64 39) + call void @__quantum__qis__move__body(ptr null, i64 26, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 26, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 26, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 26, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 26, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 26, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 26, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 26, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 26, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 26, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 26, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 26, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 26, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 26, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 26, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 26, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 26, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 26, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 26, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 26, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 26, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 26, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 26, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 26, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 26, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 26, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 26, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 26, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 26, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 26, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 26, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 26, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 26, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 26, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 26, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 26, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 26, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 26, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 26, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 26, i64 39) + call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 25, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 25, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 25, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 25, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 25, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 25, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 25, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 25, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 25, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 25, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 25, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 25, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 25, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 25, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 25, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 25, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 25, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 25, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 25, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 25, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 25, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 25, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 25, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 25, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 25, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 25, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 25, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 25, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 25, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 25, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 25, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 25, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 25, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 25, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 25, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 25, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 25, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 25, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 25, i64 39) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 2 to %Qubit*), %Qubit* inttoptr (i64 3 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 4 to %Qubit*), %Qubit* inttoptr (i64 5 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 6 to %Qubit*), %Qubit* inttoptr (i64 7 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 8 to %Qubit*), %Qubit* inttoptr (i64 9 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 10 to %Qubit*), %Qubit* inttoptr (i64 11 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 12 to %Qubit*), %Qubit* inttoptr (i64 13 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 14 to %Qubit*), %Qubit* inttoptr (i64 15 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 16 to %Qubit*), %Qubit* inttoptr (i64 17 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 18 to %Qubit*), %Qubit* inttoptr (i64 19 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 20 to %Qubit*), %Qubit* inttoptr (i64 21 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 22 to %Qubit*), %Qubit* inttoptr (i64 23 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 24 to %Qubit*), %Qubit* inttoptr (i64 25 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 26 to %Qubit*), %Qubit* inttoptr (i64 27 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 28 to %Qubit*), %Qubit* inttoptr (i64 29 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 30 to %Qubit*), %Qubit* inttoptr (i64 31 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 32 to %Qubit*), %Qubit* inttoptr (i64 33 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 34 to %Qubit*), %Qubit* inttoptr (i64 35 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 36 to %Qubit*), %Qubit* inttoptr (i64 37 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 38 to %Qubit*), %Qubit* inttoptr (i64 39 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 40 to %Qubit*), %Qubit* inttoptr (i64 41 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 42 to %Qubit*), %Qubit* inttoptr (i64 43 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 44 to %Qubit*), %Qubit* inttoptr (i64 45 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 46 to %Qubit*), %Qubit* inttoptr (i64 47 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 48 to %Qubit*), %Qubit* inttoptr (i64 49 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 50 to %Qubit*), %Qubit* inttoptr (i64 51 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 52 to %Qubit*), %Qubit* inttoptr (i64 53 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 54 to %Qubit*), %Qubit* inttoptr (i64 55 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 56 to %Qubit*), %Qubit* inttoptr (i64 57 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 58 to %Qubit*), %Qubit* inttoptr (i64 59 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 60 to %Qubit*), %Qubit* inttoptr (i64 61 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 62 to %Qubit*), %Qubit* inttoptr (i64 63 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 64 to %Qubit*), %Qubit* inttoptr (i64 65 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 66 to %Qubit*), %Qubit* inttoptr (i64 67 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 68 to %Qubit*), %Qubit* inttoptr (i64 69 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 70 to %Qubit*), %Qubit* inttoptr (i64 71 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 72 to %Qubit*), %Qubit* inttoptr (i64 73 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 74 to %Qubit*), %Qubit* inttoptr (i64 75 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 76 to %Qubit*), %Qubit* inttoptr (i64 77 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 78 to %Qubit*), %Qubit* inttoptr (i64 79 to %Qubit*)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 2 to ptr), ptr inttoptr (i64 3 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 4 to ptr), ptr inttoptr (i64 5 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 6 to ptr), ptr inttoptr (i64 7 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 8 to ptr), ptr inttoptr (i64 9 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 10 to ptr), ptr inttoptr (i64 11 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 12 to ptr), ptr inttoptr (i64 13 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 14 to ptr), ptr inttoptr (i64 15 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 16 to ptr), ptr inttoptr (i64 17 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 18 to ptr), ptr inttoptr (i64 19 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 20 to ptr), ptr inttoptr (i64 21 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 22 to ptr), ptr inttoptr (i64 23 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 24 to ptr), ptr inttoptr (i64 25 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 26 to ptr), ptr inttoptr (i64 27 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 28 to ptr), ptr inttoptr (i64 29 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 30 to ptr), ptr inttoptr (i64 31 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 32 to ptr), ptr inttoptr (i64 33 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 34 to ptr), ptr inttoptr (i64 35 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 36 to ptr), ptr inttoptr (i64 37 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 38 to ptr), ptr inttoptr (i64 39 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 40 to ptr), ptr inttoptr (i64 41 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 42 to ptr), ptr inttoptr (i64 43 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 44 to ptr), ptr inttoptr (i64 45 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 46 to ptr), ptr inttoptr (i64 47 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 48 to ptr), ptr inttoptr (i64 49 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 50 to ptr), ptr inttoptr (i64 51 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 52 to ptr), ptr inttoptr (i64 53 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 54 to ptr), ptr inttoptr (i64 55 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 56 to ptr), ptr inttoptr (i64 57 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 58 to ptr), ptr inttoptr (i64 59 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 60 to ptr), ptr inttoptr (i64 61 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 62 to ptr), ptr inttoptr (i64 63 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 64 to ptr), ptr inttoptr (i64 65 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 66 to ptr), ptr inttoptr (i64 67 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 68 to ptr), ptr inttoptr (i64 69 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 70 to ptr), ptr inttoptr (i64 71 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 72 to ptr), ptr inttoptr (i64 73 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 74 to ptr), ptr inttoptr (i64 75 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 76 to ptr), ptr inttoptr (i64 77 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 78 to ptr), ptr inttoptr (i64 79 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 2 to %Qubit*), i64 24, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 3 to %Qubit*), i64 24, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 4 to %Qubit*), i64 24, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 5 to %Qubit*), i64 24, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 6 to %Qubit*), i64 24, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 7 to %Qubit*), i64 24, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 8 to %Qubit*), i64 24, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 9 to %Qubit*), i64 24, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 10 to %Qubit*), i64 24, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 11 to %Qubit*), i64 24, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 12 to %Qubit*), i64 24, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 13 to %Qubit*), i64 24, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 14 to %Qubit*), i64 24, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 15 to %Qubit*), i64 24, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 16 to %Qubit*), i64 24, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 17 to %Qubit*), i64 24, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 18 to %Qubit*), i64 24, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 19 to %Qubit*), i64 24, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 20 to %Qubit*), i64 24, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 21 to %Qubit*), i64 24, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 22 to %Qubit*), i64 24, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 23 to %Qubit*), i64 24, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 24 to %Qubit*), i64 24, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 25 to %Qubit*), i64 24, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 26 to %Qubit*), i64 24, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 27 to %Qubit*), i64 24, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 28 to %Qubit*), i64 24, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 29 to %Qubit*), i64 24, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 30 to %Qubit*), i64 24, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 31 to %Qubit*), i64 24, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 32 to %Qubit*), i64 24, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 33 to %Qubit*), i64 24, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 34 to %Qubit*), i64 24, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 35 to %Qubit*), i64 24, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 36 to %Qubit*), i64 24, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 37 to %Qubit*), i64 24, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 38 to %Qubit*), i64 24, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 39 to %Qubit*), i64 24, i64 39) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 40 to %Qubit*), i64 23, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 41 to %Qubit*), i64 23, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 42 to %Qubit*), i64 23, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 43 to %Qubit*), i64 23, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 44 to %Qubit*), i64 23, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 45 to %Qubit*), i64 23, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 46 to %Qubit*), i64 23, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 47 to %Qubit*), i64 23, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 48 to %Qubit*), i64 23, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 49 to %Qubit*), i64 23, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 50 to %Qubit*), i64 23, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 51 to %Qubit*), i64 23, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 52 to %Qubit*), i64 23, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 53 to %Qubit*), i64 23, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 54 to %Qubit*), i64 23, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 55 to %Qubit*), i64 23, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 56 to %Qubit*), i64 23, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 57 to %Qubit*), i64 23, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 58 to %Qubit*), i64 23, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 59 to %Qubit*), i64 23, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 60 to %Qubit*), i64 23, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 61 to %Qubit*), i64 23, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 62 to %Qubit*), i64 23, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 63 to %Qubit*), i64 23, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 64 to %Qubit*), i64 23, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 65 to %Qubit*), i64 23, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 66 to %Qubit*), i64 23, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 67 to %Qubit*), i64 23, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 68 to %Qubit*), i64 23, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 69 to %Qubit*), i64 23, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 70 to %Qubit*), i64 23, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 71 to %Qubit*), i64 23, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 72 to %Qubit*), i64 23, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 73 to %Qubit*), i64 23, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 74 to %Qubit*), i64 23, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 75 to %Qubit*), i64 23, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 76 to %Qubit*), i64 23, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 77 to %Qubit*), i64 23, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 78 to %Qubit*), i64 23, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 79 to %Qubit*), i64 23, i64 39) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 2 to ptr), i64 24, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 3 to ptr), i64 24, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 4 to ptr), i64 24, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 5 to ptr), i64 24, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 6 to ptr), i64 24, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 7 to ptr), i64 24, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 8 to ptr), i64 24, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 9 to ptr), i64 24, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 10 to ptr), i64 24, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 11 to ptr), i64 24, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 12 to ptr), i64 24, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 13 to ptr), i64 24, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 14 to ptr), i64 24, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 15 to ptr), i64 24, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 16 to ptr), i64 24, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 17 to ptr), i64 24, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 18 to ptr), i64 24, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 19 to ptr), i64 24, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 20 to ptr), i64 24, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 21 to ptr), i64 24, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 22 to ptr), i64 24, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 23 to ptr), i64 24, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 24 to ptr), i64 24, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 25 to ptr), i64 24, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 26 to ptr), i64 24, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 27 to ptr), i64 24, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 28 to ptr), i64 24, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 29 to ptr), i64 24, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 30 to ptr), i64 24, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 31 to ptr), i64 24, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 32 to ptr), i64 24, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 33 to ptr), i64 24, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 34 to ptr), i64 24, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 35 to ptr), i64 24, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 36 to ptr), i64 24, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 37 to ptr), i64 24, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 38 to ptr), i64 24, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 39 to ptr), i64 24, i64 39) + call void @__quantum__qis__move__body(ptr inttoptr (i64 40 to ptr), i64 23, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 41 to ptr), i64 23, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 42 to ptr), i64 23, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 43 to ptr), i64 23, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 44 to ptr), i64 23, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 45 to ptr), i64 23, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 46 to ptr), i64 23, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 47 to ptr), i64 23, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 48 to ptr), i64 23, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 49 to ptr), i64 23, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 50 to ptr), i64 23, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 51 to ptr), i64 23, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 52 to ptr), i64 23, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 53 to ptr), i64 23, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 54 to ptr), i64 23, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 55 to ptr), i64 23, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 56 to ptr), i64 23, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 57 to ptr), i64 23, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 58 to ptr), i64 23, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 59 to ptr), i64 23, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 60 to ptr), i64 23, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 61 to ptr), i64 23, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 62 to ptr), i64 23, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 63 to ptr), i64 23, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 64 to ptr), i64 23, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 65 to ptr), i64 23, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 66 to ptr), i64 23, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 67 to ptr), i64 23, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 68 to ptr), i64 23, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 69 to ptr), i64 23, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 70 to ptr), i64 23, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 71 to ptr), i64 23, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 72 to ptr), i64 23, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 73 to ptr), i64 23, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 74 to ptr), i64 23, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 75 to ptr), i64 23, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 76 to ptr), i64 23, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 77 to ptr), i64 23, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 78 to ptr), i64 23, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 79 to ptr), i64 23, i64 39) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 80 to %Qubit*), i64 25, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 81 to %Qubit*), i64 25, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 82 to %Qubit*), i64 25, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 83 to %Qubit*), i64 25, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 84 to %Qubit*), i64 25, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 85 to %Qubit*), i64 25, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 86 to %Qubit*), i64 25, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 87 to %Qubit*), i64 25, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 88 to %Qubit*), i64 25, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 89 to %Qubit*), i64 25, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 90 to %Qubit*), i64 25, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 91 to %Qubit*), i64 25, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 92 to %Qubit*), i64 25, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 93 to %Qubit*), i64 25, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 94 to %Qubit*), i64 25, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 95 to %Qubit*), i64 25, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 96 to %Qubit*), i64 25, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 97 to %Qubit*), i64 25, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 98 to %Qubit*), i64 25, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 99 to %Qubit*), i64 25, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 100 to %Qubit*), i64 25, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 101 to %Qubit*), i64 25, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 102 to %Qubit*), i64 25, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 103 to %Qubit*), i64 25, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 104 to %Qubit*), i64 25, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 105 to %Qubit*), i64 25, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 106 to %Qubit*), i64 25, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 107 to %Qubit*), i64 25, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 108 to %Qubit*), i64 25, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 109 to %Qubit*), i64 25, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 110 to %Qubit*), i64 25, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 111 to %Qubit*), i64 25, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 112 to %Qubit*), i64 25, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 113 to %Qubit*), i64 25, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 114 to %Qubit*), i64 25, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 115 to %Qubit*), i64 25, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 116 to %Qubit*), i64 25, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 117 to %Qubit*), i64 25, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 118 to %Qubit*), i64 25, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 119 to %Qubit*), i64 25, i64 39) + call void @__quantum__qis__move__body(ptr inttoptr (i64 80 to ptr), i64 25, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 81 to ptr), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 82 to ptr), i64 25, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 83 to ptr), i64 25, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 84 to ptr), i64 25, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 85 to ptr), i64 25, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 86 to ptr), i64 25, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 87 to ptr), i64 25, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 88 to ptr), i64 25, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 89 to ptr), i64 25, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 90 to ptr), i64 25, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 91 to ptr), i64 25, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 92 to ptr), i64 25, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 93 to ptr), i64 25, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 94 to ptr), i64 25, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 95 to ptr), i64 25, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 96 to ptr), i64 25, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 97 to ptr), i64 25, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 98 to ptr), i64 25, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 99 to ptr), i64 25, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 100 to ptr), i64 25, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 101 to ptr), i64 25, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 102 to ptr), i64 25, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 103 to ptr), i64 25, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 104 to ptr), i64 25, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 105 to ptr), i64 25, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 106 to ptr), i64 25, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 107 to ptr), i64 25, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 108 to ptr), i64 25, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 109 to ptr), i64 25, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 110 to ptr), i64 25, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 111 to ptr), i64 25, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 112 to ptr), i64 25, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 113 to ptr), i64 25, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 114 to ptr), i64 25, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 115 to ptr), i64 25, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 116 to ptr), i64 25, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 117 to ptr), i64 25, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 118 to ptr), i64 25, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 119 to ptr), i64 25, i64 39) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 80 to %Qubit*), %Qubit* inttoptr (i64 81 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 82 to %Qubit*), %Qubit* inttoptr (i64 83 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 84 to %Qubit*), %Qubit* inttoptr (i64 85 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 86 to %Qubit*), %Qubit* inttoptr (i64 87 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 88 to %Qubit*), %Qubit* inttoptr (i64 89 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 90 to %Qubit*), %Qubit* inttoptr (i64 91 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 92 to %Qubit*), %Qubit* inttoptr (i64 93 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 94 to %Qubit*), %Qubit* inttoptr (i64 95 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 96 to %Qubit*), %Qubit* inttoptr (i64 97 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 98 to %Qubit*), %Qubit* inttoptr (i64 99 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 100 to %Qubit*), %Qubit* inttoptr (i64 101 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 102 to %Qubit*), %Qubit* inttoptr (i64 103 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 104 to %Qubit*), %Qubit* inttoptr (i64 105 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 106 to %Qubit*), %Qubit* inttoptr (i64 107 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 108 to %Qubit*), %Qubit* inttoptr (i64 109 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 110 to %Qubit*), %Qubit* inttoptr (i64 111 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 112 to %Qubit*), %Qubit* inttoptr (i64 113 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 114 to %Qubit*), %Qubit* inttoptr (i64 115 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 116 to %Qubit*), %Qubit* inttoptr (i64 117 to %Qubit*)) - call void @__quantum__qis__cz__body(%Qubit* inttoptr (i64 118 to %Qubit*), %Qubit* inttoptr (i64 119 to %Qubit*)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 80 to ptr), ptr inttoptr (i64 81 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 82 to ptr), ptr inttoptr (i64 83 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 84 to ptr), ptr inttoptr (i64 85 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 86 to ptr), ptr inttoptr (i64 87 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 88 to ptr), ptr inttoptr (i64 89 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 90 to ptr), ptr inttoptr (i64 91 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 92 to ptr), ptr inttoptr (i64 93 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 94 to ptr), ptr inttoptr (i64 95 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 96 to ptr), ptr inttoptr (i64 97 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 98 to ptr), ptr inttoptr (i64 99 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 100 to ptr), ptr inttoptr (i64 101 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 102 to ptr), ptr inttoptr (i64 103 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 104 to ptr), ptr inttoptr (i64 105 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 106 to ptr), ptr inttoptr (i64 107 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 108 to ptr), ptr inttoptr (i64 109 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 110 to ptr), ptr inttoptr (i64 111 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 112 to ptr), ptr inttoptr (i64 113 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 114 to ptr), ptr inttoptr (i64 115 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 116 to ptr), ptr inttoptr (i64 117 to ptr)) + call void @__quantum__qis__cz__body(ptr inttoptr (i64 118 to ptr), ptr inttoptr (i64 119 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 80 to %Qubit*), i64 22, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 81 to %Qubit*), i64 22, i64 1) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 82 to %Qubit*), i64 22, i64 2) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 83 to %Qubit*), i64 22, i64 3) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 84 to %Qubit*), i64 22, i64 4) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 85 to %Qubit*), i64 22, i64 5) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 86 to %Qubit*), i64 22, i64 6) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 87 to %Qubit*), i64 22, i64 7) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 88 to %Qubit*), i64 22, i64 8) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 89 to %Qubit*), i64 22, i64 9) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 90 to %Qubit*), i64 22, i64 10) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 91 to %Qubit*), i64 22, i64 11) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 92 to %Qubit*), i64 22, i64 12) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 93 to %Qubit*), i64 22, i64 13) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 94 to %Qubit*), i64 22, i64 14) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 95 to %Qubit*), i64 22, i64 15) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 96 to %Qubit*), i64 22, i64 16) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 97 to %Qubit*), i64 22, i64 17) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 98 to %Qubit*), i64 22, i64 18) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 99 to %Qubit*), i64 22, i64 19) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 100 to %Qubit*), i64 22, i64 20) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 101 to %Qubit*), i64 22, i64 21) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 102 to %Qubit*), i64 22, i64 22) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 103 to %Qubit*), i64 22, i64 23) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 104 to %Qubit*), i64 22, i64 24) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 105 to %Qubit*), i64 22, i64 25) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 106 to %Qubit*), i64 22, i64 26) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 107 to %Qubit*), i64 22, i64 27) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 108 to %Qubit*), i64 22, i64 28) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 109 to %Qubit*), i64 22, i64 29) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 110 to %Qubit*), i64 22, i64 30) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 111 to %Qubit*), i64 22, i64 31) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 112 to %Qubit*), i64 22, i64 32) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 113 to %Qubit*), i64 22, i64 33) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 114 to %Qubit*), i64 22, i64 34) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 115 to %Qubit*), i64 22, i64 35) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 116 to %Qubit*), i64 22, i64 36) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 117 to %Qubit*), i64 22, i64 37) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 118 to %Qubit*), i64 22, i64 38) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 119 to %Qubit*), i64 22, i64 39) + call void @__quantum__qis__move__body(ptr inttoptr (i64 80 to ptr), i64 22, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 81 to ptr), i64 22, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 82 to ptr), i64 22, i64 2) + call void @__quantum__qis__move__body(ptr inttoptr (i64 83 to ptr), i64 22, i64 3) + call void @__quantum__qis__move__body(ptr inttoptr (i64 84 to ptr), i64 22, i64 4) + call void @__quantum__qis__move__body(ptr inttoptr (i64 85 to ptr), i64 22, i64 5) + call void @__quantum__qis__move__body(ptr inttoptr (i64 86 to ptr), i64 22, i64 6) + call void @__quantum__qis__move__body(ptr inttoptr (i64 87 to ptr), i64 22, i64 7) + call void @__quantum__qis__move__body(ptr inttoptr (i64 88 to ptr), i64 22, i64 8) + call void @__quantum__qis__move__body(ptr inttoptr (i64 89 to ptr), i64 22, i64 9) + call void @__quantum__qis__move__body(ptr inttoptr (i64 90 to ptr), i64 22, i64 10) + call void @__quantum__qis__move__body(ptr inttoptr (i64 91 to ptr), i64 22, i64 11) + call void @__quantum__qis__move__body(ptr inttoptr (i64 92 to ptr), i64 22, i64 12) + call void @__quantum__qis__move__body(ptr inttoptr (i64 93 to ptr), i64 22, i64 13) + call void @__quantum__qis__move__body(ptr inttoptr (i64 94 to ptr), i64 22, i64 14) + call void @__quantum__qis__move__body(ptr inttoptr (i64 95 to ptr), i64 22, i64 15) + call void @__quantum__qis__move__body(ptr inttoptr (i64 96 to ptr), i64 22, i64 16) + call void @__quantum__qis__move__body(ptr inttoptr (i64 97 to ptr), i64 22, i64 17) + call void @__quantum__qis__move__body(ptr inttoptr (i64 98 to ptr), i64 22, i64 18) + call void @__quantum__qis__move__body(ptr inttoptr (i64 99 to ptr), i64 22, i64 19) + call void @__quantum__qis__move__body(ptr inttoptr (i64 100 to ptr), i64 22, i64 20) + call void @__quantum__qis__move__body(ptr inttoptr (i64 101 to ptr), i64 22, i64 21) + call void @__quantum__qis__move__body(ptr inttoptr (i64 102 to ptr), i64 22, i64 22) + call void @__quantum__qis__move__body(ptr inttoptr (i64 103 to ptr), i64 22, i64 23) + call void @__quantum__qis__move__body(ptr inttoptr (i64 104 to ptr), i64 22, i64 24) + call void @__quantum__qis__move__body(ptr inttoptr (i64 105 to ptr), i64 22, i64 25) + call void @__quantum__qis__move__body(ptr inttoptr (i64 106 to ptr), i64 22, i64 26) + call void @__quantum__qis__move__body(ptr inttoptr (i64 107 to ptr), i64 22, i64 27) + call void @__quantum__qis__move__body(ptr inttoptr (i64 108 to ptr), i64 22, i64 28) + call void @__quantum__qis__move__body(ptr inttoptr (i64 109 to ptr), i64 22, i64 29) + call void @__quantum__qis__move__body(ptr inttoptr (i64 110 to ptr), i64 22, i64 30) + call void @__quantum__qis__move__body(ptr inttoptr (i64 111 to ptr), i64 22, i64 31) + call void @__quantum__qis__move__body(ptr inttoptr (i64 112 to ptr), i64 22, i64 32) + call void @__quantum__qis__move__body(ptr inttoptr (i64 113 to ptr), i64 22, i64 33) + call void @__quantum__qis__move__body(ptr inttoptr (i64 114 to ptr), i64 22, i64 34) + call void @__quantum__qis__move__body(ptr inttoptr (i64 115 to ptr), i64 22, i64 35) + call void @__quantum__qis__move__body(ptr inttoptr (i64 116 to ptr), i64 22, i64 36) + call void @__quantum__qis__move__body(ptr inttoptr (i64 117 to ptr), i64 22, i64 37) + call void @__quantum__qis__move__body(ptr inttoptr (i64 118 to ptr), i64 22, i64 38) + call void @__quantum__qis__move__body(ptr inttoptr (i64 119 to ptr), i64 22, i64 39) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__tuple_record_output(i64 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__tuple_record_output(i64 0, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__rt__tuple_record_output(i64, i8*) +declare void @__quantum__rt__tuple_record_output(i64, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="120" "required_num_results"="0" } @@ -1409,66 +1392,63 @@ def test_scheduler_moves_qubits_to_iz_for_1q_gate_after_2q_gate_before_measureme str(module), """\ -%Qubit = type opaque -%Result = type opaque - @0 = internal constant [4 x i8] c"0_r\\00" define i64 @ENTRYPOINT__main() #0 { block_0: - call void @__quantum__rt__initialize(i8* null) + call void @__quantum__rt__initialize(ptr null) call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 25, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr null, i64 25, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__sx__body(%Qubit* null) - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 1 to %Qubit*)) + call void @__quantum__qis__sx__body(ptr null) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__cz__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*)) + call void @__quantum__qis__cz__body(ptr null, ptr inttoptr (i64 1 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* null, i64 24, i64 0) - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr null, i64 24, i64 0) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 25, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 25, i64 1) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__sx__body(%Qubit* inttoptr (i64 1 to %Qubit*)) + call void @__quantum__qis__sx__body(ptr inttoptr (i64 1 to ptr)) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 27, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 27, i64 1) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__mresetz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* null) + call void @__quantum__qis__mresetz__body(ptr inttoptr (i64 1 to ptr), ptr null) call void @__quantum__rt__end_parallel() call void @__quantum__rt__begin_parallel() - call void @__quantum__qis__move__body(%Qubit* inttoptr (i64 1 to %Qubit*), i64 24, i64 1) + call void @__quantum__qis__move__body(ptr inttoptr (i64 1 to ptr), i64 24, i64 1) call void @__quantum__rt__end_parallel() - call void @__quantum__rt__result_record_output(%Result* null, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @0, i64 0, i64 0)) + call void @__quantum__rt__result_record_output(ptr null, ptr @0) ret i64 0 } -declare void @__quantum__rt__initialize(i8*) +declare void @__quantum__rt__initialize(ptr) -declare void @__quantum__qis__sx__body(%Qubit*) +declare void @__quantum__qis__sx__body(ptr) -declare void @__quantum__qis__cz__body(%Qubit*, %Qubit*) +declare void @__quantum__qis__cz__body(ptr, ptr) -declare void @__quantum__qis__mresetz__body(%Qubit*, %Result*) #1 +declare void @__quantum__qis__mresetz__body(ptr, ptr) #1 -declare void @__quantum__rt__result_record_output(%Result*, i8*) +declare void @__quantum__rt__result_record_output(ptr, ptr) declare void @__quantum__rt__begin_parallel() declare void @__quantum__rt__end_parallel() -declare void @__quantum__qis__move__body(%Qubit*, i64, i64) +declare void @__quantum__qis__move__body(ptr, i64, i64) attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="1" } attributes #1 = { "irreversible" } diff --git a/source/pip/tests-integration/devices/validation/__init__.py b/source/pip/tests-integration/devices/validation/__init__.py index 17793e75fc..d5a09194af 100644 --- a/source/pip/tests-integration/devices/validation/__init__.py +++ b/source/pip/tests-integration/devices/validation/__init__.py @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. -from pyqir import QirModuleVisitor, is_entry_point, qubit_id, required_num_qubits +from pyqir import QirModuleVisitor, is_entry_point, ptr_id, required_num_qubits class ValidateBeginEndParallel(QirModuleVisitor): @@ -54,8 +54,8 @@ def _on_call_instr(self, call): super()._on_call_instr(call) def _on_qis_cz(self, call, ctrl, target): - ctrl_id = qubit_id(ctrl) - target_id = qubit_id(target) + ctrl_id = ptr_id(ctrl) + target_id = ptr_id(target) assert ( ctrl_id is not None and target_id is not None ), "Qubit ids should be known" @@ -63,17 +63,17 @@ def _on_qis_cz(self, call, ctrl, target): self.qubit_instructions[target_id].append(str(call)) def _on_qis_sx(self, call, target): - target_id = qubit_id(target) + target_id = ptr_id(target) assert target_id is not None, "Qubit id should be known" self.qubit_instructions[target_id].append(str(call)) def _on_qis_rz(self, call, angle, target): - target_id = qubit_id(target) + target_id = ptr_id(target) assert target_id is not None, "Qubit id should be known" self.qubit_instructions[target_id].append(str(call)) def _on_qis_mresetz(self, call, target, result): - target_id = qubit_id(target) + target_id = ptr_id(target) assert target_id is not None, "Qubit id should be known" self.qubit_instructions[target_id].append(str(call)) diff --git a/source/pip/tests-integration/test_base_qir.py b/source/pip/tests-integration/test_base_qir.py index 7941590f2c..05646cc568 100644 --- a/source/pip/tests-integration/test_base_qir.py +++ b/source/pip/tests-integration/test_base_qir.py @@ -11,8 +11,7 @@ Context, Module, Opcode, - qubit_id, - result_id, + ptr_id, required_num_qubits, required_num_results, ) @@ -41,13 +40,13 @@ def test_compile_qir_input_data() -> None: assert isinstance(call_m, Call) assert call_m.callee.name == "__quantum__qis__m__body" assert len(call_m.args) == 2 - assert qubit_id(call_m.args[0]) == 0 - assert result_id(call_m.args[1]) == 0 + assert ptr_id(call_m.args[0]) == 0 + assert ptr_id(call_m.args[1]) == 0 record_res = func.basic_blocks[0].instructions[2] assert isinstance(record_res, Call) assert len(record_res.args) == 2 assert record_res.callee.name == "__quantum__rt__result_record_output" - assert result_id(record_res.args[0]) == 0 + assert ptr_id(record_res.args[0]) == 0 assert func.basic_blocks[0].instructions[3].opcode == Opcode.RET diff --git a/source/pip/tests-integration/test_requirements.txt b/source/pip/tests-integration/test_requirements.txt index 395345e76f..0dba56b75a 100644 --- a/source/pip/tests-integration/test_requirements.txt +++ b/source/pip/tests-integration/test_requirements.txt @@ -1,6 +1,6 @@ pytest==9.0.3 qirrunner==0.9.0 -pyqir<0.12.0 +pyqir>=0.12.3,<0.13 qiskit-aer==0.17.2 qiskit_qasm3_import==0.6.0 expecttest==0.3.0 diff --git a/source/qdk_package/pyproject.toml b/source/qdk_package/pyproject.toml index 958c4ad49f..9bbd69088c 100644 --- a/source/qdk_package/pyproject.toml +++ b/source/qdk_package/pyproject.toml @@ -10,7 +10,7 @@ readme = "README.md" authors = [ { name = "Microsoft" } ] license = { file = "LICENSE.txt" } requires-python = ">=3.10" -dependencies = ["qsharp==0.0.0", "pyqir<0.12"] +dependencies = ["qsharp==0.0.0", "pyqir>=0.12.3,<0.13"] [project.optional-dependencies] jupyter = ["qsharp-widgets==0.0.0", "qsharp-jupyterlab==0.0.0"] diff --git a/source/qdk_package/test_requirements.txt b/source/qdk_package/test_requirements.txt index b12a203d61..e13e58d3f3 100644 --- a/source/qdk_package/test_requirements.txt +++ b/source/qdk_package/test_requirements.txt @@ -1,2 +1,2 @@ pytest -pyqir<0.12 +pyqir>=0.12.3,<0.13