mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-08 08:43:06 +00:00
Add moddiv for testing
This commit is contained in:
parent
8a44c557c5
commit
eed7cde388
@ -9,10 +9,12 @@ use crate::cpu::kernel::parser::parse;
|
||||
pub(crate) fn combined_kernel() -> Kernel {
|
||||
let files = vec![
|
||||
include_str!("asm/basic_macros.asm"),
|
||||
include_str!("asm/exp.asm"),
|
||||
// include_str!("asm/exp.asm"),
|
||||
include_str!("asm/curve_add.asm"),
|
||||
include_str!("asm/storage_read.asm"),
|
||||
include_str!("asm/storage_write.asm"),
|
||||
// include_str!("asm/curve_mul.asm"),
|
||||
include_str!("asm/moddiv.asm"),
|
||||
// include_str!("asm/storage_read.asm"),
|
||||
// include_str!("asm/storage_write.asm"),
|
||||
];
|
||||
|
||||
let parsed_files = files.iter().map(|f| parse(f)).collect_vec();
|
||||
@ -26,6 +28,7 @@ mod tests {
|
||||
#[test]
|
||||
fn make_kernel() {
|
||||
// Make sure we can parse and assemble the entire kernel.
|
||||
combined_kernel();
|
||||
let ker = combined_kernel();
|
||||
println!("{:?}", ker.code)
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ global ec_add_valid_points:
|
||||
// stack: x0, x1, y0 - y1, x0, y0, x1, y1, retdest
|
||||
%submod
|
||||
// stack: x0 - x1, y0 - y1, x0, y0, x1, y1, retdest
|
||||
//MODDIV // TODO: Implement this
|
||||
%moddiv
|
||||
// stack: lambda, x0, y0, x1, y1, retdest
|
||||
PUSH ec_add_valid_points_with_lambda
|
||||
// stack: ec_add_valid_points_with_lambda, lambda, x0, y0, x1, y1, retdest
|
||||
@ -193,14 +193,14 @@ ec_add_equal_points:
|
||||
// stack: 3/2 * x0^2, x0, y0, x1, y1, retdest
|
||||
DUP3
|
||||
// stack: y0, 3/2 * x0^2, x0, y0, x1, y1, retdest
|
||||
//MODDIV // TODO: Implement this
|
||||
%moddiv
|
||||
// stack: lambda, x0, y0, x1, y1, retdest
|
||||
PUSH ec_add_valid_points_with_lambda
|
||||
// stack: ec_add_valid_points_with_lambda, lambda, x0, y0, x1, y1, retdest
|
||||
JUMP
|
||||
|
||||
// Assumption: (x0,y0) is a valid point.
|
||||
global ec_double:
|
||||
// Assumption: (x0,y0) is a valid point.
|
||||
JUMPDEST
|
||||
// stack: x0, y0, retdest
|
||||
DUP2
|
||||
|
||||
500
evm/src/cpu/kernel/asm/moddiv.asm
Normal file
500
evm/src/cpu/kernel/asm/moddiv.asm
Normal file
@ -0,0 +1,500 @@
|
||||
/// Division modulo 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47, the BN254 base field order
|
||||
/// To replace with more efficient method using non-determinism later.
|
||||
|
||||
// Returns y * (x^-1) where the inverse is taken modulo N
|
||||
%macro moddiv
|
||||
// stack: x, y
|
||||
%inverse
|
||||
// stack: x^-1, y
|
||||
%mulmodn
|
||||
%endmacro
|
||||
|
||||
%macro mulmodn
|
||||
// stack: x, y
|
||||
PUSH 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47
|
||||
// stack: N, x, y
|
||||
SWAP2
|
||||
// stack: y, x, N
|
||||
MULMOD
|
||||
%endmacro
|
||||
|
||||
%macro squaremodn
|
||||
// stack: x
|
||||
DUP1
|
||||
// stack: x, x
|
||||
%mulmodn
|
||||
%endmacro
|
||||
|
||||
%macro inverse
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%squaremodn
|
||||
%squaremodn
|
||||
DUP2
|
||||
%mulmodn
|
||||
%endmacro
|
||||
Loading…
x
Reference in New Issue
Block a user