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)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…