openvm_circuit::arch

Trait PhantomSubExecutor

Source
pub trait PhantomSubExecutor<F> {
    // Required method
    fn phantom_execute(
        &mut self,
        memory: &MemoryController<F>,
        streams: &mut Streams<F>,
        discriminant: PhantomDiscriminant,
        a: F,
        b: F,
        c_upper: u16,
    ) -> Result<()>;
}
Expand description

Phantom sub-instructions affect the runtime of the VM and the trace matrix values. However they all have no AIR constraints besides advancing the pc by DEFAULT_PC_STEP.

They should not mutate memory, but they can mutate the input & hint streams.

Phantom sub-instructions are only allowed to use operands a,b and c_upper = c.as_canonical_u32() >> 16.

Required Methods§

Source

fn phantom_execute( &mut self, memory: &MemoryController<F>, streams: &mut Streams<F>, discriminant: PhantomDiscriminant, a: F, b: F, c_upper: u16, ) -> Result<()>

Implementors§