Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::avm2::fuzzer::InstructionMutator Class Reference

#include <instruction.hpp>

Public Member Functions

 InstructionMutator (uint32_t base_offset, const FuzzerContext &context)
 
 InstructionMutator (const InstructionBlock &instruction_block, const FuzzerContext &context)
 
std::vector< FuzzInstructiongenerate_instruction (std::mt19937_64 &rng)
 Generate one instruction and optionally backfill.
 
void mutate_instruction (FuzzInstruction &instruction, std::mt19937_64 &rng)
 

Public Attributes

uint32_t base_offset
 
const FuzzerContextcontext
 

Private Member Functions

AddressingMode generate_addressing_mode (std::mt19937_64 &rng)
 
VariableRef generate_variable_ref (std::mt19937_64 &rng)
 
AddressRef generate_address_ref (std::mt19937_64 &rng, uint32_t max_operand_value)
 
std::vector< FuzzInstructiongenerate_ecadd_instruction (std::mt19937_64 &rng)
 
template<typename InstructionType >
std::vector< FuzzInstructiongenerate_alu_with_matching_tags (std::mt19937_64 &rng, uint32_t max_operand)
 
template<typename InstructionType >
std::vector< FuzzInstructiongenerate_alu_with_matching_tags_not_ff (std::mt19937_64 &rng, uint32_t max_operand)
 
std::vector< FuzzInstructiongenerate_fdiv_instruction (std::mt19937_64 &rng, uint32_t max_operand)
 
std::vector< FuzzInstructiongenerate_keccakf_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_sha256compression_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_toradixbe_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_sload_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_emitunencryptedlog_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_call_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_getcontractinstance_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_notehashexists_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_returndatasize_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_returndatacopy_instruction (std::mt19937_64 &rng)
 
std::vector< FuzzInstructiongenerate_calldatacopy_instruction (std::mt19937_64 &rng)
 
void mutate_variable_ref (VariableRef &variable, std::mt19937_64 &rng, std::optional< MemoryTag > default_tag)
 Most of the tags will be equal to the default tag.
 
void mutate_address_ref (AddressRef &address, std::mt19937_64 &rng, uint32_t max_operand_value)
 
void mutate_param_ref (ParamRef &param, std::mt19937_64 &rng, std::optional< MemoryTag > default_tag, uint32_t max_operand_value)
 
template<typename BinaryInstructionType >
void mutate_binary_instruction_8 (BinaryInstructionType &instruction, std::mt19937_64 &rng)
 
template<typename BinaryInstructionType >
void mutate_binary_instruction_16 (BinaryInstructionType &instruction, std::mt19937_64 &rng)
 
void mutate_not_8_instruction (NOT_8_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_set_8_instruction (SET_8_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_set_16_instruction (SET_16_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_set_32_instruction (SET_32_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_set_64_instruction (SET_64_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_set_128_instruction (SET_128_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_set_ff_instruction (SET_FF_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_mov_8_instruction (MOV_8_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_mov_16_instruction (MOV_16_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_not_16_instruction (NOT_16_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_cast_8_instruction (CAST_8_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_cast_16_instruction (CAST_16_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_sstore_instruction (SSTORE_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_sload_instruction (SLOAD_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_getenvvar_instruction (GETENVVAR_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_emit_nullifier_instruction (EMITNULLIFIER_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_nullifier_exists_instruction (NULLIFIEREXISTS_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_l1tol2msgexists_instruction (L1TOL2MSGEXISTS_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_emit_note_hash_instruction (EMITNOTEHASH_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_note_hash_exists_instruction (NOTEHASHEXISTS_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_calldatacopy_instruction (CALLDATACOPY_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_sendl2tol1msg_instruction (SENDL2TOL1MSG_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_emitunencryptedlog_instruction (EMITUNENCRYPTEDLOG_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_call_instruction (CALL_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_returndatasize_instruction (RETURNDATASIZE_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_returndatacopy_instruction (RETURNDATACOPY_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_getcontractinstance_instruction (GETCONTRACTINSTANCE_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_successcopy_instruction (SUCCESSCOPY_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_ecadd_instruction (ECADD_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_poseidon2perm_instruction (POSEIDON2PERM_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_keccakf1600_instruction (KECCAKF1600_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_sha256compression_instruction (SHA256COMPRESSION_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_toradixbe_instruction (TORADIXBE_Instruction &instruction, std::mt19937_64 &rng)
 
void mutate_debuglog_instruction (DEBUGLOG_Instruction &instruction, std::mt19937_64 &rng)
 

Detailed Description

Definition at line 12 of file instruction.hpp.

Constructor & Destructor Documentation

◆ InstructionMutator() [1/2]

bb::avm2::fuzzer::InstructionMutator::InstructionMutator ( uint32_t  base_offset,
const FuzzerContext context 
)
inline

Definition at line 14 of file instruction.hpp.

◆ InstructionMutator() [2/2]

bb::avm2::fuzzer::InstructionMutator::InstructionMutator ( const InstructionBlock instruction_block,
const FuzzerContext context 
)
inline

Definition at line 19 of file instruction.hpp.

Member Function Documentation

◆ generate_address_ref()

AddressRef bb::avm2::fuzzer::InstructionMutator::generate_address_ref ( std::mt19937_64 rng,
uint32_t  max_operand_value 
)
private

Definition at line 356 of file instruction.cpp.

◆ generate_addressing_mode()

AddressingMode bb::avm2::fuzzer::InstructionMutator::generate_addressing_mode ( std::mt19937_64 rng)
private

Definition at line 351 of file instruction.cpp.

◆ generate_alu_with_matching_tags()

template<typename InstructionType >
std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_alu_with_matching_tags ( std::mt19937_64 rng,
uint32_t  max_operand 
)
private

Definition at line 485 of file instruction.cpp.

◆ generate_alu_with_matching_tags_not_ff()

template<typename InstructionType >
std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_alu_with_matching_tags_not_ff ( std::mt19937_64 rng,
uint32_t  max_operand 
)
private

Definition at line 512 of file instruction.cpp.

◆ generate_call_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_call_instruction ( std::mt19937_64 rng)
private

Definition at line 791 of file instruction.cpp.

◆ generate_calldatacopy_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_calldatacopy_instruction ( std::mt19937_64 rng)
private

Definition at line 939 of file instruction.cpp.

◆ generate_ecadd_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_ecadd_instruction ( std::mt19937_64 rng)
private

Definition at line 417 of file instruction.cpp.

◆ generate_emitunencryptedlog_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_emitunencryptedlog_instruction ( std::mt19937_64 rng)
private

Definition at line 760 of file instruction.cpp.

◆ generate_fdiv_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_fdiv_instruction ( std::mt19937_64 rng,
uint32_t  max_operand 
)
private

Definition at line 542 of file instruction.cpp.

◆ generate_getcontractinstance_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_getcontractinstance_instruction ( std::mt19937_64 rng)
private

Definition at line 845 of file instruction.cpp.

◆ generate_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_instruction ( std::mt19937_64 rng)

Generate one instruction and optionally backfill.

Definition at line 89 of file instruction.cpp.

◆ generate_keccakf_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_keccakf_instruction ( std::mt19937_64 rng)
private

Definition at line 585 of file instruction.cpp.

◆ generate_notehashexists_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_notehashexists_instruction ( std::mt19937_64 rng)
private

Definition at line 874 of file instruction.cpp.

◆ generate_returndatacopy_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_returndatacopy_instruction ( std::mt19937_64 rng)
private

Definition at line 910 of file instruction.cpp.

◆ generate_returndatasize_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_returndatasize_instruction ( std::mt19937_64 rng)
private

Definition at line 905 of file instruction.cpp.

◆ generate_sha256compression_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_sha256compression_instruction ( std::mt19937_64 rng)
private

Definition at line 611 of file instruction.cpp.

◆ generate_sload_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_sload_instruction ( std::mt19937_64 rng)
private

Definition at line 724 of file instruction.cpp.

◆ generate_toradixbe_instruction()

std::vector< FuzzInstruction > bb::avm2::fuzzer::InstructionMutator::generate_toradixbe_instruction ( std::mt19937_64 rng)
private

Definition at line 655 of file instruction.cpp.

◆ generate_variable_ref()

VariableRef bb::avm2::fuzzer::InstructionMutator::generate_variable_ref ( std::mt19937_64 rng)
private

Definition at line 382 of file instruction.cpp.

◆ mutate_address_ref()

void bb::avm2::fuzzer::InstructionMutator::mutate_address_ref ( AddressRef address,
std::mt19937_64 rng,
uint32_t  max_operand_value 
)
private

Definition at line 365 of file instruction.cpp.

◆ mutate_binary_instruction_16()

template<typename BinaryInstructionType >
void bb::avm2::fuzzer::InstructionMutator::mutate_binary_instruction_16 ( BinaryInstructionType &  instruction,
std::mt19937_64 rng 
)
private

Definition at line 996 of file instruction.cpp.

◆ mutate_binary_instruction_8()

template<typename BinaryInstructionType >
void bb::avm2::fuzzer::InstructionMutator::mutate_binary_instruction_8 ( BinaryInstructionType &  instruction,
std::mt19937_64 rng 
)
private

Definition at line 979 of file instruction.cpp.

◆ mutate_call_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_call_instruction ( CALL_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1365 of file instruction.cpp.

◆ mutate_calldatacopy_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_calldatacopy_instruction ( CALLDATACOPY_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1316 of file instruction.cpp.

◆ mutate_cast_16_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_cast_16_instruction ( CAST_16_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1185 of file instruction.cpp.

◆ mutate_cast_8_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_cast_8_instruction ( CAST_8_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1169 of file instruction.cpp.

◆ mutate_debuglog_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_debuglog_instruction ( DEBUGLOG_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1540 of file instruction.cpp.

◆ mutate_ecadd_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_ecadd_instruction ( ECADD_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1443 of file instruction.cpp.

◆ mutate_emit_note_hash_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_emit_note_hash_instruction ( EMITNOTEHASH_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1287 of file instruction.cpp.

◆ mutate_emit_nullifier_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_emit_nullifier_instruction ( EMITNULLIFIER_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1246 of file instruction.cpp.

◆ mutate_emitunencryptedlog_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_emitunencryptedlog_instruction ( EMITUNENCRYPTEDLOG_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1351 of file instruction.cpp.

◆ mutate_getcontractinstance_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_getcontractinstance_instruction ( GETCONTRACTINSTANCE_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1416 of file instruction.cpp.

◆ mutate_getenvvar_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_getenvvar_instruction ( GETENVVAR_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1233 of file instruction.cpp.

◆ mutate_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_instruction ( FuzzInstruction instruction,
std::mt19937_64 rng 
)

Definition at line 281 of file instruction.cpp.

◆ mutate_keccakf1600_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_keccakf1600_instruction ( KECCAKF1600_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1485 of file instruction.cpp.

◆ mutate_l1tol2msgexists_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_l1tol2msgexists_instruction ( L1TOL2MSGEXISTS_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1270 of file instruction.cpp.

◆ mutate_mov_16_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_mov_16_instruction ( MOV_16_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1140 of file instruction.cpp.

◆ mutate_mov_8_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_mov_8_instruction ( MOV_8_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1124 of file instruction.cpp.

◆ mutate_not_16_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_not_16_instruction ( NOT_16_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1156 of file instruction.cpp.

◆ mutate_not_8_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_not_8_instruction ( NOT_8_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1012 of file instruction.cpp.

◆ mutate_note_hash_exists_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_note_hash_exists_instruction ( NOTEHASHEXISTS_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1299 of file instruction.cpp.

◆ mutate_nullifier_exists_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_nullifier_exists_instruction ( NULLIFIEREXISTS_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1253 of file instruction.cpp.

◆ mutate_param_ref()

void bb::avm2::fuzzer::InstructionMutator::mutate_param_ref ( ParamRef param,
std::mt19937_64 rng,
std::optional< MemoryTag default_tag,
uint32_t  max_operand_value 
)
private

Definition at line 968 of file instruction.cpp.

◆ mutate_poseidon2perm_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_poseidon2perm_instruction ( POSEIDON2PERM_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1472 of file instruction.cpp.

◆ mutate_returndatacopy_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_returndatacopy_instruction ( RETURNDATACOPY_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1399 of file instruction.cpp.

◆ mutate_returndatasize_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_returndatasize_instruction ( RETURNDATASIZE_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1393 of file instruction.cpp.

◆ mutate_sendl2tol1msg_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_sendl2tol1msg_instruction ( SENDL2TOL1MSG_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1332 of file instruction.cpp.

◆ mutate_set_128_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_set_128_instruction ( SET_128_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1089 of file instruction.cpp.

◆ mutate_set_16_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_set_16_instruction ( SET_16_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1041 of file instruction.cpp.

◆ mutate_set_32_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_set_32_instruction ( SET_32_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1057 of file instruction.cpp.

◆ mutate_set_64_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_set_64_instruction ( SET_64_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1073 of file instruction.cpp.

◆ mutate_set_8_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_set_8_instruction ( SET_8_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1025 of file instruction.cpp.

◆ mutate_set_ff_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_set_ff_instruction ( SET_FF_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1108 of file instruction.cpp.

◆ mutate_sha256compression_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_sha256compression_instruction ( SHA256COMPRESSION_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1498 of file instruction.cpp.

◆ mutate_sload_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_sload_instruction ( SLOAD_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1217 of file instruction.cpp.

◆ mutate_sstore_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_sstore_instruction ( SSTORE_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1201 of file instruction.cpp.

◆ mutate_successcopy_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_successcopy_instruction ( SUCCESSCOPY_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1433 of file instruction.cpp.

◆ mutate_toradixbe_instruction()

void bb::avm2::fuzzer::InstructionMutator::mutate_toradixbe_instruction ( TORADIXBE_Instruction instruction,
std::mt19937_64 rng 
)
private

Definition at line 1515 of file instruction.cpp.

◆ mutate_variable_ref()

void bb::avm2::fuzzer::InstructionMutator::mutate_variable_ref ( VariableRef variable,
std::mt19937_64 rng,
std::optional< MemoryTag default_tag 
)
private

Most of the tags will be equal to the default tag.

Definition at line 392 of file instruction.cpp.

Member Data Documentation

◆ base_offset

uint32_t bb::avm2::fuzzer::InstructionMutator::base_offset

Definition at line 28 of file instruction.hpp.

◆ context

const FuzzerContext& bb::avm2::fuzzer::InstructionMutator::context

Definition at line 29 of file instruction.hpp.


The documentation for this class was generated from the following files: