INNER CODE UNIT · Python
gen_montRed
herumi/mcl · misc/gen_test.py:100
def gen_montRed(N):
align(16)
with FuncProc(f'mclb_montRed_fast{N}'):
with StackFrame(3, N*2-2, useRDX=True, stackSizeByte=N*8*3) as sf:
py = sf.p[0]
px = sf.p[1]
pp = sf.p[2]
q = rsp # q[N]
t = rsp + N*8 # t[N*2]
inner_mulLow_fastN(q, px, pp - N*8, sf.t, N)
gen_mulPreN(t, q, pp, sf.t[0:N], sf.t[N], N)
for i in range(N):
mov(rax, ptr(t + i*8))
add_ex(rax, ptr(px + i*8), i == 0)
y1 = sf.t[0:N]
y2 = sf.t[N:]
y2.append(rdx)
y2.append(rax)