use crate::AirSlot;
use zisk_pil::{
BinaryAddHiTrace, BinaryAddTrace, BinaryExtensionFullTrace, BinaryExtensionTrace, BinaryTrace,
};
pub const ADD_KINDS: usize = 3;
pub const KIND_BASIC: usize = 0;
pub const KIND_ADD_HI: usize = 1;
pub const KIND_ADD_FULL: usize = 2;
pub const EXT_KINDS: usize = 2;
pub const KIND_EXT_CLEAN: usize = 0;
pub const KIND_EXT_DIRTY: usize = 1;
pub fn add_family(add_hi: u64, add: u64, basic: u64) -> [AirSlot<ADD_KINDS>; 3] {
[
AirSlot {
airgroup_id: BinaryAddHiTrace::<()>::AIRGROUP_ID,
air_id: BinaryAddHiTrace::<()>::AIR_ID,
ops_per_instance: crate::ADDS_X_ROW as u64 * BinaryAddHiTrace::<()>::NUM_ROWS as u64,
proves: [false, true, false],
sees: [false, true, true],
instances: add_hi,
},
AirSlot {
airgroup_id: BinaryAddTrace::<()>::AIRGROUP_ID,
air_id: BinaryAddTrace::<()>::AIR_ID,
ops_per_instance: BinaryAddTrace::<()>::NUM_ROWS as u64,
proves: [false, true, true],
sees: [false, true, true],
instances: add,
},
AirSlot {
airgroup_id: BinaryTrace::<()>::AIRGROUP_ID,
air_id: BinaryTrace::<()>::AIR_ID,
ops_per_instance: BinaryTrace::<()>::NUM_ROWS as u64,
proves: [true, true, true],
sees: [true, true, true],
instances: basic,
},
]
}
pub fn ext_family(reduced: u64, full: u64) -> [AirSlot<EXT_KINDS>; 2] {
[
AirSlot {
airgroup_id: BinaryExtensionTrace::<()>::AIRGROUP_ID,
air_id: BinaryExtensionTrace::<()>::AIR_ID,
ops_per_instance: BinaryExtensionTrace::<()>::NUM_ROWS as u64,
proves: [true, false],
sees: [true, true],
instances: reduced,
},
AirSlot {
airgroup_id: BinaryExtensionFullTrace::<()>::AIRGROUP_ID,
air_id: BinaryExtensionFullTrace::<()>::AIR_ID,
ops_per_instance: BinaryExtensionFullTrace::<()>::NUM_ROWS as u64,
proves: [true, true],
sees: [true, true],
instances: full,
},
]
}