mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-09 09:13:09 +00:00
stack macro
This commit is contained in:
parent
a061b88a7a
commit
31095e1b23
@ -76,13 +76,13 @@ mul_fp254_12_1:
|
||||
// stack: inB, inA, g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
|
||||
%load_fp254_6
|
||||
// stack: g , inA, g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
|
||||
%swap_fp254_6_hole
|
||||
%stack (f: 6, x, g: 6) -> (g, x, f)
|
||||
// stack: g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
|
||||
%dup_fp254_6_7
|
||||
// stack: g,g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
|
||||
%add_fp254_6
|
||||
// stack: g+g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
|
||||
%swap_fp254_6_hole
|
||||
%stack (f: 6, x, g: 6) -> (g, x, f)
|
||||
// stack: g, inA, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
|
||||
PUSH mul_fp254_12_2
|
||||
// stack: mul_fp254_12_2, g, inA, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
|
||||
@ -224,7 +224,7 @@ global mul_fp254_12_sparse:
|
||||
// stack: G2 * sh2(f') , g0 * f, inB, f, inB, f', out, f, inB, f', inA, inB, out
|
||||
%add_fp254_6
|
||||
// stack: G2 * sh2(f') + g0 * f, inB, f, inB, f', out, f, inB, f', inA, inB, out
|
||||
%swap_fp254_6_hole
|
||||
%stack (f: 6, x, g: 6) -> (g, x, f)
|
||||
// stack: f , inB, G2 * sh2(f') + g0 * f, inB, f', out, f, inB, f', inA, inB, out
|
||||
DUP7 %add_const(2)
|
||||
// stack: inB1, f , inB, G2 * sh2(f') + g0 * f, inB, f', out, f, inB, f', inA, inB, out
|
||||
@ -242,7 +242,7 @@ global mul_fp254_12_sparse:
|
||||
// stack: g0 , f', out, f, inB, f', inA, inB, out
|
||||
%scale_re_fp254_6
|
||||
// stack: g0 * f', out, f, inB, f', inA, inB, out
|
||||
%swap_fp254_6_hole
|
||||
%stack (f: 6, x, g: 6) -> (g, x, f)
|
||||
// stack: f , out, g0 * f', inB, f', inA, inB, out
|
||||
DUP14
|
||||
%add_const(8)
|
||||
@ -253,7 +253,7 @@ global mul_fp254_12_sparse:
|
||||
// stack: G2 * sh(f) , out, g0 * f', inB, f', inA, inB, out
|
||||
%add_fp254_6_hole
|
||||
// stack: G2 * sh(f) + g0 * f', inB, f', inA, inB, out
|
||||
%swap_fp254_6_hole
|
||||
%stack (f: 6, x, g: 6) -> (g, x, f)
|
||||
// stack: f' , inB, G2 * sh(f) + g0 * f', inA, inB, out
|
||||
DUP7
|
||||
%add_const(2)
|
||||
@ -341,7 +341,7 @@ global square_fp254_12:
|
||||
// stack: inp', square_fp254_12_1, out', f , square_fp254_12_2, inp, f, square_fp254_12_3, out
|
||||
%load_fp254_6
|
||||
// stack: f', square_fp254_12_1, out', f , square_fp254_12_2, inp, f, square_fp254_12_3, out
|
||||
%swap_fp254_6_hole_2
|
||||
%stack (f: 6, x: 2, g: 6) -> (g, x, f)
|
||||
// stack: f , square_fp254_12_1, out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
|
||||
%dup_fp254_6_8
|
||||
// stack: f', f , square_fp254_12_1, out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
|
||||
@ -359,7 +359,7 @@ square_fp254_12_2:
|
||||
// stack: f'f', inp, f, square_fp254_12_3, out
|
||||
%sh_fp254_6
|
||||
// stack: sh(f'f'), inp, f, square_fp254_12_3, out
|
||||
%swap_fp254_6_hole
|
||||
%stack (f: 6, x, g: 6) -> (g, x, f)
|
||||
// stack: f, inp, sh(f'f'), square_fp254_12_3, out
|
||||
SWAP6
|
||||
SWAP13
|
||||
|
||||
@ -402,84 +402,15 @@
|
||||
// stack: g0, g1, g2, g3, g4, g5, f0, f1, f2, f3, f4, f5
|
||||
%endmacro
|
||||
|
||||
// cost: 16
|
||||
// swap two fp254_6 elements with a stack term separating them
|
||||
// (f: 6, X, g: 6) -> (g: 6, X, f: 6)
|
||||
%macro swap_fp254_6_hole
|
||||
// stack: f0, f1, f2, f3, f4, f5, X, g0, g1, g2, g3, g4, g5
|
||||
SWAP7
|
||||
// stack: g0, f1, f2, f3, f4, f5, X, f0, g1, g2, g3, g4, g5
|
||||
SWAP1
|
||||
SWAP8
|
||||
SWAP1
|
||||
// stack: g0, g1, f2, f3, f4, f5, X, f0, f1, g2, g3, g4, g5
|
||||
SWAP2
|
||||
SWAP9
|
||||
SWAP2
|
||||
// stack: g0, g1, g2, f3, f4, f5, X, f0, f1, f2, g3, g4, g5
|
||||
SWAP3
|
||||
SWAP10
|
||||
SWAP3
|
||||
// stack: g0, g1, g2, g3, f4, f5, X, f0, f1, f2, f3, g4, g5
|
||||
SWAP4
|
||||
SWAP11
|
||||
SWAP4
|
||||
// stack: g0, g1, g2, g3, g4, f5, X, f0, f1, f2, f3, f4, g5
|
||||
SWAP5
|
||||
SWAP12
|
||||
SWAP5
|
||||
// stack: g0, g1, g2, g3, g4, g5, X, f0, f1, f2, f3, f4, f5
|
||||
%endmacro
|
||||
|
||||
// cost: 16
|
||||
// swap two fp254_6 elements with two stack terms separating them
|
||||
// (f: 6, X: 2, g: 6) -> (g: 6, X: 2, f: 6)
|
||||
%macro swap_fp254_6_hole_2
|
||||
// stack: f0, f1, f2, f3, f4, f5, X, g0, g1, g2, g3, g4, g5
|
||||
SWAP8
|
||||
// stack: g0, f1, f2, f3, f4, f5, X, f0, g1, g2, g3, g4, g5
|
||||
SWAP1
|
||||
SWAP9
|
||||
SWAP1
|
||||
// stack: g0, g1, f2, f3, f4, f5, X, f0, f1, g2, g3, g4, g5
|
||||
SWAP2
|
||||
SWAP10
|
||||
SWAP2
|
||||
// stack: g0, g1, g2, f3, f4, f5, X, f0, f1, f2, g3, g4, g5
|
||||
SWAP3
|
||||
SWAP11
|
||||
SWAP3
|
||||
// stack: g0, g1, g2, g3, f4, f5, X, f0, f1, f2, f3, g4, g5
|
||||
SWAP4
|
||||
SWAP12
|
||||
SWAP4
|
||||
// stack: g0, g1, g2, g3, g4, f5, X, f0, f1, f2, f3, f4, g5
|
||||
SWAP5
|
||||
SWAP13
|
||||
SWAP5
|
||||
// stack: g0, g1, g2, g3, g4, g5, X, f0, f1, f2, f3, f4, f5
|
||||
%endmacro
|
||||
|
||||
/// multiply (a + bt + ct^2) by t:
|
||||
/// t(a + bt + ct^2) = at + bt^2 + ct^3 = (9+i)c + at + bt^2
|
||||
%macro sh_fp254_6
|
||||
// stack: f0 , f0_, f1, f1_, f2 , f2_
|
||||
SWAP2
|
||||
// stack: f1 , f0_, g0 , f1_, f2 , f2_
|
||||
SWAP4
|
||||
// stack: f2 , f0_, g0 , f1_, g1 , f2_
|
||||
SWAP1
|
||||
// stack: f0_, f2 , g0 , f1_, g1 , f2_
|
||||
SWAP3
|
||||
// stack: f1_, f2 , g0 , g0_, g1 , f2_
|
||||
SWAP5
|
||||
// stack: f2_, f2 , g0 , g0_, g1 , g1_
|
||||
SWAP1
|
||||
// stack: f2 , f2_, g0 , g0_, g1 , g1_
|
||||
// stack: a, b, c
|
||||
%stack (a: 2, b: 2, c: 2) -> (c, a, b)
|
||||
// stack: c, a, b
|
||||
%i9
|
||||
// stack: g2_, g2 , g0 , g0_, g1 , g1_
|
||||
SWAP1
|
||||
// stack: g2 , g2_, g0 , g0_, g1 , g1_
|
||||
// stack: (9+i)c, a, b
|
||||
%endmacro
|
||||
|
||||
// cost: 16
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user