pub const MAIN_INSTANCE_COST: usize = 19282;
pub const ROM_INSTANCE_COST: usize = 5519;
pub const MEM_INSTANCE_COST: usize = 8653;
pub const INPUT_DATA_INSTANCE_COST: usize = 4690;
pub const ROM_DATA_INSTANCE_COST: usize = 4239;
pub const MEM_ALIGN_INSTANCE_COST: usize = 3011;
pub const MEM_ALIGN_LARGE_INSTANCE_COST: usize = 12063;
pub const MEM_ALIGN_BYTE_INSTANCE_COST: usize = 5007;
pub const MEM_ALIGN_READ_BYTE_INSTANCE_COST: usize = 4434;
pub const MEM_ALIGN_WRITE_BYTE_INSTANCE_COST: usize = 4874;
pub const MEM_ALIGN_BYTE_LARGE_INSTANCE_COST: usize = 10015;
pub const MEM_ALIGN_READ_BYTE_LARGE_INSTANCE_COST: usize = 8858;
pub const ARITH_INSTANCE_COST: usize = 4516;
pub const BINARY_INSTANCE_COST: usize = 6666;
pub const BINARY_LARGE_INSTANCE_COST: usize = 10250;
pub const BINARY_HUGE_INSTANCE_COST: usize = 18606;
pub const BINARY_ADD_INSTANCE_COST: usize = 4495;
pub const BINARY_ADD_LARGE_INSTANCE_COST: usize = 5775;
pub const BINARY_ADD_HUGE_INSTANCE_COST: usize = 8141;
pub const BINARY_ADD_HI_INSTANCE_COST: usize = 4751;
pub const BINARY_ADD_HI_LARGE_INSTANCE_COST: usize = 6093;
pub const BINARY_ADD_HI_HUGE_INSTANCE_COST: usize = 8786;
pub const BINARY_EXTENSION_INSTANCE_COST: usize = 6543;
pub const BINARY_EXTENSION_LARGE_INSTANCE_COST: usize = 9871;
pub const ADD_256_INSTANCE_COST: usize = 2376;
pub const ARITH_EQ_INSTANCE_COST: usize = 2171;
pub const ARITH_EQ_LARGE_INSTANCE_COST: usize = 4342;
pub const ARITH_256_X_INSTANCE_COST: usize = 1597;
pub const ARITH_256_X_LARGE_INSTANCE_COST: usize = 3190;
pub const ARITH_SECP_256_K_1_INSTANCE_COST: usize = 1884;
pub const ARITH_SECP_256_K_1_LARGE_INSTANCE_COST: usize = 3769;
pub const ARITH_BN_254_INSTANCE_COST: usize = 1976;
pub const ARITH_BN_254_LARGE_INSTANCE_COST: usize = 3958;
pub const ARITH_EQ_384_INSTANCE_COST: usize = 2007;
pub const ARITH_EQ_384_LARGE_INSTANCE_COST: usize = 4025;
pub const BABY_JUB_JUB_INSTANCE_COST: usize = 614;
pub const KECCAKF_INSTANCE_COST: usize = 12841;
pub const SHA_256_F_INSTANCE_COST: usize = 758;
pub const POSEIDON_INSTANCE_COST: usize = 881;
pub const BLAKE_2_BR_INSTANCE_COST: usize = 1126;
pub const BLAKE_3_F_INSTANCE_COST: usize = 4219;
pub const BLAKE_2_S_INSTANCE_COST: usize = 2519;
pub const DMA_INSTANCE_COST: usize = 3369;
pub const DMA_64_ALIGNED_INSTANCE_COST: usize = 3881;
pub const DMA_64_ALIGNED_LARGE_INSTANCE_COST: usize = 15514;
pub const DMA_64_ALIGNED_MEM_SET_INSTANCE_COST: usize = 2540;
pub const DMA_64_ALIGNED_MEM_INSTANCE_COST: usize = 3011;
pub const DMA_64_ALIGNED_MEM_LARGE_INSTANCE_COST: usize = 6031;
pub const DMA_64_ALIGNED_MEM_CPY_INSTANCE_COST: usize = 3564;
pub const DMA_UNALIGNED_INSTANCE_COST: usize = 2755;
pub const DMA_PRE_POST_INSTANCE_COST: usize = 4741;
pub const JUMP_DEST_INSTANCE_COST: usize = 3482;
#[cfg(test)]
mod tests {
use super::*;
use crate::pil_helpers::*;
use proofman_common::trace::TraceRow;
use proofman_fields::Goldilocks;
const BYTES_X_CELL: usize = 8;
#[test]
fn the_costs_cover_the_committed_trace() {
macro_rules! check {
(bound: $trace:ident : $row:ident : $cost:ident) => {
check!(@assert $trace::<Goldilocks>::NUM_ROWS, $row, $cost, $trace);
};
(@assert $rows:expr, $row:ident, $cost:ident, $trace:ident) => {
let trace_mb = $rows * $row::<Goldilocks>::ROW_SIZE * BYTES_X_CELL / (1024 * 1024);
assert!(
$cost >= trace_mb,
"{} ({} MB) is below the {trace_mb} MB committed trace of {}, which the prover \
holds in full: the air grew and the cost was not refreshed",
stringify!($cost),
$cost,
stringify!($trace),
);
};
($( $trace:ident : $row:ident : $cost:ident ),+ $(,)?) => {$(
let trace_mb =
$trace::<()>::NUM_ROWS * $row::<Goldilocks>::ROW_SIZE * BYTES_X_CELL
/ (1024 * 1024);
assert!(
$cost >= trace_mb,
"{} ({} MB) is below the {trace_mb} MB committed trace of {}, which the prover \
holds in full: the air grew and the cost was not refreshed",
stringify!($cost),
$cost,
stringify!($trace),
);
)+};
}
check!(bound: RomTrace: RomTraceRow: ROM_INSTANCE_COST);
check!(
MainTrace: MainTraceRow: MAIN_INSTANCE_COST,
MemTrace: MemTraceRow: MEM_INSTANCE_COST,
InputDataTrace: InputDataTraceRow: INPUT_DATA_INSTANCE_COST,
RomDataTrace: RomDataTraceRow: ROM_DATA_INSTANCE_COST,
MemAlignTrace: MemAlignTraceRow: MEM_ALIGN_INSTANCE_COST,
MemAlignLargeTrace: MemAlignLargeTraceRow: MEM_ALIGN_LARGE_INSTANCE_COST,
MemAlignByteTrace: MemAlignByteTraceRow: MEM_ALIGN_BYTE_INSTANCE_COST,
MemAlignReadByteTrace: MemAlignReadByteTraceRow: MEM_ALIGN_READ_BYTE_INSTANCE_COST,
MemAlignWriteByteTrace: MemAlignWriteByteTraceRow: MEM_ALIGN_WRITE_BYTE_INSTANCE_COST,
MemAlignByteLargeTrace: MemAlignByteLargeTraceRow: MEM_ALIGN_BYTE_LARGE_INSTANCE_COST,
MemAlignReadByteLargeTrace: MemAlignReadByteLargeTraceRow: MEM_ALIGN_READ_BYTE_LARGE_INSTANCE_COST,
ArithTrace: ArithTraceRow: ARITH_INSTANCE_COST,
BinaryTrace: BinaryTraceRow: BINARY_INSTANCE_COST,
BinaryLargeTrace: BinaryLargeTraceRow: BINARY_LARGE_INSTANCE_COST,
BinaryHugeTrace: BinaryHugeTraceRow: BINARY_HUGE_INSTANCE_COST,
BinaryAddTrace: BinaryAddTraceRow: BINARY_ADD_INSTANCE_COST,
BinaryAddLargeTrace: BinaryAddLargeTraceRow: BINARY_ADD_LARGE_INSTANCE_COST,
BinaryAddHugeTrace: BinaryAddHugeTraceRow: BINARY_ADD_HUGE_INSTANCE_COST,
BinaryAddHiTrace: BinaryAddHiTraceRow: BINARY_ADD_HI_INSTANCE_COST,
BinaryAddHiLargeTrace: BinaryAddHiLargeTraceRow: BINARY_ADD_HI_LARGE_INSTANCE_COST,
BinaryAddHiHugeTrace: BinaryAddHiHugeTraceRow: BINARY_ADD_HI_HUGE_INSTANCE_COST,
BinaryExtensionTrace: BinaryExtensionTraceRow: BINARY_EXTENSION_INSTANCE_COST,
BinaryExtensionLargeTrace: BinaryExtensionLargeTraceRow: BINARY_EXTENSION_LARGE_INSTANCE_COST,
Add256Trace: Add256TraceRow: ADD_256_INSTANCE_COST,
ArithEqTrace: ArithEqTraceRow: ARITH_EQ_INSTANCE_COST,
ArithEqLargeTrace: ArithEqLargeTraceRow: ARITH_EQ_LARGE_INSTANCE_COST,
Arith256XTrace: Arith256XTraceRow: ARITH_256_X_INSTANCE_COST,
Arith256XLargeTrace: Arith256XLargeTraceRow: ARITH_256_X_LARGE_INSTANCE_COST,
ArithSecp256K1Trace: ArithSecp256K1TraceRow: ARITH_SECP_256_K_1_INSTANCE_COST,
ArithSecp256K1LargeTrace: ArithSecp256K1LargeTraceRow: ARITH_SECP_256_K_1_LARGE_INSTANCE_COST,
ArithBn254Trace: ArithBn254TraceRow: ARITH_BN_254_INSTANCE_COST,
ArithBn254LargeTrace: ArithBn254LargeTraceRow: ARITH_BN_254_LARGE_INSTANCE_COST,
ArithEq384Trace: ArithEq384TraceRow: ARITH_EQ_384_INSTANCE_COST,
ArithEq384LargeTrace: ArithEq384LargeTraceRow: ARITH_EQ_384_LARGE_INSTANCE_COST,
BabyJubJubTrace: BabyJubJubTraceRow: BABY_JUB_JUB_INSTANCE_COST,
KeccakfTrace: KeccakfTraceRow: KECCAKF_INSTANCE_COST,
Sha256fTrace: Sha256fTraceRow: SHA_256_F_INSTANCE_COST,
PoseidonTrace: PoseidonTraceRow: POSEIDON_INSTANCE_COST,
Blake2brTrace: Blake2brTraceRow: BLAKE_2_BR_INSTANCE_COST,
Blake3fTrace: Blake3fTraceRow: BLAKE_3_F_INSTANCE_COST,
Blake2sTrace: Blake2sTraceRow: BLAKE_2_S_INSTANCE_COST,
DmaTrace: DmaTraceRow: DMA_INSTANCE_COST,
Dma64AlignedTrace: Dma64AlignedTraceRow: DMA_64_ALIGNED_INSTANCE_COST,
Dma64AlignedLargeTrace: Dma64AlignedLargeTraceRow: DMA_64_ALIGNED_LARGE_INSTANCE_COST,
Dma64AlignedMemSetTrace: Dma64AlignedMemSetTraceRow: DMA_64_ALIGNED_MEM_SET_INSTANCE_COST,
Dma64AlignedMemTrace: Dma64AlignedMemTraceRow: DMA_64_ALIGNED_MEM_INSTANCE_COST,
Dma64AlignedMemLargeTrace: Dma64AlignedMemLargeTraceRow: DMA_64_ALIGNED_MEM_LARGE_INSTANCE_COST,
Dma64AlignedMemCpyTrace: Dma64AlignedMemCpyTraceRow: DMA_64_ALIGNED_MEM_CPY_INSTANCE_COST,
DmaUnalignedTrace: DmaUnalignedTraceRow: DMA_UNALIGNED_INSTANCE_COST,
DmaPrePostTrace: DmaPrePostTraceRow: DMA_PRE_POST_INSTANCE_COST,
JumpDestTrace: JumpDestTraceRow: JUMP_DEST_INSTANCE_COST,
);
}
}