> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qbraid.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenQASM 3 conversions

<CodeGroup>
  ```python Code theme={null}
  from qbraid_qir.qasm3 import qasm3_to_qir

  program = """
  OPENQASM 3;
  include "stdgates.inc";

  qubit[2] q;
  bit[2] c;

  h q[0];
  cx q[0], q[1];

  measure q[0] -> c[0];
  measure q[1] -> c[1];
  """

  module = qasm3_to_qir(program, name="bell")

  ir = str(module)

  ```

  ```output Output theme={null}
  ; ModuleID = 'bell'
  source_filename = "bell"

  %Qubit = type opaque
  %Result = type opaque

  define void @main() #0 {
  entry:
    call void @__quantum__qis__h__body(%Qubit* inttoptr (i64 0 to %Qubit*))
    call void @__quantum__qis__cnot__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*))
    call void @__quantum__qis__mz__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
    call void @__quantum__qis__mz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*))
    ret void
  }

  declare void @__quantum__qis__h__body(%Qubit*)
  declare void @__quantum__qis__cnot__body(%Qubit*, %Qubit*)
  declare void @__quantum__qis__mz__body(%Qubit*, %Result*) #1

  attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="custom" "required_num_qubits"="2" "required_num_results"="2" }
  attributes #1 = { "irreversible" }

  !llvm.module.flags = !{!0, !1, !2, !3}
  !0 = !{i32 1, !"qir_major_version", i32 1}
  !1 = !{i32 7, !"qir_minor_version", i32 0}
  !2 = !{i32 1, !"dynamic_qubit_management", i1 false}
  !3 = !{i32 1, !"dynamic_result_management", i1 false}
  ```
</CodeGroup>

Execute the QIR program using the qir-runner command line tool:

```bash theme={null}
$ qir-runner -f bell.bc
```

[https://github.com/qBraid/qbraid-qir/tree/main/test-containers](https://github.com/qBraid/qbraid-qir/tree/main/test-containers)
