barretenberg
Loading...
Searching...
No Matches
macro_scrapbook.hpp
1
2// #define SQR(a) \
3// "movq 0(" a "), %%rdx \n\t" /* load a[0] into %rdx */ \
4// \
5// "xorq %%r8, %%r8 \n\t" /* clear flags */ \
6// /* 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] */ \
7// "mulxq %%rdx, %%r8, %%r12 \n\t" \
8// "mulxq 8(" a "), %%r9, %%r13 \n\t" /* (r[1], r[2]) <- a[0] * a[1] */ \
9// "mulxq 16(" a "), %%r10, %%r14 \n\t" /* (t[1], t[2]) <- a[0] * a[2] */ \
10// "mulxq 24(" a "), %%r11, %%r15 \n\t" /* (r[3], r[4]) <- a[0] * a[3] */ \
11// "adcxq %%r9, %%r9 \n\t" \
12// "adoxq %%r12, %%r9 \n\t" \
13// "adcxq %%r13, %%r10 \n\t" \
14// "adoxq %%r10, %%r10 \n\t" \
15// "adcxq %%r14, %%r11 \n\t" \
16// "adoxq %%r11, %%r11 \n\t" \
17// "adcxq %[zero_reference], %%r15 \n\t" \
18// "adoxq %%r15, %%r15 \n\t" \
19// /* perform modular reduction: r[0] */ \
20// "movq %%r8, %%rdx \n\t" /* move r8 into %rdx */ \
21// "mulxq %[r_inv], %%rdx, %%rdi \n\t" /* (%rdx, _) <- k = r[9] * r_inv */ \
22// "mulxq %[modulus_0], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[0] * k) */ \
23// "adcxq %%rdi, %%r8 \n\t" /* r[0] += t[0] (%r8 now free) */ \
24// "adoxq %%rcx, %%r9 \n\t" /* r[1] += t[1] + flag_c */ \
25// "mulxq %[modulus_1], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[1] * k) */ \
26// "adcxq %%rdi, %%r9 \n\t" /* r[1] += t[2] */ \
27// "adoxq %%rcx, %%r10 \n\t" /* r[2] += t[3] + flag_o */ \
28// "mulxq %[modulus_2], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[3] * k) */ \
29// "adcxq %%rdi, %%r10 \n\t" /* r[2] += t[0] + flag_c */ \
30// "adoxq %%rcx, %%r11 \n\t" /* r[3] += t[1] + flag_o */ \
31// "mulxq %[modulus_3], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[2] * k) */ \
32// "adcxq %%rdi, %%r11 \n\t" /* r[3] += t[2] + flag_c */ \
33// "adoxq %%rcx, %%r15 \n\t" /* t[4] += t[3] + flag_o */ \
34// "adcxq %[zero_reference], %%r15 \n\t" /* t[4] += flag_c */ \
35// \
36// "movq %%r15, %%r12 \n\t" \
37// "movq 8(" a "), %%rdx \n\t" /* load a[0] into %rdx */ \
38// "mulxq %%rdx, %%r8, %%r15 \n\t" \
39// "mulxq 16(" a "), %%r13, %%r14 \n\t" /* (t[1], t[2]) <- a[0] * a[2] */ \
40// "mulxq 24(" a "), %%rdi, %%rdx \n\t" /* (r[3], r[4]) <- a[0] * a[3] */ \
41// "adcxq %%r13, %%r13 \n\t" \
42// "adoxq %%r15, %%r13 \n\t" \
43// "adcxq %%r14, %%rdi \n\t" \
44// "adoxq %%rdi, %%rdi \n\t" \
45// "adcxq %[zero_reference], %%rdx \n\t" \
46// "adoxq %%rdx, %%rdx \n\t" \
47// \
48// "adcxq %%r8, %%r10 \n\t" \
49// "adcxq %%r13, %%r11 \n\t" \
50// "adcxq %%rdi, %%r12 \n\t" \
51// "adcxq %[zero_reference], %%rdx \n\t" \
52// "movq %%rdx, %%r15 \n\t" \
53// \
54// "movq %%r9, %%rdx \n\t" /* move r8 into %rdx */ \
55// "mulxq %[r_inv], %%rdx, %%rdi \n\t" /* (%rdx, _) <- k = r[9] * r_inv */ \
56// "mulxq %[modulus_0], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[0] * k) */ \
57// "adcxq %%rdi, %%r9 \n\t" /* r[0] += t[0] (%r8 now free) */ \
58// "adoxq %%rcx, %%r10 \n\t" /* r[1] += t[1] + flag_c */ \
59// "mulxq %[modulus_1], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[1] * k) */ \
60// "adcxq %%rdi, %%r10 \n\t" /* r[1] += t[2] */ \
61// "adoxq %%rcx, %%r11 \n\t" /* r[2] += t[3] + flag_o */ \
62// "mulxq %[modulus_2], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[3] * k) */ \
63// "adcxq %%rdi, %%r11 \n\t" /* r[2] += t[0] + flag_c */ \
64// "adoxq %%rcx, %%r12 \n\t" /* r[3] += t[1] + flag_o */ \
65// "mulxq %[modulus_3], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[2] * k) */ \
66// "adcxq %%rdi, %%r12 \n\t" /* r[3] += t[2] + flag_c */ \
67// "adoxq %%rcx, %%r15 \n\t" /* t[4] += t[3] + flag_o */ \
68// "adcxq %[zero_reference], %%r15 \n\t" /* t[4] += flag_c */ \
69// "movq %%r15, %%r13 \n\t" \
70// \
71// "movq 16(" a "), %%rdx \n\t" \
72// "mulxq %%rdx, %%r8, %%r9 \n\t" \
73// "mulxq 24(" a "), %%r14, %%r15 \n\t" \
74// "adcxq %%r14, %%r14 \n\t" \
75// "adoxq %%r9, %%r14 \n\t" \
76// "adcxq %%r15, %%r15 \n\t" \
77// "adoxq %[zero_reference], %%r15 \n\t" \
78// "adcxq %%r8, %%r12 \n\t" \
79// "adcxq %%r14, %%r13 \n\t" \
80// "adcxq %[zero_reference], %%r15 \n\t" \
81// "movq %%r10, %%rdx \n\t" /* move r8 into %rdx */ \
82// "mulxq %[r_inv], %%rdx, %%rdi \n\t" /* (%rdx, _) <- k = r[9] * r_inv */ \
83// "mulxq %[modulus_0], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[0] * k) */ \
84// "adcxq %%rdi, %%r10 \n\t" /* r[0] += t[0] (%r8 now free) */ \
85// "adoxq %%rcx, %%r11 \n\t" /* r[1] += t[1] + flag_c */ \
86// "mulxq %[modulus_1], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[1] * k) */ \
87// "adcxq %%rdi, %%r11 \n\t" /* r[1] += t[2] */ \
88// "adoxq %%rcx, %%r12 \n\t" /* r[2] += t[3] + flag_o */ \
89// "mulxq %[modulus_2], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[3] * k) */ \
90// "adcxq %%rdi, %%r12 \n\t" /* r[2] += t[0] + flag_c */ \
91// "adoxq %%rcx, %%r13 \n\t" /* r[3] += t[1] + flag_o */ \
92// "mulxq %[modulus_3], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[2] * k) */ \
93// "adcxq %%rdi, %%r13 \n\t" /* r[3] += t[2] + flag_c */ \
94// "adoxq %%rcx, %%r15 \n\t" /* t[4] += t[3] + flag_o */ \
95// "adcxq %[zero_reference], %%r15 \n\t" /* t[4] += flag_c */ \
96// "movq %%r15, %%r14 \n\t" \
97// \
98// "movq 24(" a "), %%rdx \n\t " \
99// "mulxq %%rdx, %%r8, %%r15 \n\t" \
100// "adcxq %%r8, %%r14 \n\t" \
101// "adcxq %[zero_reference], %%r15 \n\t" \
102// "movq %%r11, %%rdx \n\t" /* move r8 into %rdx */ \
103// "mulxq %[r_inv], %%rdx, %%rdi \n\t" /* (%rdx, _) <- k = r[9] * r_inv */ \
104// "mulxq %[modulus_0], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[0] * k) */ \
105// "adcxq %%rdi, %%r11 \n\t" /* r[0] += t[0] (%r8 now free) */ \
106// "adoxq %%rcx, %%r12 \n\t" /* r[1] += t[1] + flag_c */ \
107// "mulxq %[modulus_1], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[1] * k) */ \
108// "adcxq %%rdi, %%r12 \n\t" /* r[1] += t[2] */ \
109// "adoxq %%rcx, %%r13 \n\t" /* r[2] += t[3] + flag_o */ \
110// "mulxq %[modulus_2], %%rdi, %%rcx \n\t" /* (t[0], t[1]) <- (modulus[3] * k) */ \
111// "adcxq %%rdi, %%r13 \n\t" /* r[2] += t[0] + flag_c */ \
112// "adoxq %%rcx, %%r14 \n\t" /* r[3] += t[1] + flag_o */ \
113// "mulxq %[modulus_3], %%rdi, %%rcx \n\t" /* (t[2], t[3]) <- (modulus[2] * k) */ \
114// "adcxq %%rdi, %%r14 \n\t" /* r[3] += t[2] + flag_c */ \
115// "adoxq %%rcx, %%r15 \n\t" /* t[4] += t[3] + flag_o */ \
116// "adcxq %[zero_reference], %%r15 \n\t" /* t[4] += flag_c */