Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
execution_impl.hpp
Go to the documentation of this file.
1// AUTOGENERATED FILE
2#pragma once
3
6
7namespace bb::avm2 {
8
9template <typename FF_>
10template <typename ContainerOverSubrelations, typename AllEntities>
11void executionImpl<FF_>::accumulate(ContainerOverSubrelations& evals,
12 const AllEntities& in,
13 [[maybe_unused]] const RelationParameters<FF_>&,
14 [[maybe_unused]] const FF_& scaling_factor)
15{
16 using C = ColumnAndShifts;
17
18 const auto constants_MEM_TAG_U1 = FF(1);
19 const auto constants_MEM_TAG_U32 = FF(4);
20 const auto constants_AVM_SUBTRACE_ID_EXECUTION = FF(1);
21 const auto constants_AVM_SUBTRACE_ID_ALU = FF(2);
22 const auto constants_AVM_SUBTRACE_ID_BITWISE = FF(4);
23 const auto constants_AVM_SUBTRACE_ID_CAST = FF(8);
24 const auto constants_AVM_SUBTRACE_ID_CALLDATA_COPY = FF(16);
25 const auto constants_AVM_SUBTRACE_ID_RETURNDATA_COPY = FF(32);
26 const auto constants_AVM_SUBTRACE_ID_SET = FF(64);
27 const auto constants_AVM_SUBTRACE_ID_GETCONTRACTINSTANCE = FF(128);
28 const auto constants_AVM_SUBTRACE_ID_EMITUNENCRYPTEDLOG = FF(256);
29 const auto constants_AVM_SUBTRACE_ID_POSEIDON2_PERM = FF(512);
30 const auto constants_AVM_SUBTRACE_ID_SHA256_COMPRESSION = FF(1024);
31 const auto constants_AVM_SUBTRACE_ID_KECCAKF1600 = FF(2048);
32 const auto constants_AVM_SUBTRACE_ID_ECC = FF(4096);
33 const auto constants_AVM_SUBTRACE_ID_TO_RADIX = FF(8192);
34 const auto constants_AVM_DYN_GAS_ID_CALLDATACOPY = FF(1);
35 const auto constants_AVM_DYN_GAS_ID_RETURNDATACOPY = FF(2);
36 const auto constants_AVM_DYN_GAS_ID_TORADIX = FF(4);
37 const auto constants_AVM_DYN_GAS_ID_BITWISE = FF(8);
38 const auto constants_AVM_DYN_GAS_ID_EMITUNENCRYPTEDLOG = FF(16);
39 const auto constants_AVM_DYN_GAS_ID_SSTORE = FF(32);
40 const auto constants_AVM_EXEC_OP_ID_GETENVVAR = FF(1);
41 const auto constants_AVM_EXEC_OP_ID_MOV = FF(2);
42 const auto constants_AVM_EXEC_OP_ID_JUMP = FF(4);
43 const auto constants_AVM_EXEC_OP_ID_JUMPI = FF(8);
44 const auto constants_AVM_EXEC_OP_ID_CALL = FF(16);
45 const auto constants_AVM_EXEC_OP_ID_STATICCALL = FF(32);
46 const auto constants_AVM_EXEC_OP_ID_INTERNALCALL = FF(64);
47 const auto constants_AVM_EXEC_OP_ID_INTERNALRETURN = FF(128);
48 const auto constants_AVM_EXEC_OP_ID_RETURN = FF(256);
49 const auto constants_AVM_EXEC_OP_ID_REVERT = FF(512);
50 const auto constants_AVM_EXEC_OP_ID_SUCCESSCOPY = FF(1024);
51 const auto constants_AVM_EXEC_OP_ID_RETURNDATASIZE = FF(2048);
52 const auto constants_AVM_EXEC_OP_ID_DEBUGLOG = FF(4096);
53 const auto constants_AVM_EXEC_OP_ID_SLOAD = FF(8192);
54 const auto constants_AVM_EXEC_OP_ID_SSTORE = FF(16384);
55 const auto constants_AVM_EXEC_OP_ID_NOTEHASH_EXISTS = FF(32768);
56 const auto constants_AVM_EXEC_OP_ID_EMIT_NOTEHASH = FF(65536);
57 const auto constants_AVM_EXEC_OP_ID_L1_TO_L2_MESSAGE_EXISTS = FF(131072);
58 const auto constants_AVM_EXEC_OP_ID_NULLIFIER_EXISTS = FF(262144);
59 const auto constants_AVM_EXEC_OP_ID_EMIT_NULLIFIER = FF(524288);
60 const auto constants_AVM_EXEC_OP_ID_SENDL2TOL1MSG = FF(1048576);
61 const auto execution_NOT_LAST_EXEC = in.get(C::execution_sel) * in.get(C::execution_sel_shift);
62 const auto execution_SEL_SHOULD_RESOLVE_ADDRESS = in.get(C::execution_sel_instruction_fetching_success);
63
64 {
65 using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
66 auto tmp = static_cast<View>(in.get(C::execution_sel)) * (FF(1) - static_cast<View>(in.get(C::execution_sel)));
67 std::get<0>(evals) += (tmp * scaling_factor);
68 }
69 {
70 using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
71 auto tmp =
72 static_cast<View>(in.get(C::execution_last)) * (FF(1) - static_cast<View>(in.get(C::execution_last)));
73 std::get<1>(evals) += (tmp * scaling_factor);
74 }
75 { // ENQUEUED_CALL_START
76 using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
77 auto tmp = (static_cast<View>(in.get(C::execution_enqueued_call_start_shift)) -
78 (static_cast<View>(in.get(C::precomputed_first_row)) +
79 static_cast<View>(in.get(C::execution_enqueued_call_end))) *
80 static_cast<View>(in.get(C::execution_sel_shift)));
81 std::get<2>(evals) += (tmp * scaling_factor);
82 }
83 { // ENQUEUED_CALL_END
84 using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
85 auto tmp = (static_cast<View>(in.get(C::execution_enqueued_call_end)) -
86 static_cast<View>(in.get(C::execution_sel_exit_call)) *
87 (FF(1) - static_cast<View>(in.get(C::execution_has_parent_ctx))));
88 std::get<3>(evals) += (tmp * scaling_factor);
89 }
90 {
91 using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
92 auto tmp = (static_cast<View>(in.get(C::execution_sel_first_row_in_context_shift)) -
93 (static_cast<View>(in.get(C::execution_sel_enter_call)) +
94 static_cast<View>(in.get(C::execution_enqueued_call_start_shift))));
95 std::get<4>(evals) += (tmp * scaling_factor);
96 }
97 { // TRACE_CONTINUITY
98 using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
99 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel))) *
100 (FF(1) - static_cast<View>(in.get(C::precomputed_first_row))) *
101 static_cast<View>(in.get(C::execution_sel_shift));
102 std::get<5>(evals) += (tmp * scaling_factor);
103 }
104 { // LAST_IS_LAST
105 using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
106 auto tmp =
107 (static_cast<View>(in.get(C::execution_last)) -
108 static_cast<View>(in.get(C::execution_sel)) * (FF(1) - static_cast<View>(in.get(C::execution_sel_shift))));
109 std::get<6>(evals) += (tmp * scaling_factor);
110 }
111 {
112 using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
113 auto tmp = (static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_success)) -
114 static_cast<View>(in.get(C::execution_sel)) *
115 (FF(1) - static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_failure))));
116 std::get<7>(evals) += (tmp * scaling_factor);
117 }
118 {
119 using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
120 auto tmp = (static_cast<View>(in.get(C::execution_sel_instruction_fetching_success)) -
121 static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_success)) *
122 (FF(1) - static_cast<View>(in.get(C::execution_sel_instruction_fetching_failure))));
123 std::get<8>(evals) += (tmp * scaling_factor);
124 }
125 {
126 using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
127 auto tmp = (static_cast<View>(in.get(C::execution_sel_should_read_registers)) -
128 CView(execution_SEL_SHOULD_RESOLVE_ADDRESS) *
129 (FF(1) - static_cast<View>(in.get(C::execution_sel_addressing_error))));
130 std::get<9>(evals) += (tmp * scaling_factor);
131 }
132 {
133 using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
134 auto tmp = (static_cast<View>(in.get(C::execution_sel_should_check_gas)) -
135 static_cast<View>(in.get(C::execution_sel_should_read_registers)) *
136 (FF(1) - static_cast<View>(in.get(C::execution_sel_register_read_error))));
137 std::get<10>(evals) += (tmp * scaling_factor);
138 }
139 {
140 using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
141 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
142 (static_cast<View>(in.get(C::execution_two_five_six)) - FF(256));
143 std::get<11>(evals) += (tmp * scaling_factor);
144 }
145 {
146 using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
147 auto tmp = (static_cast<View>(in.get(C::execution_sel_lookup_num_p_limbs)) -
148 static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
149 (FF(1) - static_cast<View>(in.get(C::execution_sel_radix_gt_256))));
150 std::get<12>(evals) += (tmp * scaling_factor);
151 }
152 { // NUM_P_LIMBS_CEIL
153 using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
154 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
155 static_cast<View>(in.get(C::execution_sel_radix_gt_256)) *
156 (static_cast<View>(in.get(C::execution_num_p_limbs)) - FF(32));
157 std::get<13>(evals) += (tmp * scaling_factor);
158 }
159 { // DYN_L2_FACTOR_TO_RADIX_BE
160 using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
161 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
162 (((static_cast<View>(in.get(C::execution_register_2_)) -
163 static_cast<View>(in.get(C::execution_num_p_limbs))) *
164 static_cast<View>(in.get(C::execution_sel_use_num_limbs)) +
165 static_cast<View>(in.get(C::execution_num_p_limbs))) -
166 static_cast<View>(in.get(C::execution_dynamic_l2_gas_factor)));
167 std::get<14>(evals) += (tmp * scaling_factor);
168 }
169 { // SSTORE_DYN_L2_GAS_IS_ZERO
170 using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
171 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_sstore)) *
172 static_cast<View>(in.get(C::execution_dynamic_l2_gas_factor));
173 std::get<15>(evals) += (tmp * scaling_factor);
174 }
175 {
176 using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
177 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)) *
178 (static_cast<View>(in.get(C::execution_register_0_)) -
179 static_cast<View>(in.get(C::execution_dynamic_l2_gas_factor)));
180 std::get<16>(evals) += (tmp * scaling_factor);
181 }
182 {
183 using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
184 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)) *
185 (static_cast<View>(in.get(C::execution_register_0_)) -
186 static_cast<View>(in.get(C::execution_dynamic_da_gas_factor)));
187 std::get<17>(evals) += (tmp * scaling_factor);
188 }
189 {
190 using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
191 auto tmp = (static_cast<View>(in.get(C::execution_sel_should_execute_opcode)) -
192 static_cast<View>(in.get(C::execution_sel_should_check_gas)) *
193 (FF(1) - static_cast<View>(in.get(C::execution_sel_out_of_gas))));
194 std::get<18>(evals) += (tmp * scaling_factor);
195 }
196 {
197 using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
198 auto tmp = static_cast<View>(in.get(C::execution_sel_opcode_error)) *
199 (FF(1) - static_cast<View>(in.get(C::execution_sel_opcode_error)));
200 std::get<19>(evals) += (tmp * scaling_factor);
201 }
202 {
203 using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View;
204 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_execution)) *
205 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_execution)));
206 std::get<20>(evals) += (tmp * scaling_factor);
207 }
208 {
209 using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View;
210 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_alu)) *
211 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_alu)));
212 std::get<21>(evals) += (tmp * scaling_factor);
213 }
214 {
215 using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View;
216 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_bitwise)) *
217 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_bitwise)));
218 std::get<22>(evals) += (tmp * scaling_factor);
219 }
220 {
221 using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View;
222 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_cast)) *
223 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_cast)));
224 std::get<23>(evals) += (tmp * scaling_factor);
225 }
226 {
227 using View = typename std::tuple_element_t<24, ContainerOverSubrelations>::View;
228 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_calldata_copy)) *
229 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_calldata_copy)));
230 std::get<24>(evals) += (tmp * scaling_factor);
231 }
232 {
233 using View = typename std::tuple_element_t<25, ContainerOverSubrelations>::View;
234 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_returndata_copy)) *
235 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_returndata_copy)));
236 std::get<25>(evals) += (tmp * scaling_factor);
237 }
238 {
239 using View = typename std::tuple_element_t<26, ContainerOverSubrelations>::View;
240 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_set)) *
241 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_set)));
242 std::get<26>(evals) += (tmp * scaling_factor);
243 }
244 {
245 using View = typename std::tuple_element_t<27, ContainerOverSubrelations>::View;
246 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_get_contract_instance)) *
247 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_get_contract_instance)));
248 std::get<27>(evals) += (tmp * scaling_factor);
249 }
250 {
251 using View = typename std::tuple_element_t<28, ContainerOverSubrelations>::View;
252 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_emit_unencrypted_log)) *
253 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_emit_unencrypted_log)));
254 std::get<28>(evals) += (tmp * scaling_factor);
255 }
256 {
257 using View = typename std::tuple_element_t<29, ContainerOverSubrelations>::View;
258 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_poseidon2_perm)) *
259 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_poseidon2_perm)));
260 std::get<29>(evals) += (tmp * scaling_factor);
261 }
262 {
263 using View = typename std::tuple_element_t<30, ContainerOverSubrelations>::View;
264 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_sha256_compression)) *
265 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_sha256_compression)));
266 std::get<30>(evals) += (tmp * scaling_factor);
267 }
268 {
269 using View = typename std::tuple_element_t<31, ContainerOverSubrelations>::View;
270 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_keccakf1600)) *
271 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_keccakf1600)));
272 std::get<31>(evals) += (tmp * scaling_factor);
273 }
274 {
275 using View = typename std::tuple_element_t<32, ContainerOverSubrelations>::View;
276 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_ecc_add)) *
277 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_ecc_add)));
278 std::get<32>(evals) += (tmp * scaling_factor);
279 }
280 {
281 using View = typename std::tuple_element_t<33, ContainerOverSubrelations>::View;
282 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_to_radix)) *
283 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_to_radix)));
284 std::get<33>(evals) += (tmp * scaling_factor);
285 }
286 { // SUBTRACE_ID_DECOMPOSITION
287 using View = typename std::tuple_element_t<34, ContainerOverSubrelations>::View;
288 auto tmp =
289 ((static_cast<View>(in.get(C::execution_sel_exec_dispatch_execution)) *
290 CView(constants_AVM_SUBTRACE_ID_EXECUTION) +
291 static_cast<View>(in.get(C::execution_sel_exec_dispatch_alu)) * CView(constants_AVM_SUBTRACE_ID_ALU) +
292 static_cast<View>(in.get(C::execution_sel_exec_dispatch_bitwise)) *
293 CView(constants_AVM_SUBTRACE_ID_BITWISE) +
294 static_cast<View>(in.get(C::execution_sel_exec_dispatch_cast)) * CView(constants_AVM_SUBTRACE_ID_CAST) +
295 static_cast<View>(in.get(C::execution_sel_exec_dispatch_calldata_copy)) *
296 CView(constants_AVM_SUBTRACE_ID_CALLDATA_COPY) +
297 static_cast<View>(in.get(C::execution_sel_exec_dispatch_returndata_copy)) *
298 CView(constants_AVM_SUBTRACE_ID_RETURNDATA_COPY) +
299 static_cast<View>(in.get(C::execution_sel_exec_dispatch_set)) * CView(constants_AVM_SUBTRACE_ID_SET) +
300 static_cast<View>(in.get(C::execution_sel_exec_dispatch_get_contract_instance)) *
301 CView(constants_AVM_SUBTRACE_ID_GETCONTRACTINSTANCE) +
302 static_cast<View>(in.get(C::execution_sel_exec_dispatch_emit_unencrypted_log)) *
303 CView(constants_AVM_SUBTRACE_ID_EMITUNENCRYPTEDLOG) +
304 static_cast<View>(in.get(C::execution_sel_exec_dispatch_poseidon2_perm)) *
305 CView(constants_AVM_SUBTRACE_ID_POSEIDON2_PERM) +
306 static_cast<View>(in.get(C::execution_sel_exec_dispatch_sha256_compression)) *
307 CView(constants_AVM_SUBTRACE_ID_SHA256_COMPRESSION) +
308 static_cast<View>(in.get(C::execution_sel_exec_dispatch_keccakf1600)) *
309 CView(constants_AVM_SUBTRACE_ID_KECCAKF1600) +
310 static_cast<View>(in.get(C::execution_sel_exec_dispatch_ecc_add)) * CView(constants_AVM_SUBTRACE_ID_ECC) +
311 static_cast<View>(in.get(C::execution_sel_exec_dispatch_to_radix)) *
312 CView(constants_AVM_SUBTRACE_ID_TO_RADIX)) -
313 static_cast<View>(in.get(C::execution_sel_should_execute_opcode)) *
314 static_cast<View>(in.get(C::execution_subtrace_id)));
315 std::get<34>(evals) += (tmp * scaling_factor);
316 }
317 {
318 using View = typename std::tuple_element_t<35, ContainerOverSubrelations>::View;
319 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_get_env_var)) *
320 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_get_env_var)));
321 std::get<35>(evals) += (tmp * scaling_factor);
322 }
323 {
324 using View = typename std::tuple_element_t<36, ContainerOverSubrelations>::View;
325 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_mov)) *
326 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_mov)));
327 std::get<36>(evals) += (tmp * scaling_factor);
328 }
329 {
330 using View = typename std::tuple_element_t<37, ContainerOverSubrelations>::View;
331 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_jump)) *
332 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_jump)));
333 std::get<37>(evals) += (tmp * scaling_factor);
334 }
335 {
336 using View = typename std::tuple_element_t<38, ContainerOverSubrelations>::View;
337 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_jumpi)) *
338 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_jumpi)));
339 std::get<38>(evals) += (tmp * scaling_factor);
340 }
341 {
342 using View = typename std::tuple_element_t<39, ContainerOverSubrelations>::View;
343 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_call)) *
344 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_call)));
345 std::get<39>(evals) += (tmp * scaling_factor);
346 }
347 {
348 using View = typename std::tuple_element_t<40, ContainerOverSubrelations>::View;
349 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_static_call)) *
350 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_static_call)));
351 std::get<40>(evals) += (tmp * scaling_factor);
352 }
353 {
354 using View = typename std::tuple_element_t<41, ContainerOverSubrelations>::View;
355 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_internal_call)) *
356 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_internal_call)));
357 std::get<41>(evals) += (tmp * scaling_factor);
358 }
359 {
360 using View = typename std::tuple_element_t<42, ContainerOverSubrelations>::View;
361 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_internal_return)) *
362 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_internal_return)));
363 std::get<42>(evals) += (tmp * scaling_factor);
364 }
365 {
366 using View = typename std::tuple_element_t<43, ContainerOverSubrelations>::View;
367 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_return)) *
368 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_return)));
369 std::get<43>(evals) += (tmp * scaling_factor);
370 }
371 {
372 using View = typename std::tuple_element_t<44, ContainerOverSubrelations>::View;
373 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_revert)) *
374 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_revert)));
375 std::get<44>(evals) += (tmp * scaling_factor);
376 }
377 {
378 using View = typename std::tuple_element_t<45, ContainerOverSubrelations>::View;
379 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_success_copy)) *
380 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_success_copy)));
381 std::get<45>(evals) += (tmp * scaling_factor);
382 }
383 {
384 using View = typename std::tuple_element_t<46, ContainerOverSubrelations>::View;
385 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) *
386 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_returndata_size)));
387 std::get<46>(evals) += (tmp * scaling_factor);
388 }
389 {
390 using View = typename std::tuple_element_t<47, ContainerOverSubrelations>::View;
391 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_debug_log)) *
392 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_debug_log)));
393 std::get<47>(evals) += (tmp * scaling_factor);
394 }
395 {
396 using View = typename std::tuple_element_t<48, ContainerOverSubrelations>::View;
397 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_sload)) *
398 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sload)));
399 std::get<48>(evals) += (tmp * scaling_factor);
400 }
401 {
402 using View = typename std::tuple_element_t<49, ContainerOverSubrelations>::View;
403 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_sstore)) *
404 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore)));
405 std::get<49>(evals) += (tmp * scaling_factor);
406 }
407 {
408 using View = typename std::tuple_element_t<50, ContainerOverSubrelations>::View;
409 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_notehash_exists)) *
410 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_notehash_exists)));
411 std::get<50>(evals) += (tmp * scaling_factor);
412 }
413 {
414 using View = typename std::tuple_element_t<51, ContainerOverSubrelations>::View;
415 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_emit_notehash)) *
416 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_notehash)));
417 std::get<51>(evals) += (tmp * scaling_factor);
418 }
419 {
420 using View = typename std::tuple_element_t<52, ContainerOverSubrelations>::View;
421 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_l1_to_l2_message_exists)) *
422 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_l1_to_l2_message_exists)));
423 std::get<52>(evals) += (tmp * scaling_factor);
424 }
425 {
426 using View = typename std::tuple_element_t<53, ContainerOverSubrelations>::View;
427 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_nullifier_exists)) *
428 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_nullifier_exists)));
429 std::get<53>(evals) += (tmp * scaling_factor);
430 }
431 {
432 using View = typename std::tuple_element_t<54, ContainerOverSubrelations>::View;
433 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier)) *
434 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier)));
435 std::get<54>(evals) += (tmp * scaling_factor);
436 }
437 {
438 using View = typename std::tuple_element_t<55, ContainerOverSubrelations>::View;
439 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_send_l2_to_l1_msg)) *
440 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_send_l2_to_l1_msg)));
441 std::get<55>(evals) += (tmp * scaling_factor);
442 }
443 { // EXEC_OP_ID_DECOMPOSITION
444 using View = typename std::tuple_element_t<56, ContainerOverSubrelations>::View;
445 auto tmp =
446 ((static_cast<View>(in.get(C::execution_sel_execute_get_env_var)) *
447 CView(constants_AVM_EXEC_OP_ID_GETENVVAR) +
448 static_cast<View>(in.get(C::execution_sel_execute_mov)) * CView(constants_AVM_EXEC_OP_ID_MOV) +
449 static_cast<View>(in.get(C::execution_sel_execute_jump)) * CView(constants_AVM_EXEC_OP_ID_JUMP) +
450 static_cast<View>(in.get(C::execution_sel_execute_jumpi)) * CView(constants_AVM_EXEC_OP_ID_JUMPI) +
451 static_cast<View>(in.get(C::execution_sel_execute_call)) * CView(constants_AVM_EXEC_OP_ID_CALL) +
452 static_cast<View>(in.get(C::execution_sel_execute_static_call)) *
453 CView(constants_AVM_EXEC_OP_ID_STATICCALL) +
454 static_cast<View>(in.get(C::execution_sel_execute_internal_call)) *
455 CView(constants_AVM_EXEC_OP_ID_INTERNALCALL) +
456 static_cast<View>(in.get(C::execution_sel_execute_internal_return)) *
457 CView(constants_AVM_EXEC_OP_ID_INTERNALRETURN) +
458 static_cast<View>(in.get(C::execution_sel_execute_return)) * CView(constants_AVM_EXEC_OP_ID_RETURN) +
459 static_cast<View>(in.get(C::execution_sel_execute_revert)) * CView(constants_AVM_EXEC_OP_ID_REVERT) +
460 static_cast<View>(in.get(C::execution_sel_execute_success_copy)) *
461 CView(constants_AVM_EXEC_OP_ID_SUCCESSCOPY) +
462 static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) *
463 CView(constants_AVM_EXEC_OP_ID_RETURNDATASIZE) +
464 static_cast<View>(in.get(C::execution_sel_execute_debug_log)) * CView(constants_AVM_EXEC_OP_ID_DEBUGLOG) +
465 static_cast<View>(in.get(C::execution_sel_execute_sload)) * CView(constants_AVM_EXEC_OP_ID_SLOAD) +
466 static_cast<View>(in.get(C::execution_sel_execute_sstore)) * CView(constants_AVM_EXEC_OP_ID_SSTORE) +
467 static_cast<View>(in.get(C::execution_sel_execute_notehash_exists)) *
468 CView(constants_AVM_EXEC_OP_ID_NOTEHASH_EXISTS) +
469 static_cast<View>(in.get(C::execution_sel_execute_emit_notehash)) *
470 CView(constants_AVM_EXEC_OP_ID_EMIT_NOTEHASH) +
471 static_cast<View>(in.get(C::execution_sel_execute_l1_to_l2_message_exists)) *
472 CView(constants_AVM_EXEC_OP_ID_L1_TO_L2_MESSAGE_EXISTS) +
473 static_cast<View>(in.get(C::execution_sel_execute_nullifier_exists)) *
474 CView(constants_AVM_EXEC_OP_ID_NULLIFIER_EXISTS) +
475 static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier)) *
476 CView(constants_AVM_EXEC_OP_ID_EMIT_NULLIFIER) +
477 static_cast<View>(in.get(C::execution_sel_execute_send_l2_to_l1_msg)) *
478 CView(constants_AVM_EXEC_OP_ID_SENDL2TOL1MSG)) -
479 static_cast<View>(in.get(C::execution_sel_should_execute_opcode)) *
480 static_cast<View>(in.get(C::execution_sel_exec_dispatch_execution)) *
481 static_cast<View>(in.get(C::execution_subtrace_operation_id)));
482 std::get<56>(evals) += (tmp * scaling_factor);
483 }
484 {
485 using View = typename std::tuple_element_t<57, ContainerOverSubrelations>::View;
486 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_calldata_copy)) *
487 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_calldata_copy)));
488 std::get<57>(evals) += (tmp * scaling_factor);
489 }
490 {
491 using View = typename std::tuple_element_t<58, ContainerOverSubrelations>::View;
492 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_returndata_copy)) *
493 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_returndata_copy)));
494 std::get<58>(evals) += (tmp * scaling_factor);
495 }
496 {
497 using View = typename std::tuple_element_t<59, ContainerOverSubrelations>::View;
498 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
499 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_to_radix)));
500 std::get<59>(evals) += (tmp * scaling_factor);
501 }
502 {
503 using View = typename std::tuple_element_t<60, ContainerOverSubrelations>::View;
504 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_bitwise)) *
505 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_bitwise)));
506 std::get<60>(evals) += (tmp * scaling_factor);
507 }
508 {
509 using View = typename std::tuple_element_t<61, ContainerOverSubrelations>::View;
510 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)) *
511 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)));
512 std::get<61>(evals) += (tmp * scaling_factor);
513 }
514 {
515 using View = typename std::tuple_element_t<62, ContainerOverSubrelations>::View;
516 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_sstore)) *
517 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_sstore)));
518 std::get<62>(evals) += (tmp * scaling_factor);
519 }
520 { // DYN_GAS_ID_DECOMPOSITION
521 using View = typename std::tuple_element_t<63, ContainerOverSubrelations>::View;
522 auto tmp =
523 ((static_cast<View>(in.get(C::execution_sel_gas_calldata_copy)) *
524 CView(constants_AVM_DYN_GAS_ID_CALLDATACOPY) +
525 static_cast<View>(in.get(C::execution_sel_gas_returndata_copy)) *
526 CView(constants_AVM_DYN_GAS_ID_RETURNDATACOPY) +
527 static_cast<View>(in.get(C::execution_sel_gas_to_radix)) * CView(constants_AVM_DYN_GAS_ID_TORADIX) +
528 static_cast<View>(in.get(C::execution_sel_gas_bitwise)) * CView(constants_AVM_DYN_GAS_ID_BITWISE) +
529 static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)) *
530 CView(constants_AVM_DYN_GAS_ID_EMITUNENCRYPTEDLOG) +
531 static_cast<View>(in.get(C::execution_sel_gas_sstore)) * CView(constants_AVM_DYN_GAS_ID_SSTORE)) -
532 static_cast<View>(in.get(C::execution_sel_should_check_gas)) *
533 static_cast<View>(in.get(C::execution_sel)) * static_cast<View>(in.get(C::execution_dyn_gas_id)));
534 std::get<63>(evals) += (tmp * scaling_factor);
535 }
536 {
537 using View = typename std::tuple_element_t<64, ContainerOverSubrelations>::View;
538 auto tmp = static_cast<View>(in.get(C::execution_sel_opcode_failure)) *
539 (FF(1) - static_cast<View>(in.get(C::execution_sel_opcode_failure)));
540 std::get<64>(evals) += (tmp * scaling_factor);
541 }
542 { // PC_NEXT_ROW_INT_CALL_JUMP
543 using View = typename std::tuple_element_t<65, ContainerOverSubrelations>::View;
544 auto tmp = CView(execution_NOT_LAST_EXEC) *
545 (static_cast<View>(in.get(C::execution_sel_execute_internal_call)) +
546 static_cast<View>(in.get(C::execution_sel_execute_jump))) *
547 (static_cast<View>(in.get(C::execution_pc_shift)) - static_cast<View>(in.get(C::execution_rop_0_)));
548 std::get<65>(evals) += (tmp * scaling_factor);
549 }
550 { // PC_NEXT_ROW_JUMPI
551 using View = typename std::tuple_element_t<66, ContainerOverSubrelations>::View;
552 auto tmp =
553 CView(execution_NOT_LAST_EXEC) * static_cast<View>(in.get(C::execution_sel_execute_jumpi)) *
554 ((static_cast<View>(in.get(C::execution_register_0_)) *
555 (static_cast<View>(in.get(C::execution_rop_1_)) - static_cast<View>(in.get(C::execution_next_pc))) +
556 static_cast<View>(in.get(C::execution_next_pc))) -
557 static_cast<View>(in.get(C::execution_pc_shift)));
558 std::get<66>(evals) += (tmp * scaling_factor);
559 }
560 { // MOV_SAME_VALUE
561 using View = typename std::tuple_element_t<67, ContainerOverSubrelations>::View;
562 auto tmp =
563 static_cast<View>(in.get(C::execution_sel_execute_mov)) *
564 (static_cast<View>(in.get(C::execution_register_0_)) - static_cast<View>(in.get(C::execution_register_1_)));
565 std::get<67>(evals) += (tmp * scaling_factor);
566 }
567 { // MOV_SAME_TAG
568 using View = typename std::tuple_element_t<68, ContainerOverSubrelations>::View;
569 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_mov)) *
570 (static_cast<View>(in.get(C::execution_mem_tag_reg_0_)) -
571 static_cast<View>(in.get(C::execution_mem_tag_reg_1_)));
572 std::get<68>(evals) += (tmp * scaling_factor);
573 }
574 { // SUCCESS_COPY_WRITE_REG
575 using View = typename std::tuple_element_t<69, ContainerOverSubrelations>::View;
576 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_success_copy)) *
577 (static_cast<View>(in.get(C::execution_register_0_)) -
578 static_cast<View>(in.get(C::execution_last_child_success)));
579 std::get<69>(evals) += (tmp * scaling_factor);
580 }
581 { // SUCCESS_COPY_U1_TAG
582 using View = typename std::tuple_element_t<70, ContainerOverSubrelations>::View;
583 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_success_copy)) *
584 (static_cast<View>(in.get(C::execution_mem_tag_reg_0_)) - CView(constants_MEM_TAG_U1));
585 std::get<70>(evals) += (tmp * scaling_factor);
586 }
587 { // RETURNDATA_SIZE_WRITE_REG
588 using View = typename std::tuple_element_t<71, ContainerOverSubrelations>::View;
589 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) *
590 (static_cast<View>(in.get(C::execution_register_0_)) -
591 static_cast<View>(in.get(C::execution_last_child_returndata_size)));
592 std::get<71>(evals) += (tmp * scaling_factor);
593 }
594 { // RETURNDATA_SIZE_U32_TAG
595 using View = typename std::tuple_element_t<72, ContainerOverSubrelations>::View;
596 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) *
597 (static_cast<View>(in.get(C::execution_mem_tag_reg_0_)) - CView(constants_MEM_TAG_U32));
598 std::get<72>(evals) += (tmp * scaling_factor);
599 }
600 { // PUBLIC_DATA_TREE_ROOT_NOT_CHANGED
601 using View = typename std::tuple_element_t<73, ContainerOverSubrelations>::View;
602 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
603 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore))) *
604 (static_cast<View>(in.get(C::execution_prev_public_data_tree_root)) -
605 static_cast<View>(in.get(C::execution_public_data_tree_root)));
606 std::get<73>(evals) += (tmp * scaling_factor);
607 }
608 { // PUBLIC_DATA_TREE_SIZE_NOT_CHANGED
609 using View = typename std::tuple_element_t<74, ContainerOverSubrelations>::View;
610 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
611 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore))) *
612 (static_cast<View>(in.get(C::execution_prev_public_data_tree_size)) -
613 static_cast<View>(in.get(C::execution_public_data_tree_size)));
614 std::get<74>(evals) += (tmp * scaling_factor);
615 }
616 { // WRITTEN_PUBLIC_DATA_SLOTS_TREE_ROOT_NOT_CHANGED
617 using View = typename std::tuple_element_t<75, ContainerOverSubrelations>::View;
618 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
619 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore))) *
620 (static_cast<View>(in.get(C::execution_prev_written_public_data_slots_tree_root)) -
621 static_cast<View>(in.get(C::execution_written_public_data_slots_tree_root)));
622 std::get<75>(evals) += (tmp * scaling_factor);
623 }
624 { // WRITTEN_PUBLIC_DATA_SLOTS_TREE_SIZE_NOT_CHANGED
625 using View = typename std::tuple_element_t<76, ContainerOverSubrelations>::View;
626 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
627 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore))) *
628 (static_cast<View>(in.get(C::execution_prev_written_public_data_slots_tree_size)) -
629 static_cast<View>(in.get(C::execution_written_public_data_slots_tree_size)));
630 std::get<76>(evals) += (tmp * scaling_factor);
631 }
632 { // NOTE_HASH_TREE_ROOT_NOT_CHANGED
633 using View = typename std::tuple_element_t<77, ContainerOverSubrelations>::View;
634 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
635 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_notehash))) *
636 (static_cast<View>(in.get(C::execution_prev_note_hash_tree_root)) -
637 static_cast<View>(in.get(C::execution_note_hash_tree_root)));
638 std::get<77>(evals) += (tmp * scaling_factor);
639 }
640 { // NOTE_HASH_TREE_SIZE_NOT_CHANGED
641 using View = typename std::tuple_element_t<78, ContainerOverSubrelations>::View;
642 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
643 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_notehash))) *
644 (static_cast<View>(in.get(C::execution_prev_note_hash_tree_size)) -
645 static_cast<View>(in.get(C::execution_note_hash_tree_size)));
646 std::get<78>(evals) += (tmp * scaling_factor);
647 }
648 { // NUM_NOTE_HASHES_EMITTED_NOT_CHANGED
649 using View = typename std::tuple_element_t<79, ContainerOverSubrelations>::View;
650 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
651 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_notehash))) *
652 (static_cast<View>(in.get(C::execution_prev_num_note_hashes_emitted)) -
653 static_cast<View>(in.get(C::execution_num_note_hashes_emitted)));
654 std::get<79>(evals) += (tmp * scaling_factor);
655 }
656 { // NULLIFIER_TREE_ROOT_NOT_CHANGED
657 using View = typename std::tuple_element_t<80, ContainerOverSubrelations>::View;
658 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
659 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier))) *
660 (static_cast<View>(in.get(C::execution_prev_nullifier_tree_root)) -
661 static_cast<View>(in.get(C::execution_nullifier_tree_root)));
662 std::get<80>(evals) += (tmp * scaling_factor);
663 }
664 { // NULLIFIER_TREE_SIZE_NOT_CHANGED
665 using View = typename std::tuple_element_t<81, ContainerOverSubrelations>::View;
666 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
667 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier))) *
668 (static_cast<View>(in.get(C::execution_prev_nullifier_tree_size)) -
669 static_cast<View>(in.get(C::execution_nullifier_tree_size)));
670 std::get<81>(evals) += (tmp * scaling_factor);
671 }
672 { // NUM_NULLIFIERS_EMITTED_NOT_CHANGED
673 using View = typename std::tuple_element_t<82, ContainerOverSubrelations>::View;
674 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
675 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier))) *
676 (static_cast<View>(in.get(C::execution_prev_num_nullifiers_emitted)) -
677 static_cast<View>(in.get(C::execution_num_nullifiers_emitted)));
678 std::get<82>(evals) += (tmp * scaling_factor);
679 }
680 { // NUM_UNENCRYPTED_LOGS_NOT_CHANGED
681 using View = typename std::tuple_element_t<83, ContainerOverSubrelations>::View;
682 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
683 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_emit_unencrypted_log))) *
684 (static_cast<View>(in.get(C::execution_prev_num_unencrypted_log_fields)) -
685 static_cast<View>(in.get(C::execution_num_unencrypted_log_fields)));
686 std::get<83>(evals) += (tmp * scaling_factor);
687 }
688 { // NUM_L2_TO_L1_MESSAGES_NOT_CHANGED
689 using View = typename std::tuple_element_t<84, ContainerOverSubrelations>::View;
690 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
691 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_send_l2_to_l1_msg))) *
692 (static_cast<View>(in.get(C::execution_prev_num_l2_to_l1_messages)) -
693 static_cast<View>(in.get(C::execution_num_l2_to_l1_messages)));
694 std::get<84>(evals) += (tmp * scaling_factor);
695 }
696 { // RETRIEVED_BYTECODES_TREE_ROOT_NOT_CHANGED
697 using View = typename std::tuple_element_t<85, ContainerOverSubrelations>::View;
698 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
699 (FF(1) - static_cast<View>(in.get(C::execution_sel_first_row_in_context))) *
700 (static_cast<View>(in.get(C::execution_prev_retrieved_bytecodes_tree_root)) -
701 static_cast<View>(in.get(C::execution_retrieved_bytecodes_tree_root)));
702 std::get<85>(evals) += (tmp * scaling_factor);
703 }
704 { // RETRIEVED_BYTECODES_TREE_SIZE_NOT_CHANGED
705 using View = typename std::tuple_element_t<86, ContainerOverSubrelations>::View;
706 auto tmp = static_cast<View>(in.get(C::execution_sel)) *
707 (FF(1) - static_cast<View>(in.get(C::execution_sel_first_row_in_context))) *
708 (static_cast<View>(in.get(C::execution_prev_retrieved_bytecodes_tree_size)) -
709 static_cast<View>(in.get(C::execution_retrieved_bytecodes_tree_size)));
710 std::get<86>(evals) += (tmp * scaling_factor);
711 }
712 {
713 using View = typename std::tuple_element_t<87, ContainerOverSubrelations>::View;
714 auto tmp = (static_cast<View>(in.get(C::execution_sel_execute_mov)) +
715 static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) +
716 static_cast<View>(in.get(C::execution_sel_execute_jump)) +
717 static_cast<View>(in.get(C::execution_sel_execute_jumpi)) +
718 static_cast<View>(in.get(C::execution_sel_execute_debug_log)) +
719 static_cast<View>(in.get(C::execution_sel_execute_success_copy)) +
720 static_cast<View>(in.get(C::execution_sel_execute_call)) +
721 static_cast<View>(in.get(C::execution_sel_execute_static_call)) +
722 static_cast<View>(in.get(C::execution_sel_execute_internal_call)) +
723 static_cast<View>(in.get(C::execution_sel_execute_return)) +
724 static_cast<View>(in.get(C::execution_sel_execute_revert))) *
725 static_cast<View>(in.get(C::execution_sel_opcode_error));
726 std::get<87>(evals) += (tmp * scaling_factor);
727 }
728 {
729 using View = typename std::tuple_element_t<88, ContainerOverSubrelations>::View;
730 auto tmp = (static_cast<View>(in.get(C::execution_sel_should_write_registers)) -
731 static_cast<View>(in.get(C::execution_sel_should_execute_opcode)) *
732 (FF(1) - static_cast<View>(in.get(C::execution_sel_opcode_error))));
733 std::get<88>(evals) += (tmp * scaling_factor);
734 }
735 {
736 using View = typename std::tuple_element_t<89, ContainerOverSubrelations>::View;
737 auto tmp = (static_cast<View>(in.get(C::execution_sel_error)) -
738 (static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_failure)) +
739 static_cast<View>(in.get(C::execution_sel_instruction_fetching_failure)) +
740 static_cast<View>(in.get(C::execution_sel_addressing_error)) +
741 static_cast<View>(in.get(C::execution_sel_register_read_error)) +
742 static_cast<View>(in.get(C::execution_sel_out_of_gas)) +
743 static_cast<View>(in.get(C::execution_sel_opcode_error))));
744 std::get<89>(evals) += (tmp * scaling_factor);
745 }
746}
747
748} // namespace bb::avm2
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &, const FF &scaling_factor)
ColumnAndShifts
Definition columns.hpp:34
AvmFlavorSettings::FF FF
Definition field.hpp:10
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
#define CView(v)
Container for parameters used by the grand product (permutation, lookup) Honk relations.