Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
macro_scrapbook.hpp
Go to the documentation of this file.
1
// === AUDIT STATUS ===
2
// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3
// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4
// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5
// =====================
6
7
// #define SQR(a) \
8
// "movq 0(" a "), %%rdx \n\t" /* load a[0] into %rdx */ \
9
// \
10
// "xorq %%r8, %%r8 \n\t" /* clear flags */ \
11
// /* compute a[0] *a[1], a[0]*a[2], a[0]*a[3], a[1]*a[2], a[1]*a[3], a[2]*a[3] */ \
12
// "mulxq %%rdx, %%r8, %%r12 \n\t" \
13
// "mulxq 8(" a "), %%r9, %%r13 \n\t" /* (r[1], r[2]) <- a[0] * a[1] */ \
14
// "mulxq 16(" a "), %%r10, %%r14 \n\t" /* (t[1], t[2]) <- a[0] * a[2] */ \
15
// "mulxq 24(" a "), %%r11, %%r15 \n\t" /* (r[3], r[4]) <- a[0] * a[3] */ \
16
// "adcxq %%r9, %%r9 \n\t" \
17
// "adoxq %%r12, %%r9 \n\t" \
18
// "adcxq %%r13, %%r10 \n\t" \
19
// "adoxq %%r10, %%r10 \n\t" \
20
// "adcxq %%r14, %%r11 \n\t" \
21
// "adoxq %%r11, %%r11 \n\t" \
22
// "adcxq %[zero_reference], %%r15 \n\t" \
23
// "adoxq %%r15, %%r15 \n\t" \
24
// /* perform modular reduction: r[0] */ \
25
// "movq %%r8, %%rdx \n\t" /* move r8 into %rdx */ \
26
// "mulxq %[r_inv], %%rdx, %%rdi \n\t" /* (%rdx, _) <- k = r[9] * r_inv */ \
27
// "mulxq %[modulus_0], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[0] * k) */ \
28
// "adcxq %%rdi, %%r8 \n\t" /* r[0] += t[0] (%r8 now free) */ \
29
// "adoxq %%rcx, %%r9 \n\t" /* r[1] += t[1] + flag_c */ \
30
// "mulxq %[modulus_1], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[1] * k) */ \
31
// "adcxq %%rdi, %%r9 \n\t" /* r[1] += t[2] */ \
32
// "adoxq %%rcx, %%r10 \n\t" /* r[2] += t[3] + flag_o */ \
33
// "mulxq %[modulus_2], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[3] * k) */ \
34
// "adcxq %%rdi, %%r10 \n\t" /* r[2] += t[0] + flag_c */ \
35
// "adoxq %%rcx, %%r11 \n\t" /* r[3] += t[1] + flag_o */ \
36
// "mulxq %[modulus_3], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[2] * k) */ \
37
// "adcxq %%rdi, %%r11 \n\t" /* r[3] += t[2] + flag_c */ \
38
// "adoxq %%rcx, %%r15 \n\t" /* t[4] += t[3] + flag_o */ \
39
// "adcxq %[zero_reference], %%r15 \n\t" /* t[4] += flag_c */ \
40
// \
41
// "movq %%r15, %%r12 \n\t" \
42
// "movq 8(" a "), %%rdx \n\t" /* load a[0] into %rdx */ \
43
// "mulxq %%rdx, %%r8, %%r15 \n\t" \
44
// "mulxq 16(" a "), %%r13, %%r14 \n\t" /* (t[1], t[2]) <- a[0] * a[2] */ \
45
// "mulxq 24(" a "), %%rdi, %%rdx \n\t" /* (r[3], r[4]) <- a[0] * a[3] */ \
46
// "adcxq %%r13, %%r13 \n\t" \
47
// "adoxq %%r15, %%r13 \n\t" \
48
// "adcxq %%r14, %%rdi \n\t" \
49
// "adoxq %%rdi, %%rdi \n\t" \
50
// "adcxq %[zero_reference], %%rdx \n\t" \
51
// "adoxq %%rdx, %%rdx \n\t" \
52
// \
53
// "adcxq %%r8, %%r10 \n\t" \
54
// "adcxq %%r13, %%r11 \n\t" \
55
// "adcxq %%rdi, %%r12 \n\t" \
56
// "adcxq %[zero_reference], %%rdx \n\t" \
57
// "movq %%rdx, %%r15 \n\t" \
58
// \
59
// "movq %%r9, %%rdx \n\t" /* move r8 into %rdx */ \
60
// "mulxq %[r_inv], %%rdx, %%rdi \n\t" /* (%rdx, _) <- k = r[9] * r_inv */ \
61
// "mulxq %[modulus_0], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[0] * k) */ \
62
// "adcxq %%rdi, %%r9 \n\t" /* r[0] += t[0] (%r8 now free) */ \
63
// "adoxq %%rcx, %%r10 \n\t" /* r[1] += t[1] + flag_c */ \
64
// "mulxq %[modulus_1], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[1] * k) */ \
65
// "adcxq %%rdi, %%r10 \n\t" /* r[1] += t[2] */ \
66
// "adoxq %%rcx, %%r11 \n\t" /* r[2] += t[3] + flag_o */ \
67
// "mulxq %[modulus_2], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[3] * k) */ \
68
// "adcxq %%rdi, %%r11 \n\t" /* r[2] += t[0] + flag_c */ \
69
// "adoxq %%rcx, %%r12 \n\t" /* r[3] += t[1] + flag_o */ \
70
// "mulxq %[modulus_3], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[2] * k) */ \
71
// "adcxq %%rdi, %%r12 \n\t" /* r[3] += t[2] + flag_c */ \
72
// "adoxq %%rcx, %%r15 \n\t" /* t[4] += t[3] + flag_o */ \
73
// "adcxq %[zero_reference], %%r15 \n\t" /* t[4] += flag_c */ \
74
// "movq %%r15, %%r13 \n\t" \
75
// \
76
// "movq 16(" a "), %%rdx \n\t" \
77
// "mulxq %%rdx, %%r8, %%r9 \n\t" \
78
// "mulxq 24(" a "), %%r14, %%r15 \n\t" \
79
// "adcxq %%r14, %%r14 \n\t" \
80
// "adoxq %%r9, %%r14 \n\t" \
81
// "adcxq %%r15, %%r15 \n\t" \
82
// "adoxq %[zero_reference], %%r15 \n\t" \
83
// "adcxq %%r8, %%r12 \n\t" \
84
// "adcxq %%r14, %%r13 \n\t" \
85
// "adcxq %[zero_reference], %%r15 \n\t" \
86
// "movq %%r10, %%rdx \n\t" /* move r8 into %rdx */ \
87
// "mulxq %[r_inv], %%rdx, %%rdi \n\t" /* (%rdx, _) <- k = r[9] * r_inv */ \
88
// "mulxq %[modulus_0], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[0] * k) */ \
89
// "adcxq %%rdi, %%r10 \n\t" /* r[0] += t[0] (%r8 now free) */ \
90
// "adoxq %%rcx, %%r11 \n\t" /* r[1] += t[1] + flag_c */ \
91
// "mulxq %[modulus_1], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[1] * k) */ \
92
// "adcxq %%rdi, %%r11 \n\t" /* r[1] += t[2] */ \
93
// "adoxq %%rcx, %%r12 \n\t" /* r[2] += t[3] + flag_o */ \
94
// "mulxq %[modulus_2], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[3] * k) */ \
95
// "adcxq %%rdi, %%r12 \n\t" /* r[2] += t[0] + flag_c */ \
96
// "adoxq %%rcx, %%r13 \n\t" /* r[3] += t[1] + flag_o */ \
97
// "mulxq %[modulus_3], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[2] * k) */ \
98
// "adcxq %%rdi, %%r13 \n\t" /* r[3] += t[2] + flag_c */ \
99
// "adoxq %%rcx, %%r15 \n\t" /* t[4] += t[3] + flag_o */ \
100
// "adcxq %[zero_reference], %%r15 \n\t" /* t[4] += flag_c */ \
101
// "movq %%r15, %%r14 \n\t" \
102
// \
103
// "movq 24(" a "), %%rdx \n\t " \
104
// "mulxq %%rdx, %%r8, %%r15 \n\t" \
105
// "adcxq %%r8, %%r14 \n\t" \
106
// "adcxq %[zero_reference], %%r15 \n\t" \
107
// "movq %%r11, %%rdx \n\t" /* move r8 into %rdx */ \
108
// "mulxq %[r_inv], %%rdx, %%rdi \n\t" /* (%rdx, _) <- k = r[9] * r_inv */ \
109
// "mulxq %[modulus_0], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[0] * k) */ \
110
// "adcxq %%rdi, %%r11 \n\t" /* r[0] += t[0] (%r8 now free) */ \
111
// "adoxq %%rcx, %%r12 \n\t" /* r[1] += t[1] + flag_c */ \
112
// "mulxq %[modulus_1], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[1] * k) */ \
113
// "adcxq %%rdi, %%r12 \n\t" /* r[1] += t[2] */ \
114
// "adoxq %%rcx, %%r13 \n\t" /* r[2] += t[3] + flag_o */ \
115
// "mulxq %[modulus_2], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[3] * k) */ \
116
// "adcxq %%rdi, %%r13 \n\t" /* r[2] += t[0] + flag_c */ \
117
// "adoxq %%rcx, %%r14 \n\t" /* r[3] += t[1] + flag_o */ \
118
// "mulxq %[modulus_3], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[2] * k) */ \
119
// "adcxq %%rdi, %%r14 \n\t" /* r[3] += t[2] + flag_c */ \
120
// "adoxq %%rcx, %%r15 \n\t" /* t[4] += t[3] + flag_o */ \
121
// "adcxq %[zero_reference], %%r15 \n\t" /* t[4] += flag_c */
src
barretenberg
ecc
fields
macro_scrapbook.hpp
Generated by
1.9.8