20#include <gmock/gmock.h>
69 for (
size_t i = 0; i < src_addresses.size(); i++) {
70 memory_init_fn(memory_simulator, i);
72 ASSERT_THROW(keccak_simulator.
permutation(memory_simulator, dst_addresses.at(i), src_addresses.at(i)),
75 keccak_simulator.
permutation(memory_simulator, dst_addresses.at(i), src_addresses.at(i));
102 for (
size_t j = 0; j < 5; j++) {
103 for (
size_t k = 0; k < 5; k++) {
104 memory_simulator.
set(src_addresses[i] +
static_cast<MemoryAddress>((5 * j) + k),
105 MemoryValue::from<uint64_t>((
static_cast<uint64_t
>(j) << 32) + k + (100 * i)));
127 for (
size_t j = 0; j < 5; j++) {
128 for (
size_t k = 0; k < 5; k++) {
129 const size_t idx = (5 * j) + k;
130 if (idx == error_offset) {
131 memory_simulator.
set(
136 MemoryValue::from<uint64_t>((
static_cast<uint64_t
>(j) << 32) + k + 100));
#define AVM_KECCAKF1600_STATE_SIZE
#define AVM_HIGHEST_MEM_ADDRESS
static TaggedValue from_tag_truncating(ValueTag tag, FF value)
void permutation(MemoryInterface &memory, MemoryAddress dst_addr, MemoryAddress src_addr) override
Permutation Keccak-f[1600] consisting in AVM_KECCAKF1600_NUM_ROUNDS (24) rounds and a state of 25 64-...
void set(MemoryAddress index, MemoryValue value) override
void process(const simulation::EventEmitterInterface< simulation::BitwiseEvent >::Container &events, TraceContainer &trace)
void process(const simulation::EventEmitterInterface< simulation::GreaterThanEvent >::Container &events, TraceContainer &trace)
void process_memory_slices(const simulation::EventEmitterInterface< simulation::KeccakF1600Event >::Container &events, TraceContainer &trace)
void process_permutation(const simulation::EventEmitterInterface< simulation::KeccakF1600Event >::Container &events, TraceContainer &trace)
void process(const simulation::EventEmitterInterface< simulation::MemoryEvent >::Container &events, TraceContainer &trace)
void process_keccak_round_constants(TraceContainer &trace)
void process_misc(TraceContainer &trace, const uint32_t num_rows=MAX_AVM_TRACE_SIZE)
void process(const simulation::EventEmitterInterface< simulation::RangeCheckEvent >::Container &events, TraceContainer &trace)
RangeCheckTraceBuilder range_check_builder
PrecomputedTraceBuilder precomputed_builder
ExecutionIdManager execution_id_manager
EventEmitter< RangeCheckEvent > range_check_event_emitter
void generate_keccak_trace(TestTraceContainer &trace, const std::vector< MemoryAddress > &dst_addresses, const std::vector< MemoryAddress > &src_addresses, uint16_t space_id)
void generate_keccak_trace_with_slice_error(TestTraceContainer &trace, MemoryAddress dst_address, MemoryAddress src_address, uint16_t space_id)
void generate_keccak_trace_impl(TestTraceContainer &trace, const std::function< void(MemorySimulator &, size_t)> &memory_init_fn, const std::vector< MemoryAddress > &dst_addresses, const std::vector< MemoryAddress > &src_addresses, bool expect_error, uint16_t space_id)
void generate_keccak_trace_with_tag_error(TestTraceContainer &trace, MemoryAddress dst_address, MemoryAddress src_address, size_t error_offset, MemoryTag error_tag, uint16_t space_id)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
NoopEventEmitter< GreaterThanEvent > greater_than_event_emitter
NoopEventEmitter< FieldGreaterThanEvent > field_gt_event_emitter
NoopEventEmitter< BitwiseEvent > bitwise_event_emitter
NoopEventEmitter< KeccakF1600Event > keccak_event_emitter