circom/c/buildasm/fr.asm.ejs
c/buildasm/fr.asm.ejsRaw
1
2
3 global <%=name%>_copy
4 global <%=name%>_copyn
5 global <%=name%>_add
6 global <%=name%>_sub
7 global <%=name%>_neg
8 global <%=name%>_mul
9 global <%=name%>_square
10 global <%=name%>_band
11 global <%=name%>_bor
12 global <%=name%>_bxor
13 global <%=name%>_bnot
14 global <%=name%>_eq
15 global <%=name%>_neq
16 global <%=name%>_lt
17 global <%=name%>_gt
18 global <%=name%>_leq
19 global <%=name%>_geq
20 global <%=name%>_land
21 global <%=name%>_lor
22 global <%=name%>_lnot
23 global <%=name%>_toNormal
24 global <%=name%>_toLongNormal
25 global <%=name%>_toMontgomery
26 global <%=name%>_q
27 DEFAULT REL
28
29 section .text
30<%- include('utils.asm.ejs'); %>
31<%- include('copy.asm.ejs'); %>
32<%- include('montgomery.asm.ejs'); %>
33<%- include('add.asm.ejs'); %>
34<%- include('sub.asm.ejs'); %>
35<%- include('neg.asm.ejs'); %>
36<%- include('mul.asm.ejs'); %>
37<%- include('binops.asm.ejs'); %>
38<%- include('cmpops.asm.ejs'); %>
39<%- include('logicalops.asm.ejs'); %>
40
41 section .data
42<%=name%>_q:
43 dd 0
44 dd 0x80000000
45q dq <%= constantElement(q) %>
46half dq <%= constantElement(q.shiftRight(1)) %>
47R2 dq <%= constantElement(bigInt.one.shiftLeft(n64*64*2).mod(q)) %>
48R3 dq <%= constantElement(bigInt.one.shiftLeft(n64*64*3).mod(q)) %>
49lboMask dq 0x<%= bigInt("8000000000000000",16).shiftRight(n64*64 - q.bitLength()).minus(bigInt.one).toString(16) %>
50