From dbeabb8075ff352b2d7841521de983b4af8ba41c Mon Sep 17 00:00:00 2001 From: Dmitry Vagner Date: Thu, 8 Dec 2022 17:38:27 -0800 Subject: [PATCH] storefp12 macro --- .../bn254/field_arithmetic/field_macros.asm | 56 ++++++++++++++++++- .../curve/bn254/field_arithmetic/inverse.asm | 4 +- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/field_macros.asm b/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/field_macros.asm index f7525144..27711417 100644 --- a/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/field_macros.asm +++ b/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/field_macros.asm @@ -918,7 +918,61 @@ // stack: x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, x10, x11 %endmacro -%macro assert_eq_unit_fp12 +%macro store_fp12 + // stack: ptr, x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, x10, x11 + SWAP11 + // stack: x10, x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + DUP12 %add_const(10) + // stack: ind10, x10, x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + DUP11 + // stack: ind00, x00, x01, x02, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x01, x02, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + DUP10 %add_const(01) + // stack: ind01, x01, x02, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x02, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + DUP10 %add_const(02) + // stack: ind02, x02, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x03, x04, x05, x06, x07, x08, x09, ptr, x11 + DUP10 %add_const(03) + // stack: ind03, x03, x04, x05, x06, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x04, x05, x06, x07, x08, x09, ptr, x11 + DUP10 %add_const(04) + // stack: ind04, x04, x05, x06, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x05, x06, x07, x08, x09, ptr, x11 + DUP10 %add_const(05) + // stack: ind05, x05, x06, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x06, x07, x08, x09, ptr, x11 + DUP10 %add_const(06) + // stack: ind06, x06, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x07, x08, x09, ptr, x11 + DUP10 %add_const(07) + // stack: ind07, x07, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x08, x09, ptr, x11 + DUP10 %add_const(08) + // stack: ind08, x08, x09, ptr, x11 + %mstore_kernel_general + // stack: x09, ptr, x11 + DUP10 %add_const(09) + // stack: ind09, x09, ptr, x11 + %mstore_kernel_general + // stack: ptr, x11 + %add_const(11) + // stack: ind11, x11 + %mstore_kernel_general + // stack: +%endmacro + +%macro assert_eq_fp12_unit // stack: ptr DUP1 %mload_kernel_code // stack: x00, ptr diff --git a/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/inverse.asm b/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/inverse.asm index 4e72d782..ad9aeff3 100644 --- a/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/inverse.asm +++ b/evm/src/cpu/kernel/asm/curve/bn254/field_arithmetic/inverse.asm @@ -44,7 +44,7 @@ global inverse_fp12: // stack: inv, f^-1, inv, f, ptr, inv, retdest %store_fp12 // stack: inv, f, ptr, inv, retdest - %stack (inv, f: 12) -> () + POP %pop4 %pop4 %pop4 // stack: ptr, inv, retdest PUSH 200 PUSH check_inv // stack: check_inv, 200, ptr, inv, retdest @@ -53,7 +53,7 @@ global inverse_fp12: %jump(mul_fp12) global check_inv: // stack: 200, ptr, inv, retdest - %assert_eq_unit_fp12 + %assert_eq_fp12_unit // stack: ptr, inv, retdest POP SWAP1 // stack: retdest, inv