From d8e0d47cfe51721e3dc178d878ec4cd4fa3606c5 Mon Sep 17 00:00:00 2001 From: svv232 Date: Tue, 24 Dec 2024 21:00:28 +0000 Subject: [PATCH] deploy: 997b51b459f4da873620a00d3423430914d0875f --- rustdoc/help.html | 2 +- .../expressions/trait.FoldingColumnTrait.js | 2 +- .../instance_witness/trait.Foldable.js | 2 +- .../folding/instance_witness/trait.Witness.js | 2 +- rustdoc/index.html | 2 +- rustdoc/kimchi_msm/columns/enum.Column.html | 2 +- .../kimchi_msm/witness/struct.Witness.html | 10 ++--- .../interpreter/fn.interpret_mtype.html | 2 +- .../interpreter/fn.interpret_sbtype.html | 2 +- .../interpreter/fn.interpret_syscall.html | 2 +- .../interpreter/fn.interpret_ujtype.html | 2 +- .../interpreter/fn.interpret_utype.html | 2 +- .../riscv32im/interpreter/index.html | 2 +- rustdoc/settings.html | 2 +- .../riscv32im/interpreter.rs.html | 42 ++++++++++++++++++- 15 files changed, 59 insertions(+), 19 deletions(-) diff --git a/rustdoc/help.html b/rustdoc/help.html index 5f6a6e11c2..5b57a161fa 100644 --- a/rustdoc/help.html +++ b/rustdoc/help.html @@ -1 +1 @@ -Rustdoc help

Rustdoc help

Back
\ No newline at end of file +Rustdoc help

Rustdoc help

Back
\ No newline at end of file diff --git a/rustdoc/implementors/folding/expressions/trait.FoldingColumnTrait.js b/rustdoc/implementors/folding/expressions/trait.FoldingColumnTrait.js index bc2685a266..8ac8b940d5 100644 --- a/rustdoc/implementors/folding/expressions/trait.FoldingColumnTrait.js +++ b/rustdoc/implementors/folding/expressions/trait.FoldingColumnTrait.js @@ -1,5 +1,5 @@ (function() {var implementors = { "folding":[], -"kimchi_msm":[["impl FoldingColumnTrait for Column"]], +"kimchi_msm":[["impl FoldingColumnTrait for Column"]], "o1vm":[["impl FoldingColumnTrait for MIPSColumn"],["impl FoldingColumnTrait for KeccakColumn"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/implementors/folding/instance_witness/trait.Foldable.js b/rustdoc/implementors/folding/instance_witness/trait.Foldable.js index 094f7e6a7a..116a1b7624 100644 --- a/rustdoc/implementors/folding/instance_witness/trait.Foldable.js +++ b/rustdoc/implementors/folding/instance_witness/trait.Foldable.js @@ -1,6 +1,6 @@ (function() {var implementors = { "folding":[], "ivc":[["impl<G: CommitmentCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Foldable<<G as AffineRepr>::ScalarField> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>"],["impl<const N_COL: usize, const N_FSEL: usize, F: Field, Evals: CombinableEvals<F>> Foldable<F> for PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>"]], -"kimchi_msm":[["impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>"]], +"kimchi_msm":[["impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>"]], "o1vm":[["impl<const N: usize, G: CommitmentCurve> Foldable<<G as AffineRepr>::ScalarField> for FoldingInstance<N, G>"],["impl<const N: usize, F: FftField> Foldable<F> for FoldingWitness<N, F>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/implementors/folding/instance_witness/trait.Witness.js b/rustdoc/implementors/folding/instance_witness/trait.Witness.js index 11c667506e..456a3bd816 100644 --- a/rustdoc/implementors/folding/instance_witness/trait.Witness.js +++ b/rustdoc/implementors/folding/instance_witness/trait.Witness.js @@ -1,6 +1,6 @@ (function() {var implementors = { "folding":[], "ivc":[["impl<const N_COL: usize, const N_FSEL: usize, Curve: CommitmentCurve, Evals: CombinableEvals<Curve::ScalarField>> Witness<Curve> for PlonkishWitnessGeneric<N_COL, N_FSEL, Curve::ScalarField, Evals>"]], -"kimchi_msm":[["impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>"]], +"kimchi_msm":[["impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>"]], "o1vm":[["impl<const N: usize, G: CommitmentCurve> Witness<G> for FoldingWitness<N, G::ScalarField>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/index.html b/rustdoc/index.html index a2c583b1f8..d22507a620 100644 --- a/rustdoc/index.html +++ b/rustdoc/index.html @@ -1 +1 @@ -Index of crates
\ No newline at end of file +Index of crates
\ No newline at end of file diff --git a/rustdoc/kimchi_msm/columns/enum.Column.html b/rustdoc/kimchi_msm/columns/enum.Column.html index b6ee919653..930f9b7db1 100644 --- a/rustdoc/kimchi_msm/columns/enum.Column.html +++ b/rustdoc/kimchi_msm/columns/enum.Column.html @@ -17,7 +17,7 @@
§

LookupAggregation

The lookup aggregation, i.e. phi

§

LookupFixedTable(u32)

The fixed tables. The parameter is considered to the indexed table.

Implementations§

source§

impl Column

source

pub fn add_rel_offset(self, offset: usize) -> Column

Adds offset if the column is Relation. Fails otherwise.

-

Trait Implementations§

source§

impl Clone for Column

source§

fn clone(&self) -> Column

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Column

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FoldingColumnTrait for Column

source§

fn is_witness(&self) -> bool

source§

fn degree(&self) -> Degree

Return the degree of the column Read more
source§

impl FormattedOutput for Column

source§

fn latex(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn text(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn ocaml(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn is_alpha(&self) -> bool

source§

impl Hash for Column

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Clone for Column

source§

fn clone(&self) -> Column

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Column

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FoldingColumnTrait for Column

source§

fn is_witness(&self) -> bool

§

fn degree(&self) -> Degree

Return the degree of the column Read more
source§

impl FormattedOutput for Column

source§

fn latex(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn text(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn ocaml(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn is_alpha(&self) -> bool

source§

impl Hash for Column

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<Column> for Column

source§

fn eq(&self, other: &Column) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/rustdoc/kimchi_msm/witness/struct.Witness.html b/rustdoc/kimchi_msm/witness/struct.Witness.html index bca4c1075f..d6a8787cfd 100644 --- a/rustdoc/kimchi_msm/witness/struct.Witness.html +++ b/rustdoc/kimchi_msm/witness/struct.Witness.html @@ -10,7 +10,7 @@

Fields§

§cols: Box<[T; N_WIT]>

A witness row is represented by an array of N witness columns When T is a vector, then the witness describes the rows of the circuit.

-

Implementations§

source§

impl<const N_WIT: usize, T> Witness<N_WIT, T>

source

pub fn len(&self) -> usize

source

pub fn is_empty(&self) -> bool

source§

impl<const N_WIT: usize, T: Zero + Clone> Witness<N_WIT, Vec<T>>

source

pub fn zero_vec(domain_size: usize) -> Self

source

pub fn to_pub_columns<const NPUB: usize>(&self) -> Witness<NPUB, Vec<T>>

Trait Implementations§

source§

impl<const N_WIT: usize, T: Clone> Clone for Witness<N_WIT, T>

source§

fn clone(&self) -> Witness<N_WIT, T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<const N_WIT: usize, T: Debug> Debug for Witness<N_WIT, T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<const N_WIT: usize, T: Zero + Clone> Default for Witness<N_WIT, T>

source§

fn default() -> Self

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

impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>

source§

fn combine(a: Self, b: Self, challenge: F) -> Self

Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
source§

impl<const N_WIT: usize, G: Send + Debug> FromParallelIterator<G> for Witness<N_WIT, G>

source§

fn from_par_iter<I>(par_iter: I) -> Selfwhere +

Implementations§

source§

impl<const N_WIT: usize, T> Witness<N_WIT, T>

source

pub fn len(&self) -> usize

source

pub fn is_empty(&self) -> bool

source§

impl<const N_WIT: usize, T: Zero + Clone> Witness<N_WIT, Vec<T>>

source

pub fn zero_vec(domain_size: usize) -> Self

source

pub fn to_pub_columns<const NPUB: usize>(&self) -> Witness<NPUB, Vec<T>>

Trait Implementations§

source§

impl<const N_WIT: usize, T: Clone> Clone for Witness<N_WIT, T>

source§

fn clone(&self) -> Witness<N_WIT, T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<const N_WIT: usize, T: Debug> Debug for Witness<N_WIT, T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<const N_WIT: usize, T: Zero + Clone> Default for Witness<N_WIT, T>

source§

fn default() -> Self

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

impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>

source§

fn combine(a: Self, b: Self, challenge: F) -> Self

Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
source§

impl<const N_WIT: usize, G: Send + Debug> FromParallelIterator<G> for Witness<N_WIT, G>

source§

fn from_par_iter<I>(par_iter: I) -> Selfwhere I: IntoParallelIterator<Item = G>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
source§

impl<const N_WIT: usize, T: Hash> Hash for Witness<N_WIT, T>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<const N_WIT: usize, T> Index<usize> for Witness<N_WIT, T>

§

type Output = T

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl<'lt, const N_WIT: usize, G> IntoIterator for &'lt Witness<N_WIT, G>

§

type Item = &'lt G

The type of the elements being iterated over.
§

type IntoIter = IntoIter<&'lt G, Global>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<const N_WIT: usize, F: Clone> IntoIterator for Witness<N_WIT, F>

source§

fn into_iter(self) -> Self::IntoIter

Iterate over the columns in the circuit.

@@ -20,7 +20,7 @@ Vec<G>: IntoParallelIterator,
source§

fn into_par_iter(self) -> Self::Iter

Iterate over the columns in the circuit, in parallel.

§

type Iter = <Vec<G, Global> as IntoParallelIterator>::Iter

The parallel iterator type that will be created.
§

type Item = <Vec<G, Global> as IntoParallelIterator>::Item

The type of item that the parallel iterator will produce.
source§

impl<const N_WIT: usize, T: PartialEq> PartialEq<Witness<N_WIT, T>> for Witness<N_WIT, T>

source§

fn eq(&self, other: &Witness<N_WIT, T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<const N_WIT: usize, T> TryFrom<Vec<T, Global>> for Witness<N_WIT, T>

§

type Error = String

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

fn try_from(value: Vec<T>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<const N_WIT: usize, T: Eq> Eq for Witness<N_WIT, T>

source§

impl<const N_WIT: usize, T> StructuralEq for Witness<N_WIT, T>

source§

impl<const N_WIT: usize, T> StructuralPartialEq for Witness<N_WIT, T>

source§

impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>

Auto Trait Implementations§

§

impl<const N_WIT: usize, T> RefUnwindSafe for Witness<N_WIT, T>where +sufficient, and should not be overridden without very good reason.

source§

impl<const N_WIT: usize, T> TryFrom<Vec<T, Global>> for Witness<N_WIT, T>

§

type Error = String

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

fn try_from(value: Vec<T>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<const N_WIT: usize, T: Eq> Eq for Witness<N_WIT, T>

source§

impl<const N_WIT: usize, T> StructuralEq for Witness<N_WIT, T>

source§

impl<const N_WIT: usize, T> StructuralPartialEq for Witness<N_WIT, T>

source§

impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>

Auto Trait Implementations§

§

impl<const N_WIT: usize, T> RefUnwindSafe for Witness<N_WIT, T>where T: RefUnwindSafe,

§

impl<const N_WIT: usize, T> Send for Witness<N_WIT, T>where T: Send,

§

impl<const N_WIT: usize, T> Sync for Witness<N_WIT, T>where T: Sync,

§

impl<const N_WIT: usize, T> Unpin for Witness<N_WIT, T>

§

impl<const N_WIT: usize, T> UnwindSafe for Witness<N_WIT, T>where @@ -42,12 +42,12 @@ &'data mut I: IntoParallelIterator,

§

type Iter = <&'data mut I as IntoParallelIterator>::Iter

The type of iterator that will be created.
§

type Item = <&'data mut I as IntoParallelIterator>::Item

The type of item that will be produced; this is typically an &'data mut T reference.
§

fn par_iter_mut( &'data mut self -) -> <I as IntoParallelRefMutIterator<'data>>::Iter

Creates the parallel iterator from self. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<G, W> RelaxableWitness<G, W> for Wwhere +) -> <I as IntoParallelRefMutIterator<'data>>::Iter

Creates the parallel iterator from self. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<G, W> RelaxableWitness<G, W> for Wwhere G: CommitmentCurve, - W: Witness<G>,

source§

fn relax( + W: Witness<G>,

§

fn relax( self, zero_poly: &Evaluations<<G as AffineRepr>::ScalarField, Radix2EvaluationDomain<<G as AffineRepr>::ScalarField>> -) -> RelaxedWitness<G, W>

This method takes a witness and a vector of evaluations to the zero +) -> RelaxedWitness<G, W>

This method takes a witness and a vector of evaluations to the zero polynomial, returning a relaxed witness which is composed by the extended witness and the error vector that is set to the zero polynomial.

diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html index 66963d4b7c..4c9aa16590 100644 --- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html +++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html @@ -1,4 +1,4 @@ -interpret_mtype in o1vm::interpreters::riscv32im::interpreter - Rust
pub fn interpret_mtype<Env: InterpreterEnv>(env: &mut Env, instr: MInstruction)
Expand description

Interpret an M-type instruction. +interpret_mtype in o1vm::interpreters::riscv32im::interpreter - Rust

pub fn interpret_mtype<Env: InterpreterEnv>(env: &mut Env, instr: MInstruction)
Expand description

Interpret an M-type instruction. The encoding of an M-type instruction is as follows:

| 31     27 | 26    25 | 24     20 | 19     15 | 14        12 | 11    7 | 6      0 |
 |   00000   |    01    |    rs2    |    rs1    |    funct3    |    rd   |  opcode  |
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_sbtype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_sbtype.html
index aace3fed38..257b1d2302 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_sbtype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_sbtype.html
@@ -1,4 +1,4 @@
-interpret_sbtype in o1vm::interpreters::riscv32im::interpreter - Rust
pub fn interpret_sbtype<Env: InterpreterEnv>(
+interpret_sbtype in o1vm::interpreters::riscv32im::interpreter - Rust
pub fn interpret_sbtype<Env: InterpreterEnv>(
     env: &mut Env,
     instr: SBInstruction
 )
Expand description

Interpret an SB-type instruction. diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_syscall.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_syscall.html index 86a4fe8de3..e5f6b6a9c5 100644 --- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_syscall.html +++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_syscall.html @@ -1,4 +1,4 @@ -interpret_syscall in o1vm::interpreters::riscv32im::interpreter - Rust

pub fn interpret_syscall<Env: InterpreterEnv>(
+interpret_syscall in o1vm::interpreters::riscv32im::interpreter - Rust
pub fn interpret_syscall<Env: InterpreterEnv>(
     env: &mut Env,
     _instr: SyscallInstruction
 )
\ No newline at end of file diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_ujtype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_ujtype.html index bec61b0021..e0bf85fdc1 100644 --- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_ujtype.html +++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_ujtype.html @@ -1,4 +1,4 @@ -interpret_ujtype in o1vm::interpreters::riscv32im::interpreter - Rust
pub fn interpret_ujtype<Env: InterpreterEnv>(
+interpret_ujtype in o1vm::interpreters::riscv32im::interpreter - Rust
pub fn interpret_ujtype<Env: InterpreterEnv>(
     env: &mut Env,
     instr: UJInstruction
 )
Expand description

Interpret an UJ-type instruction. diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_utype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_utype.html index f4eb38adef..c4b872b7bb 100644 --- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_utype.html +++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_utype.html @@ -1,4 +1,4 @@ -interpret_utype in o1vm::interpreters::riscv32im::interpreter - Rust

pub fn interpret_utype<Env: InterpreterEnv>(env: &mut Env, instr: UInstruction)
Expand description

Interpret an U-type instruction. +interpret_utype in o1vm::interpreters::riscv32im::interpreter - Rust

pub fn interpret_utype<Env: InterpreterEnv>(env: &mut Env, instr: UInstruction)
Expand description

Interpret an U-type instruction. The encoding of an U-type instruction is as follows:

| 31     12 | 11    7 | 6      0 |
 | immediate |    rd   |  opcode  |
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
index ff128da15b..d3a6b517c1 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
@@ -1,4 +1,4 @@
-o1vm::interpreters::riscv32im::interpreter - Rust
Expand description

This module implement an interpreter for the RISCV32 IM instruction set +o1vm::interpreters::riscv32im::interpreter - Rust

Expand description

This module implement an interpreter for the RISCV32 IM instruction set architecture.

The implementation mostly follows (and copy) code from the MIPS interpreter available here.

diff --git a/rustdoc/settings.html b/rustdoc/settings.html index 9718890d0b..78856e0fed 100644 --- a/rustdoc/settings.html +++ b/rustdoc/settings.html @@ -1 +1 @@ -Rustdoc settings

Rustdoc settings

Back
\ No newline at end of file +Rustdoc settings

Rustdoc settings

Back
\ No newline at end of file diff --git a/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html b/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html index d95015c5e0..0e084319d3 100644 --- a/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html +++ b/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html @@ -2688,6 +2688,26 @@ 2688 2689 2690 +2691 +2692 +2693 +2694 +2695 +2696 +2697 +2698 +2699 +2700 +2701 +2702 +2703 +2704 +2705 +2706 +2707 +2708 +2709 +2710
//! This module implement an interpreter for the RISCV32 IM instruction set
 //! architecture.
 //!
@@ -5042,7 +5062,27 @@
             env.set_next_instruction_pointer(addr);
         }
         SBInstruction::BranchGreaterThanEqualUnsigned => {
-            unimplemented!("BranchGreaterThanEqualUnsigned")
+            // bgeu: if (x[rs1] >=u x[rs2]) pc += sext(offset)
+            let local_rs1 = env.read_register(&rs1);
+            let local_rs2 = env.read_register(&rs2);
+
+            let rd_scratch = env.alloc_scratch();
+            let less_than = unsafe { env.test_less_than(&local_rs1, &local_rs2, rd_scratch) };
+            let offset =
+                less_than.clone() * Env::constant(4) + (Env::constant(1) - less_than) * imm0_12;
+
+            // greater than equal is the negation of less than
+            let addr = {
+                let res_scratch = env.alloc_scratch();
+                let overflow_scratch = env.alloc_scratch();
+                let (res, _overflow) = unsafe {
+                    env.add_witness(&instruction_pointer, &offset, res_scratch, overflow_scratch)
+                };
+                res
+            };
+
+            env.set_instruction_pointer(next_instruction_pointer);
+            env.set_next_instruction_pointer(addr);
         }
     };
 }