From 140242c556daa2b945cd1aa336bb4f2a92848f11 Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Fri, 9 Sep 2022 12:50:43 -0700 Subject: [PATCH] more %stack sha2 cleanup --- evm/src/cpu/kernel/asm/sha2/message_schedule.asm | 16 ++-------------- evm/src/cpu/kernel/asm/sha2/ops.asm | 2 +- evm/src/cpu/kernel/asm/sha2/store_pad.asm | 6 +----- 3 files changed, 4 insertions(+), 20 deletions(-) diff --git a/evm/src/cpu/kernel/asm/sha2/message_schedule.asm b/evm/src/cpu/kernel/asm/sha2/message_schedule.asm index e6daa0b8..6b2fa472 100644 --- a/evm/src/cpu/kernel/asm/sha2/message_schedule.asm +++ b/evm/src/cpu/kernel/asm/sha2/message_schedule.asm @@ -65,13 +65,7 @@ sha2_gen_message_schedule_from_block_0_end: POP PUSH 8 // stack: counter=8, output_addr, block[0], block[1], retdest - SWAP2 - // stack: block[0], output_addr, counter, block[1], retdest - SWAP3 - // stack: block[1], output_addr, counter, block[0], retdest - SWAP2 - // stack: counter, output_addr, block[1], block[0], retdest - SWAP1 + %stack (counter, out, b0, b1) -> (out, counter, b1, b0) // stack: output_addr, counter, block[1], block[0], retdest %add_const(64) // stack: output_addr + 64, counter, block[1], block[0], retdest @@ -191,13 +185,7 @@ sha2_gen_message_schedule_remaining_loop: %add_u32 %add_u32 // stack: sigma_1(x[output_addr - 2*4]) + x[output_addr - 16*4] + sigma_0(x[output_addr - 15*4]) + x[output_addr - 7*4], output_addr, counter, block[0], block[1], retdest - SWAP1 - // stack: output_addr, sigma_1(x[output_addr - 2*4]) + x[output_addr - 16*4] + sigma_0(x[output_addr - 15*4]) + x[output_addr - 7*4], counter, block[0], block[1], retdest - DUP1 - // stack: output_addr, output_addr, sigma_1(x[output_addr - 2*4]) + x[output_addr - 16*4] + sigma_0(x[output_addr - 15*4]) + x[output_addr - 7*4], counter, block[0], block[1], retdest - SWAP2 - // stack: sigma_1(x[output_addr - 2*4]) + x[output_addr - 16*4] + sigma_0(x[output_addr - 15*4]) + x[output_addr - 7*4], output_addr, output_addr, counter, block[0], block[1], retdest - SWAP1 + DUP2 // stack: output_addr, sigma_1(x[output_addr - 2*4]) + x[output_addr - 16*4] + sigma_0(x[output_addr - 15*4]) + x[output_addr - 7*4], output_addr, counter, block[0], block[1], retdest %mstore_kernel_general_u32 // stack: output_addr, counter, block[0], block[1], retdest diff --git a/evm/src/cpu/kernel/asm/sha2/ops.asm b/evm/src/cpu/kernel/asm/sha2/ops.asm index aced6530..7bd96a10 100644 --- a/evm/src/cpu/kernel/asm/sha2/ops.asm +++ b/evm/src/cpu/kernel/asm/sha2/ops.asm @@ -171,7 +171,7 @@ %macro sha2_majority // stack: x, y, z - %stack ((a: 3)) -> (a, a) + %stack ((xyz: 3)) -> (xyz, xyz) // stack: x, y, z, x, y, z AND // stack: x and y, z, x, y, z diff --git a/evm/src/cpu/kernel/asm/sha2/store_pad.asm b/evm/src/cpu/kernel/asm/sha2/store_pad.asm index b43441a1..82ed58c0 100644 --- a/evm/src/cpu/kernel/asm/sha2/store_pad.asm +++ b/evm/src/cpu/kernel/asm/sha2/store_pad.asm @@ -15,11 +15,7 @@ sha2_store_loop: ISZERO %jumpi(sha2_store_end) // stack: addr, counter, x[num_bytes-counter], ... , x[num_bytes-1], retdest - DUP1 - // stack: addr, addr, counter, x[num_bytes-counter], ... , x[num_bytes-1], retdest - SWAP3 - // stack: x[num_bytes-counter], addr, counter, addr, ... , x[num_bytes-1], retdest - SWAP1 + %stack (addr, counter, val) -> (addr, val, counter, addr) // stack: addr, x[num_bytes-counter], counter, addr, ... , x[num_bytes-1], retdest %mstore_kernel_general // stack: counter, addr, ... , x[num_bytes-1], retdest