Skip to content
STIMSMITH

Instruction Shuffle

Concept WIKI v1 · 5/27/2026

Instruction Shuffle is a MorFuzz generation-time technique that randomly perturbs the order of all instructions in a fuzzing payload to increase sequence-level randomness. It mixes adjacent testing blocks, increasing instruction-sequence diversity and producing more processor states, but may sacrifice some watchpoints.

Overview

Instruction Shuffle is a randomized perturbation applied to the order of all instructions in a fuzzing payload at the end of generation. In MorFuzz, it is used to further increase sequence-level randomness after the payload has been generated. [C1]

Role in MorFuzz

MorFuzz generates fuzzing payloads that include runtime mutation primitives and uses runtime instruction morphing to transform template instructions into diverse and meaningful instruction streams during hardware simulation. [C2] Instruction Shuffle complements this process by changing the ordering of the generated payload instructions rather than mutating individual instruction fields or operands. [C1]

Effect on instruction sequences

The technique shuffles instructions so that adjacent testing blocks are mixed together. This increases the diversity of instruction sequences and can produce more processor states during fuzzing. [C3]

Trade-off

Instruction Shuffle can reduce observability in some cases because shuffling may sacrifice some watchpoints that were inserted at specific locations in testing blocks. [C4] In MorFuzz, watchpoint instructions are used by sequence patterns to expose internal DUT state, such as reading the floating-point exception flag CSR after a floating-point instruction sequence. [C5]

Position in the generation flow

Instruction Shuffle is performed at the end of fuzzing-payload generation. This placement means it acts after the payload structure has been generated, perturbing the final instruction order to increase sequence-level randomness. [C1]

CITATIONS

5 sources
5 citations
[1] Instruction Shuffle is a randomized perturbation of the order of all instructions in the fuzzing payload, performed at the end of generation to increase sequence-level randomness. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing enhanced Synchronizable Co-simulation
[2] MorFuzz generates fuzzing payloads containing runtime mutation primitives and uses runtime instruction morphing to morph template instructions into diverse and meaningful instruction streams. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing enhanced Synchronizable Co-simulation
[3] Instruction Shuffle mixes adjacent testing blocks, increasing the diversity of instruction sequences and producing more processor states. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing enhanced Synchronizable Co-simulation
[5] MorFuzz sequence patterns insert watchpoint instructions at specific locations to expose DUT internal state, such as checking the floating-point exception flag CSR after a floating-point instruction sequence. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing enhanced Synchronizable Co-simulation