diff --git a/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/power.asm b/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/power.asm index 998af552..e83732a5 100644 --- a/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/power.asm +++ b/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/power.asm @@ -32,25 +32,24 @@ global power: %jump(power_loop_4) power_return: - %check(224) // stack: out, retdest {200: y0, 212: y2, 224: y4} PUSH power_return_1 PUSH 236 PUSH 200 // stack: 200, 236, power_return_1, out, retdest {200: y0, 212: y2, 224: y4} %jump(inv_fp12) power_return_1: // stack: out, retdest {236: y0, 212: y2, 224: y4} - PUSH power_return_2 PUSH 248 PUSH 212 - // stack: 212, 248, power_return_2, out, retdest {236: y0, 212: y2, 224: y4} - %jump(square_fp12) + PUSH power_return_2 PUSH 224 DUP1 PUSH 212 + // stack: 212, 224, 224, power_return_2, out, retdest {236: y0, 212: y2, 224: y4} + %jump(mul_fp12) power_return_2: - // stack: out, retdest {236: y0, 212: y2, 224: y4, 248: y2^2} - PUSH power_return_3 PUSH 248 PUSH 212 PUSH 248 - // stack: 248, 236, 248, power_return_3, out, retdest {236: y0, 212: y2, 224: y4, 248: y2^2} + // stack: out, retdest {236: y0, 212: y2, 224: y4} + PUSH power_return_3 PUSH 224 DUP1 PUSH 212 + // stack: 212, 224, 224, power_return_3, out, retdest {236: y0, 212: y2, 224: y4} %jump(mul_fp12) power_return_3: - // stack: out, retdest {236: y0, 212: y2, 224: y4, 248: y0*y2^2} - PUSH power_return_4 PUSH 224 PUSH 248 PUSH 224 - // stack: 224, 248, 224, power_return_4, out, retdest {236: y0, 212: y2, 224: y4, 248: y0*y2^2} + // stack: out, retdest {236: y0, 212: y2, 224: y4} + PUSH power_return_4 PUSH 224 DUP1 PUSH 236 + // stack: 236, 224, 224, power_return_4, out, retdest {236: y0, 212: y2, 224: y4} %jump(mul_fp12) power_return_4: // stack: out, retdest {236: y0, 212: y2, 224: y4} @@ -229,9 +228,7 @@ power_loop_0_end: // stack: 200, ptr, 200, power_return %jump(mul_fp12) - %macro check(lbl) PUSH $lbl %jump(ret_stack) %endmacro - diff --git a/evm/src/cpu/kernel/tests/bn254_field.rs b/evm/src/cpu/kernel/tests/bn254_field.rs index c68f8bc0..e1817fa0 100644 --- a/evm/src/cpu/kernel/tests/bn254_field.rs +++ b/evm/src/cpu/kernel/tests/bn254_field.rs @@ -576,17 +576,18 @@ fn fast_exp(f: Fp12) -> Fp12 { sq = mul_fp12(sq, sq); } y0 = mul_fp12(y0, sq); - - println!("y0: {:#?}", y0); - println!("y2: {:#?}", y2); - println!("y4: {:#?}", y4); y0 = inv_fp12(y0); + // println!("y0: {:#?}", y0); + // println!("y4: {:#?}", y4); + y4 = mul_fp12(y4, y2); y4 = mul_fp12(y4, y2); y4 = mul_fp12(y4, y0); + println!("y4: {:#?}", y4); + y4 = frob_fp12(1, y4); y2 = frob_fp12(2, y2);