Struct sp1_core::syscall::precompiles::sha256::ShaExtendChip

source ·
pub struct ShaExtendChip;
Expand description

Implements the SHA extension operation which loops over i = [16, 63] and modifies w[i] in each iteration. The only input to the syscall is the 4byte-aligned pointer to the w array.

In the AIR, each SHA extend syscall takes up 48 rows, where each row corresponds to a single iteration of the loop.

Implementations§

source§

impl ShaExtendChip

source

pub fn eval_flags<AB: SP1AirBuilder>(&self, builder: &mut AB)

source§

impl ShaExtendChip

source

pub const fn new() -> Self

Trait Implementations§

source§

impl<AB> Air<AB> for ShaExtendChip
where AB: SP1AirBuilder,

source§

fn eval(&self, builder: &mut AB)

source§

impl<F> BaseAir<F> for ShaExtendChip

source§

fn width(&self) -> usize

The number of columns (a.k.a. registers) in this AIR.
source§

fn preprocessed_trace(&self) -> Option<DenseMatrix<F>>

source§

impl Default for ShaExtendChip

source§

fn default() -> ShaExtendChip

Returns the “default value” for a type. Read more
source§

impl<F: PrimeField32> MachineAir<F> for ShaExtendChip

§

type Record = ExecutionRecord

The execution record containing events for producing the air trace.
§

type Program = Program

source§

fn name(&self) -> String

A unique identifier for this AIR as part of a machine.
source§

fn generate_trace( &self, input: &ExecutionRecord, _: &mut ExecutionRecord, ) -> RowMajorMatrix<F>

Generate the trace for a given execution record. Read more
source§

fn generate_dependencies(&self, input: &Self::Record, output: &mut Self::Record)

Generate the dependencies for a given execution record.
source§

fn included(&self, shard: &Self::Record) -> bool

Whether this execution record contains events for this air.
source§

fn preprocessed_width(&self) -> usize

The width of the preprocessed trace.
source§

fn generate_preprocessed_trace( &self, _program: &Self::Program, ) -> Option<RowMajorMatrix<F>>

Generate the preprocessed trace given a specific program.
source§

impl Syscall for ShaExtendChip

source§

fn num_extra_cycles(&self) -> u32

The number of extra cycles that the syscall takes to execute. Unless this syscall is complex and requires many cycles, this should be zero.
source§

fn execute( &self, rt: &mut SyscallContext<'_, '_>, arg1: u32, arg2: u32, ) -> Option<u32>

Execute the syscall and return the resulting value of register a0. arg1 and arg2 are the values in registers X10 and X11, respectively. While not a hard requirement, the convention is that the return value is only for system calls such as HALT. Most precompiles use arg1 and arg2 to denote the addresses of the input data, and write the result to the memory at arg1.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> JsonSchemaMaybe for T