Language Support
The following describes which Quil syntax is supported on Ankaa-1 and later QPUs.
Instructions
Instruction | Support | Updated |
---|---|---|
| Supported for operands of the same data type. Wraps on overflow. | Dec. 2023 |
| Supported. See Waveforms below for details. | Sep. 2020 |
| Supported. See Binary Representation below for details. | |
| Full support. | Sep. 2020 |
| Supported:
Wraps on overflow. | Dec. 2023 |
| Supported. | Sep. 2020 |
| Supported. The dynamic offset value is bounds-checked at runtime to ensure memory safety; if out of bounds, the program terminates with a fixed error code. The region and offset value are not specified in that error code and must be inferred by the program author. | Dec. 2023 |
| Supported, with caveats:
This adds a delay to the end of the basic block in which it is invoked, in order to allow enough time for the values to be read from the control system. This time is proportional to the duration of the instruction.
Some of these limitations are more fundamental than others; contact QCS support if they block you from a useful program.
Note that the signal read out in this instruction is not from one qubit alone, but from a group of qubits. The groups depend on the device architecture and can be inferred from the Quil frame definition (for Ankaa and later QPUs). Look for the following attribute:
| Sep. 2020 |
| Supported. Unit: Hertz | Sep. 2020 |
| Supported. Unit: Radians | Sep. 2020 |
| Dec. 2023 | |
| Supported in programs without Dynamic Control Flow | Dec. 2023 |
| Supported between regions of the same data type. | Dec. 2023 |
| Supported for | Jul. 2024 |
| Not supported. Estimated to be supported summer 2024. | Jul. 2024 |
| Not supported. Estimated to be supported summer 2024. | Jul. 2024 |
| Supported, but has no effect on the program. | Dec. 2023 |
| Not supported. | |
| Supported.
Diverging from the Quil spec, jump condition operand may be of any Quil datatype, not only | Dec. 2023 |
| Not supported. |
Binary Representation
All values are encoded into 48 bits within our control system. The encoding depends on the point of use, irrespective of the Quil datatype:
The point of use is the way in which the value is consumed within the program. For example, memory values and literals used as phase values are encoded differently from those used as frequency values.
If the value is only used by the Quil program itself - such as a loop index - then it is encoded per its Quil datatype:
BIT
,OCTET
,INTEGER
as signed 48-bitREAL
as s22.22 fixed-point
PRAGMAs
Unsupported and unrecognized PRAGMAs result in translation errors.
PRAGMA | Support |
---|---|
| Configures the execution post-processing pipeline. Distributed with Quil calibrations and meant for use by QCS. Editing it is "safe" but may cause unexpected readout values to be returned from execution. |
| Maps a qubit's readout stream to a memory regions to mimic shot-wise memory values.
This mapping is returned to the translation client (e.g. |
| Writes raw control system assembly into the compiled program. Limited to select users; requires special authorization and knowledge for proper use. |
Waveforms
Last updated