52 size_t minimum_size = 64 + (
sizeof(int) * 2);
54 if (size < minimum_size) {
59 FuzzedDataProvider fuzzed_data(
data, size);
67 int op_type = fuzzed_data.ConsumeIntegralInRange<
int>(0, 2);
72 bool bitwise_error =
false;
105 { avm2::Column::execution_mem_tag_reg_0_,
static_cast<uint8_t
>(
a.get_tag()) },
106 { avm2::Column::execution_mem_tag_reg_1_,
static_cast<uint8_t
>(
b.get_tag()) },
107 { avm2::Column::execution_mem_tag_reg_2_,
static_cast<uint8_t
>(c.
get_tag()) },
108 { avm2::Column::execution_register_0_,
a.as_ff() },
109 { avm2::Column::execution_register_1_,
b.as_ff() },
110 { avm2::Column::execution_register_2_, c.
as_ff() },
111 { avm2::Column::execution_sel_exec_dispatch_bitwise, 1 },
112 { avm2::Column::execution_sel_opcode_error, bitwise_error ? 1 : 0 },
113 { avm2::Column::execution_subtrace_operation_id, op_id },
120 if (getenv(
"AVM_DEBUG") !=
nullptr) {
121 info(
"Debugging trace:");
126 check_relation<bitwise_rel>(trace);
127 check_all_interactions<BitwiseTraceBuilder>(trace);
128 check_interaction<ExecutionTraceBuilder, bb::avm2::lookup_execution_dispatch_to_bitwise_settings>(trace);
133 for (uint8_t i = 1; i < 17; i++) {
136 { avm2::Column::bitwise_op_id, 0 },
137 { avm2::Column::bitwise_start, 0 },
138 { avm2::Column::bitwise_sel_get_ctr, 0 },
139 { avm2::Column::bitwise_last, 0 },
140 { avm2::Column::bitwise_acc_ia, 0 },
141 { avm2::Column::bitwise_acc_ib, 0 },
142 { avm2::Column::bitwise_acc_ic, 0 },
143 { avm2::Column::bitwise_ia_byte, 0 },
144 { avm2::Column::bitwise_ib_byte, 0 },
145 { avm2::Column::bitwise_ic_byte, 0 },
146 { avm2::Column::bitwise_tag_a, 0 },
147 { avm2::Column::bitwise_tag_b, 0 },
148 { avm2::Column::bitwise_tag_c, 0 },
149 { avm2::Column::bitwise_sel_tag_ff_err, 0 },
150 { avm2::Column::bitwise_sel_tag_mismatch_err, 0 },
151 { avm2::Column::bitwise_err, 0 },
152 { avm2::Column::bitwise_tag_a_inv, 0 },
153 { avm2::Column::bitwise_tag_ab_diff_inv, 0 },
154 { avm2::Column::bitwise_ctr, 0 },
155 { avm2::Column::bitwise_ctr_inv, 0 },
156 { avm2::Column::bitwise_ctr_min_one_inv, 0 },
157 { avm2::Column::bitwise_sel, 0 },
158 { avm2::Column::bitwise_tag_a_inv, 0 },
159 { avm2::Column::bitwise_tag_ab_diff_inv, 0 },