openvm_bigint_guest/
lib.rs

1#![no_std]
2
3mod i256;
4mod u256;
5
6pub use i256::*;
7use strum_macros::FromRepr;
8pub use u256::*;
9
10mod utils;
11#[allow(unused)]
12pub use utils::*;
13
14/// This is custom-0 defined in RISC-V spec document
15pub const OPCODE: u8 = 0x0b;
16pub const INT256_FUNCT3: u8 = 0b101;
17pub const BEQ256_FUNCT3: u8 = 0b110;
18
19/// funct7 options for 256-bit integer instructions.
20#[derive(Debug, Copy, Clone, PartialEq, Eq, FromRepr)]
21#[repr(u8)]
22pub enum Int256Funct7 {
23    Add = 0,
24    Sub,
25    Xor,
26    Or,
27    And,
28    Sll,
29    Srl,
30    Sra,
31    Slt,
32    Sltu,
33    Mul,
34}
35
36#[cfg(all(feature = "export-intrinsics", target_os = "zkvm"))]
37pub mod externs;