@@ -36,13 +36,13 @@ class AvmMiniFlavor {
36
36
using VerifierCommitmentKey = pcs::VerifierCommitmentKey<Curve>;
37
37
38
38
static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 2 ;
39
- static constexpr size_t NUM_WITNESS_ENTITIES = 32 ;
39
+ static constexpr size_t NUM_WITNESS_ENTITIES = 37 ;
40
40
static constexpr size_t NUM_WIRES = NUM_WITNESS_ENTITIES + NUM_PRECOMPUTED_ENTITIES;
41
41
// We have two copies of the witness entities, so we subtract the number of fixed ones (they have no shift), one for
42
42
// the unshifted and one for the shifted
43
- static constexpr size_t NUM_ALL_ENTITIES = 38 ;
43
+ static constexpr size_t NUM_ALL_ENTITIES = 45 ;
44
44
45
- using Relations = std::tuple<AvmMini_vm::mem_trace <FF>, AvmMini_vm::avm_mini <FF>>;
45
+ using Relations = std::tuple<AvmMini_vm::avm_mini <FF>, AvmMini_vm::mem_trace <FF>>;
46
46
47
47
static constexpr size_t MAX_PARTIAL_RELATION_LENGTH = compute_max_partial_relation_length<Relations>();
48
48
@@ -87,6 +87,11 @@ class AvmMiniFlavor {
87
87
memTrace_m_in_tag,
88
88
memTrace_m_tag_err,
89
89
memTrace_m_one_min_inv,
90
+ avmMini_pc,
91
+ avmMini_internal_return_ptr,
92
+ avmMini_sel_internal_call,
93
+ avmMini_sel_internal_return,
94
+ avmMini_sel_halt,
90
95
avmMini_sel_op_add,
91
96
avmMini_sel_op_sub,
92
97
avmMini_sel_op_mul,
@@ -122,6 +127,11 @@ class AvmMiniFlavor {
122
127
memTrace_m_in_tag,
123
128
memTrace_m_tag_err,
124
129
memTrace_m_one_min_inv,
130
+ avmMini_pc,
131
+ avmMini_internal_return_ptr,
132
+ avmMini_sel_internal_call,
133
+ avmMini_sel_internal_return,
134
+ avmMini_sel_halt,
125
135
avmMini_sel_op_add,
126
136
avmMini_sel_op_sub,
127
137
avmMini_sel_op_mul,
@@ -163,6 +173,11 @@ class AvmMiniFlavor {
163
173
memTrace_m_in_tag,
164
174
memTrace_m_tag_err,
165
175
memTrace_m_one_min_inv,
176
+ avmMini_pc,
177
+ avmMini_internal_return_ptr,
178
+ avmMini_sel_internal_call,
179
+ avmMini_sel_internal_return,
180
+ avmMini_sel_halt,
166
181
avmMini_sel_op_add,
167
182
avmMini_sel_op_sub,
168
183
avmMini_sel_op_mul,
@@ -184,10 +199,12 @@ class AvmMiniFlavor {
184
199
avmMini_mem_idx_b,
185
200
avmMini_mem_idx_c,
186
201
avmMini_last,
202
+ avmMini_internal_return_ptr_shift,
203
+ avmMini_pc_shift,
204
+ memTrace_m_tag_shift,
187
205
memTrace_m_val_shift,
188
- memTrace_m_addr_shift,
189
206
memTrace_m_rw_shift,
190
- memTrace_m_tag_shift )
207
+ memTrace_m_addr_shift )
191
208
192
209
RefVector<DataType> get_wires ()
193
210
{
@@ -204,6 +221,11 @@ class AvmMiniFlavor {
204
221
memTrace_m_in_tag,
205
222
memTrace_m_tag_err,
206
223
memTrace_m_one_min_inv,
224
+ avmMini_pc,
225
+ avmMini_internal_return_ptr,
226
+ avmMini_sel_internal_call,
227
+ avmMini_sel_internal_return,
228
+ avmMini_sel_halt,
207
229
avmMini_sel_op_add,
208
230
avmMini_sel_op_sub,
209
231
avmMini_sel_op_mul,
@@ -225,10 +247,12 @@ class AvmMiniFlavor {
225
247
avmMini_mem_idx_b,
226
248
avmMini_mem_idx_c,
227
249
avmMini_last,
250
+ avmMini_internal_return_ptr_shift,
251
+ avmMini_pc_shift,
252
+ memTrace_m_tag_shift,
228
253
memTrace_m_val_shift,
229
- memTrace_m_addr_shift,
230
254
memTrace_m_rw_shift,
231
- memTrace_m_tag_shift };
255
+ memTrace_m_addr_shift };
232
256
};
233
257
RefVector<DataType> get_unshifted ()
234
258
{
@@ -245,6 +269,11 @@ class AvmMiniFlavor {
245
269
memTrace_m_in_tag,
246
270
memTrace_m_tag_err,
247
271
memTrace_m_one_min_inv,
272
+ avmMini_pc,
273
+ avmMini_internal_return_ptr,
274
+ avmMini_sel_internal_call,
275
+ avmMini_sel_internal_return,
276
+ avmMini_sel_halt,
248
277
avmMini_sel_op_add,
249
278
avmMini_sel_op_sub,
250
279
avmMini_sel_op_mul,
@@ -269,11 +298,18 @@ class AvmMiniFlavor {
269
298
};
270
299
RefVector<DataType> get_to_be_shifted ()
271
300
{
272
- return { memTrace_m_val, memTrace_m_addr, memTrace_m_rw, memTrace_m_tag };
301
+ return {
302
+ avmMini_internal_return_ptr, avmMini_pc, memTrace_m_tag, memTrace_m_val, memTrace_m_rw, memTrace_m_addr
303
+ };
273
304
};
274
305
RefVector<DataType> get_shifted ()
275
306
{
276
- return { memTrace_m_val_shift, memTrace_m_addr_shift, memTrace_m_rw_shift, memTrace_m_tag_shift };
307
+ return { avmMini_internal_return_ptr_shift,
308
+ avmMini_pc_shift,
309
+ memTrace_m_tag_shift,
310
+ memTrace_m_val_shift,
311
+ memTrace_m_rw_shift,
312
+ memTrace_m_addr_shift };
277
313
};
278
314
};
279
315
@@ -286,7 +322,9 @@ class AvmMiniFlavor {
286
322
287
323
RefVector<DataType> get_to_be_shifted ()
288
324
{
289
- return { memTrace_m_val, memTrace_m_addr, memTrace_m_rw, memTrace_m_tag };
325
+ return {
326
+ avmMini_internal_return_ptr, avmMini_pc, memTrace_m_tag, memTrace_m_val, memTrace_m_rw, memTrace_m_addr
327
+ };
290
328
};
291
329
292
330
// The plookup wires that store plookup read data.
@@ -376,6 +414,11 @@ class AvmMiniFlavor {
376
414
Base::memTrace_m_in_tag = " MEMTRACE_M_IN_TAG" ;
377
415
Base::memTrace_m_tag_err = " MEMTRACE_M_TAG_ERR" ;
378
416
Base::memTrace_m_one_min_inv = " MEMTRACE_M_ONE_MIN_INV" ;
417
+ Base::avmMini_pc = " AVMMINI_PC" ;
418
+ Base::avmMini_internal_return_ptr = " AVMMINI_INTERNAL_RETURN_PTR" ;
419
+ Base::avmMini_sel_internal_call = " AVMMINI_SEL_INTERNAL_CALL" ;
420
+ Base::avmMini_sel_internal_return = " AVMMINI_SEL_INTERNAL_RETURN" ;
421
+ Base::avmMini_sel_halt = " AVMMINI_SEL_HALT" ;
379
422
Base::avmMini_sel_op_add = " AVMMINI_SEL_OP_ADD" ;
380
423
Base::avmMini_sel_op_sub = " AVMMINI_SEL_OP_SUB" ;
381
424
Base::avmMini_sel_op_mul = " AVMMINI_SEL_OP_MUL" ;
@@ -427,6 +470,11 @@ class AvmMiniFlavor {
427
470
Commitment memTrace_m_in_tag;
428
471
Commitment memTrace_m_tag_err;
429
472
Commitment memTrace_m_one_min_inv;
473
+ Commitment avmMini_pc;
474
+ Commitment avmMini_internal_return_ptr;
475
+ Commitment avmMini_sel_internal_call;
476
+ Commitment avmMini_sel_internal_return;
477
+ Commitment avmMini_sel_halt;
430
478
Commitment avmMini_sel_op_add;
431
479
Commitment avmMini_sel_op_sub;
432
480
Commitment avmMini_sel_op_mul;
@@ -478,6 +526,11 @@ class AvmMiniFlavor {
478
526
memTrace_m_in_tag = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
479
527
memTrace_m_tag_err = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
480
528
memTrace_m_one_min_inv = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
529
+ avmMini_pc = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
530
+ avmMini_internal_return_ptr = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
531
+ avmMini_sel_internal_call = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
532
+ avmMini_sel_internal_return = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
533
+ avmMini_sel_halt = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
481
534
avmMini_sel_op_add = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
482
535
avmMini_sel_op_sub = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
483
536
avmMini_sel_op_mul = deserialize_from_buffer<Commitment>(Transcript::proof_data, num_bytes_read);
@@ -533,6 +586,11 @@ class AvmMiniFlavor {
533
586
serialize_to_buffer<Commitment>(memTrace_m_in_tag, Transcript::proof_data);
534
587
serialize_to_buffer<Commitment>(memTrace_m_tag_err, Transcript::proof_data);
535
588
serialize_to_buffer<Commitment>(memTrace_m_one_min_inv, Transcript::proof_data);
589
+ serialize_to_buffer<Commitment>(avmMini_pc, Transcript::proof_data);
590
+ serialize_to_buffer<Commitment>(avmMini_internal_return_ptr, Transcript::proof_data);
591
+ serialize_to_buffer<Commitment>(avmMini_sel_internal_call, Transcript::proof_data);
592
+ serialize_to_buffer<Commitment>(avmMini_sel_internal_return, Transcript::proof_data);
593
+ serialize_to_buffer<Commitment>(avmMini_sel_halt, Transcript::proof_data);
536
594
serialize_to_buffer<Commitment>(avmMini_sel_op_add, Transcript::proof_data);
537
595
serialize_to_buffer<Commitment>(avmMini_sel_op_sub, Transcript::proof_data);
538
596
serialize_to_buffer<Commitment>(avmMini_sel_op_mul, Transcript::proof_data);
0 commit comments