The QIR specification does not provide an exhaustive list of "runtime" (rt) or "quantum instruction set" (qis) functions: we've only implemented the most common in RuntimeInterface and QuantumInterface, respectively.
LLVM's execution engine provides a InstallLazyFunctionCreator method to create new methods on the fly. Create a generic function in QuantumInterface.hh and RuntimeInterface that take the symbol name and the function arguments so that applications can add new functions more easily.
To complete this task you must add:
- A suitable lazy function creator in
src/qiree/Executor.cc to bind the symbol so it calls out to q_interface_/r_interface_ and passes the function name and arguments.
- A new
.ll example to be placed in the folder examples/unitaryhack2025 that contains "unexpected" qis/rt function names, and an .ll "failure mode" example that contains a symbol that doesn't have the qis/rt prefix.
- A test fixture in
Executor.test.cc demonstrating the new capability works for the given qis/rt functions, and a test demonstrating that the framework catches and (if possible) gracefully fails when encountering unexpected symbols.
The QIR specification does not provide an exhaustive list of "runtime" (rt) or "quantum instruction set" (qis) functions: we've only implemented the most common in RuntimeInterface and QuantumInterface, respectively.
LLVM's execution engine provides a InstallLazyFunctionCreator method to create new methods on the fly. Create a generic function in
QuantumInterface.hhandRuntimeInterfacethat take the symbol name and the function arguments so that applications can add new functions more easily.To complete this task you must add:
src/qiree/Executor.ccto bind the symbol so it calls out toq_interface_/r_interface_and passes the function name and arguments..llexample to be placed in the folderexamples/unitaryhack2025that contains "unexpected" qis/rt function names, and an.ll"failure mode" example that contains a symbol that doesn't have the qis/rt prefix.Executor.test.ccdemonstrating the new capability works for the given qis/rt functions, and a test demonstrating that the framework catches and (if possible) gracefully fails when encountering unexpected symbols.