-
-
Notifications
You must be signed in to change notification settings - Fork 156
/
Copy pathlow_x86-64.asm
153 lines (144 loc) · 2.58 KB
/
low_x86-64.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
; Linux rdi rsi rdx rcx
; Win rcx rdx r8 r9
%ifdef _WIN64
%define p1org rcx
%define p2org rdx
%define p3org r8
%define p4org r9
%else
%define p1org rdi
%define p2org rsi
%define p3org rdx
%define p4org rcx
%endif
%imacro proc 1
global %1
%1:
%endmacro
segment .text
%imacro addPre 1
mov rax, [p2org]
add rax, [p3org]
mov [p1org], rax
%assign i 1
%rep %1
mov rax, [p2org + i * 8]
adc rax, [p3org + i * 8]
mov [p1org + i * 8], rax
%assign i (i+1)
%endrep
setc al
movzx eax, al
ret
%endmacro
%imacro subNC 1
mov rax, [p2org]
sub rax, [p3org]
mov [p1org], rax
%assign i 1
%rep %1
mov rax, [p2org + i * 8]
sbb rax, [p3org + i * 8]
mov [p1org + i * 8], rax
%assign i (i+1)
%endrep
setc al
movzx eax, al
ret
%endmacro
proc mcl_fp_addPre64
addPre 0
proc mcl_fp_addPre128
addPre 1
proc mcl_fp_addPre192
addPre 2
proc mcl_fp_addPre256
addPre 3
proc mcl_fp_addPre320
addPre 4
proc mcl_fp_addPre384
addPre 5
proc mcl_fp_addPre448
addPre 6
proc mcl_fp_addPre512
addPre 7
proc mcl_fp_addPre576
addPre 8
proc mcl_fp_addPre640
addPre 9
proc mcl_fp_addPre704
addPre 10
proc mcl_fp_addPre768
addPre 11
proc mcl_fp_addPre832
addPre 12
proc mcl_fp_addPre896
addPre 13
proc mcl_fp_addPre960
addPre 14
proc mcl_fp_addPre1024
addPre 15
proc mcl_fp_addPre1088
addPre 16
proc mcl_fp_addPre1152
addPre 17
proc mcl_fp_addPre1216
addPre 18
proc mcl_fp_addPre1280
addPre 19
proc mcl_fp_addPre1344
addPre 20
proc mcl_fp_addPre1408
addPre 21
proc mcl_fp_addPre1472
addPre 22
proc mcl_fp_addPre1536
addPre 23
proc mcl_fp_subNC64
subNC 0
proc mcl_fp_subNC128
subNC 1
proc mcl_fp_subNC192
subNC 2
proc mcl_fp_subNC256
subNC 3
proc mcl_fp_subNC320
subNC 4
proc mcl_fp_subNC384
subNC 5
proc mcl_fp_subNC448
subNC 6
proc mcl_fp_subNC512
subNC 7
proc mcl_fp_subNC576
subNC 8
proc mcl_fp_subNC640
subNC 9
proc mcl_fp_subNC704
subNC 10
proc mcl_fp_subNC768
subNC 11
proc mcl_fp_subNC832
subNC 12
proc mcl_fp_subNC896
subNC 13
proc mcl_fp_subNC960
subNC 14
proc mcl_fp_subNC1024
subNC 15
proc mcl_fp_subNC1088
subNC 16
proc mcl_fp_subNC1152
subNC 17
proc mcl_fp_subNC1216
subNC 18
proc mcl_fp_subNC1280
subNC 19
proc mcl_fp_subNC1344
subNC 20
proc mcl_fp_subNC1408
subNC 21
proc mcl_fp_subNC1472
subNC 22
proc mcl_fp_subNC1536
subNC 23