Skip to main content

QIR to Quantinuum QIS (Quantum Instruction Set) compiler

Project description

QIR-QIS

Crates.io PyPI

A compiler that validates and translates QIR (Quantum Intermediate Representation) to Quantinuum QIS (Quantum Instruction Set). This tool enables quantum programs written in QIR to run on Quantinuum's quantum computing systems.

Features

  • QIR Validation: Validates QIR bitcode for correctness and spec compliance
  • QIS Translation: Compiles QIR to Quantinuum's native QIS instruction set
  • Python & Rust API: Use as a Rust library or Python package
  • CLI Tool: Command-line interface for quick compilation

See qtm-qir-reference.md for details on supported QIR features and their mapping to Quantinuum QIS.

Installation

From Source (Rust)

Requirements:

  • Rust >= 1.91.0
  • LLVM 21
# Point llvm-sys to your LLVM 21 installation
export LLVM_SYS_211_PREFIX=/path/to/llvm21

cargo build --release

The compiled binary will be available at target/release/qir-qis.

Python Package

Requirements:

  • Python >= 3.10, < 3.15
  • uv (recommended) or pip

Available pre-built wheels:

  • Linux: x86_64 (manylinux_2_28), aarch64 (manylinux_2_28)
  • macOS: x86_64, arm64 (Apple Silicon)
  • Windows: x86_64

All wheels support Python 3.10+ using the stable ABI (abi3).

# Using uv (recommended)
uv pip install qir-qis

# Using pip
pip install qir-qis

Usage

Command Line

Compile a QIR LLVM IR file to QIS bitcode:

# Basic usage
qir-qis input.ll

# With custom optimization level
qir-qis -O 3 input.ll

# Specify target architecture
qir-qis -t x86-64 input.ll

# Or using cargo
cargo run -- input.ll

This generates input.qis.bc containing the compiled QIS bitcode.

On Windows, the default mode is conservative: -O 0 -t native. Optimized conversion paths remain temporarily disabled there because the current LLVM 21 integration can crash in those modes.

Python API

See examples/python_api.py for a complete working example.

uv run examples/python_api.py

For a more comprehensive example with quantum simulation, see main.py.

Rust API

See examples/rust_api.rs for a complete working example.

cargo run --example rust_api

Platform Notes

Windows support is functional, but a few LLVM integration paths still differ from Linux and macOS:

  • Optimized conversion currently fails fast on Windows with a clear error instead of entering the known unstable LLVM path.
  • LLVM verifier failures return a generic error on Windows instead of the full verifier message.
  • Native target codegen on Windows uses conservative CPU settings instead of host CPU feature detection.
  • -O0 optimization on Windows is a validation-only fast path and does not rewrite the module triple.

These limitations are implementation details of the current LLVM/Inkwell integration rather than QIR feature differences.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for:

  • How to report issues and submit pull requests
  • Coding standards and commit message format
  • Development workflow and testing requirements

Development setup, test commands, and LLVM upgrade guidance live in DEVELOPMENT.md. Release notes are available in CHANGELOG.md.

License

Apache-2.0

Copyright Quantinuum

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

qir_qis-0.1.6-cp310-abi3-win_amd64.whl (4.2 MB view details)

Uploaded CPython 3.10+Windows x86-64

qir_qis-0.1.6-cp310-abi3-manylinux_2_28_x86_64.whl (30.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

qir_qis-0.1.6-cp310-abi3-manylinux_2_28_aarch64.whl (29.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

qir_qis-0.1.6-cp310-abi3-macosx_11_0_arm64.whl (20.9 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

qir_qis-0.1.6-cp310-abi3-macosx_10_9_x86_64.whl (21.8 MB view details)

Uploaded CPython 3.10+macOS 10.9+ x86-64

File details

Details for the file qir_qis-0.1.6-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: qir_qis-0.1.6-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.2 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qir_qis-0.1.6-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0b39486e79c1c76ec81a47cda23f15cf0894d2fb6ac1b0f3eba2a9aa6de26c12
MD5 4d9c8bfb56e114bd356df6f5a63e51ee
BLAKE2b-256 8b7c679880f11062fd18862abfe514696e2e700033a00ce841bb8ecc081ac7d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.6-cp310-abi3-win_amd64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qir_qis-0.1.6-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.6-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 21a0c4e367cbcd8a8138558887b983d6c71d938563f3abe663cc9e2396ce4fc5
MD5 208ef2e3c71b14e0b9edcd5b6bb83c5e
BLAKE2b-256 57ea92f607b427b77e8e033d7f189a8dad9d5f3a79ae14ba805934f4dea09eae

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.6-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qir_qis-0.1.6-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.6-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dcc692b286fb4a12152eedac1e1f56c846e60047647ad8be37e29f6497e19716
MD5 6dc24bad6f577fd304219e9293dcb305
BLAKE2b-256 8c32d96c4afa9d2302c2baa9041d63d22dc62b6e955b9c8f5fb86daaf9e73d6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.6-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qir_qis-0.1.6-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.6-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd907e8410c85d669e3f33ab38ab7452b43364262c0425cf923a6f9680c72599
MD5 c9cc0c9339e330f78fd9c933e7add06b
BLAKE2b-256 3907210739bee0f7273b6f9cbba3d88c4e9b982f2ccd15f14823456776d67746

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.6-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qir_qis-0.1.6-cp310-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qir_qis-0.1.6-cp310-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b09de99d6eba80f094d15235f702f6f6eb38b255d5223cdcbba121faa93a06e5
MD5 ff0db6e39b10d56d093679614a7043f4
BLAKE2b-256 79ba24d106528540e3c373900f2ea18b4b2bd4b76150b857def72f0b7403dea1

See more details on using hashes here.

Provenance

The following attestation bundles were made for qir_qis-0.1.6-cp310-abi3-macosx_10_9_x86_64.whl:

Publisher: wheels-release.yml on Quantinuum/qir-qis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page