diff --git a/specification/under_development/profiles/Adaptive_Profile.md b/specification/under_development/profiles/Adaptive_Profile.md index f10da4a..ca3e6d1 100644 --- a/specification/under_development/profiles/Adaptive_Profile.md +++ b/specification/under_development/profiles/Adaptive_Profile.md @@ -51,15 +51,6 @@ support more advanced adaptive computations: 9. Multiple return points. - - The use of these optional features is represented as a [module flag](#module-flags-metadata) in the program IR. Any backend that supports capabilities 1-4, and as many of capabilities 5-9 as it desires, is considered @@ -72,7 +63,7 @@ capabilities are outlined in the following sections. ## Mandatory Capabilities -**Bullet 1: Quantum transformations**
+### Bullet 1: Quantum transformations The set of available instructions that transform the quantum state may vary depending on the targeted backend. The profile specification defines how to @@ -87,7 +78,7 @@ role of the QIS, recommendations for front- and backend providers, as well as the distinction between runtime functions and quantum instructions, can be found in this [document](../Instruction_Set.md). -**Bullet 2: Measurements**
+### Bullet 2: Measurements As for the Base Profile, a measurement function is a QIS function marked with an [`irreversible` attribute](./Base_Profile.md#quantum-instruction-set) that @@ -104,7 +95,7 @@ supported QIS, without impacting the state of the non-measured qubits. Furthermore, it must be possible to use the measured qubit(s) afterwards and apply additional quantum instructions to the same qubit(s). -**Bullet 3: Forward Branching**
+### Bullet 3: Forward Branching Additionally, the Adaptive Profile requires that it must be possible to take action based on a measurement result. Specifically, it must be possible to @@ -149,7 +140,7 @@ conditionally perform quantum instructions depending on measurement outcomes, for example when performing real-time error-correction as part of a quantum programs. -**Bullet 4: Program output**
+### Bullet 4: Program output The specifications of QIR and all its profiles need to accurately reflect the program intent. This includes being able to define and customize the program @@ -779,19 +770,6 @@ identified by an integer value that is bitcast to a pointer to match the expected type. How such an integer value is interpreted and specifically how it relates to hardware resources is ultimately up to the executing backend. - - The integer value that is cast must be either a constant, or a phi node of integer type if [iterations](#bullet-7-backwards-branching) are used/supported. If the cast value is a phi node, it must not directly or indirectly depend on @@ -903,7 +881,7 @@ measurements and boolean computations: %2 = and i1 %0, %1 br i1 %2, label %then, label %continue -then: +then: tail call void @__quantum__qis__x__body(%Qubit* nonnull inttoptr (i64 2 to %Qubit*)) br label %continue diff --git a/specification/under_development/profiles/Base_Profile.md b/specification/under_development/profiles/Base_Profile.md index 5867156..1f135bd 100644 --- a/specification/under_development/profiles/Base_Profile.md +++ b/specification/under_development/profiles/Base_Profile.md @@ -26,7 +26,9 @@ fundamentally consist of unitary transformations of the quantum state as well as measurements at the end of the program. More details about each of the bullets are outlined below. -**Bullet 1: Quantum transformations**
+## Mandatory Capabilities + +### Bullet 1: Quantum transformations The set of available instructions that transform the quantum state may vary depending on the targeted backend. The profile specification defines how to @@ -41,7 +43,7 @@ the QIS, recommendations for front- and backend providers, as well as the distinction between runtime functions and quantum instructions can be found in [this document](../Instruction_Set.md). -**Bullet 2: Measurements**
+### Bullet 2: Measurements The second requirement should be taken to mean that a Base Profile compliant program does *not* apply instructions to a qubit after it has been measured; @@ -54,7 +56,7 @@ to measure only a subset of all available qubits at a time. - Executing a Base Profile compliant program does not require support for applying quantum instructions dependent on measurement outcomes. -**Bullet 3: Program output**
+### Bullet 3: Program output The QIR specification and its profiles describe a mechanism to accurately reflect program intent with regard to program output. The Base Profile