Conversions

Internal Conversions

-qc-to-qco

Convert QC dialect to QCO dialect.

This pass converts all operations from the QC dialect to their equivalent operations in the QCO dialect. It handles the transformation of qubit references in QC to qubit values in QCO, ensuring that the semantics of quantum operations are preserved during the conversion process.

-qco-to-qc

Convert QCO dialect to QC dialect.

This pass converts all operations from the QCO dialect to their equivalent operations in the QC dialect. It handles the transformation of qubit values in QCO to qubit references in QC, ensuring that the semantics of quantum operations are preserved during the conversion process.

jeff Conversions

-qco-to-jeff

Convert QCO operations to jeff operations

This pass converts all operations from the QCO dialect to their equivalent operations in the jeff dialect. It ensures that the returned module is a valid jeff module that can be serialized.

Note that this pass is still in development as QCO and jeff do not have full feature parity yet.

qco.static is currently converted to jeff.qubit_alloc because jeff does not yet represent static (index-based) qubits; the index is not preserved in jeff IR. Round-tripping through jeff therefore maps static qubits to dynamic allocation on the QCO side.

-jeff-to-qco

Convert jeff operations to QCO operations

This pass converts all operations from the jeff dialect to their equivalent operations in the QCO dialect. It ensures that the returned module is a valid QCO module.

Note that this pass is still in development as QCO and jeff do not have full feature parity yet.

Known limitations:

  • Gates with a non-trivial power are currently not supported

  • Only specific CustomOps are currently supported

  • Only specific PPROps are currently supported

  • WhileOp and DoWhileOp are currently not supported

  • Support for multiple functions is currently limited

QIR Conversions