mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-13 03:03:05 +00:00
26 lines
575 B
NASM
26 lines
575 B
NASM
%macro as_u64
|
|
%and_const(0xffffffffffffffff)
|
|
%endmacro
|
|
|
|
// 64-bit right rotation
|
|
%macro rotr_64(rot)
|
|
// stack: value
|
|
PUSH $rot
|
|
// stack: rot, value
|
|
DUP2
|
|
DUP2
|
|
// stack: rot, value, rot, value
|
|
SHR
|
|
// stack: value >> rot, rot, value
|
|
%stack (shifted, rot, value) -> (rot, value, shifted)
|
|
// stack: rot, value, value >> rot
|
|
PUSH 64
|
|
SUB
|
|
// stack: 64 - rot, value, value >> rot
|
|
SHL
|
|
// stack: value << (64 - rot), value >> rot
|
|
%as_u64
|
|
// stack: (value << (64 - rot)) % (1 << 64), value >> rot
|
|
ADD
|
|
%endmacro
|