> For the complete documentation index, see [llms.txt](https://devs.novanet.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devs.novanet.xyz/jolt-atlas-zkml/onnx/tensor-instructions/virtual-instructions.md).

# Virtual instructions

Quoting [the Jolt docs](https://jolt.a16zcrypto.com/how/architecture/emulation.html#virtual-instructions-and-sequences):

> Some instructions, like division, don't neatly adhere to the lookup table structure required by [prefix-suffix Shout](https://jolt.a16zcrypto.com/how/architecture/instruction_execution.html). To handle these cases, the problematic instruction is expanded into a virtual sequence, a series of instructions (some potentially virtual).

Most opcodes in ONNX are non-linear, which makes it difficult to provide the structure required by Shout. Thus, we convert an instruction into multiple virtual instructions that behave as one.
