1
2# qhasm: int64 input_0
3
4# qhasm: int64 input_1
5
6# qhasm: int64 input_2
7
8# qhasm: int64 input_3
9
10# qhasm: int64 input_4
11
12# qhasm: int64 input_5
13
14# qhasm: stack64 input_6
15
16# qhasm: stack64 input_7
17
18# qhasm: int64 caller_r11
19
20# qhasm: int64 caller_r12
21
22# qhasm: int64 caller_r13
23
24# qhasm: int64 caller_r14
25
26# qhasm: int64 caller_r15
27
28# qhasm: int64 caller_rbx
29
30# qhasm: int64 caller_rbp
31
32# qhasm: int64 t
33
34# qhasm: int64 c
35
36# qhasm: int64 r
37
38# qhasm: enter vec_reduce_asm
39.p2align 5
40.global _PQCLEAN_MCELIECE348864F_AVX_vec_reduce_asm
41.global PQCLEAN_MCELIECE348864F_AVX_vec_reduce_asm
42_PQCLEAN_MCELIECE348864F_AVX_vec_reduce_asm:
43PQCLEAN_MCELIECE348864F_AVX_vec_reduce_asm:
44mov %rsp,%r11
45and $31,%r11
46add $0,%r11
47sub %r11,%rsp
48
49# qhasm: r = 0
50# asm 1: mov  $0,>r=int64#7
51# asm 2: mov  $0,>r=%rax
52mov  $0,%rax
53
54# qhasm: t = mem64[ input_0 + 88 ]
55# asm 1: movq   88(<input_0=int64#1),>t=int64#2
56# asm 2: movq   88(<input_0=%rdi),>t=%rsi
57movq   88(%rdi),%rsi
58
59# qhasm: c = count(t)
60# asm 1: popcnt <t=int64#2, >c=int64#2
61# asm 2: popcnt <t=%rsi, >c=%rsi
62popcnt %rsi, %rsi
63
64# qhasm: (uint32) c &= 1
65# asm 1: and  $1,<c=int64#2d
66# asm 2: and  $1,<c=%esi
67and  $1,%esi
68
69# qhasm: r <<= 1
70# asm 1: shl  $1,<r=int64#7
71# asm 2: shl  $1,<r=%rax
72shl  $1,%rax
73
74# qhasm: r |= c
75# asm 1: or   <c=int64#2,<r=int64#7
76# asm 2: or   <c=%rsi,<r=%rax
77or   %rsi,%rax
78
79# qhasm: t = mem64[ input_0 + 80 ]
80# asm 1: movq   80(<input_0=int64#1),>t=int64#2
81# asm 2: movq   80(<input_0=%rdi),>t=%rsi
82movq   80(%rdi),%rsi
83
84# qhasm: c = count(t)
85# asm 1: popcnt <t=int64#2, >c=int64#2
86# asm 2: popcnt <t=%rsi, >c=%rsi
87popcnt %rsi, %rsi
88
89# qhasm: (uint32) c &= 1
90# asm 1: and  $1,<c=int64#2d
91# asm 2: and  $1,<c=%esi
92and  $1,%esi
93
94# qhasm: r <<= 1
95# asm 1: shl  $1,<r=int64#7
96# asm 2: shl  $1,<r=%rax
97shl  $1,%rax
98
99# qhasm: r |= c
100# asm 1: or   <c=int64#2,<r=int64#7
101# asm 2: or   <c=%rsi,<r=%rax
102or   %rsi,%rax
103
104# qhasm: t = mem64[ input_0 + 72 ]
105# asm 1: movq   72(<input_0=int64#1),>t=int64#2
106# asm 2: movq   72(<input_0=%rdi),>t=%rsi
107movq   72(%rdi),%rsi
108
109# qhasm: c = count(t)
110# asm 1: popcnt <t=int64#2, >c=int64#2
111# asm 2: popcnt <t=%rsi, >c=%rsi
112popcnt %rsi, %rsi
113
114# qhasm: (uint32) c &= 1
115# asm 1: and  $1,<c=int64#2d
116# asm 2: and  $1,<c=%esi
117and  $1,%esi
118
119# qhasm: r <<= 1
120# asm 1: shl  $1,<r=int64#7
121# asm 2: shl  $1,<r=%rax
122shl  $1,%rax
123
124# qhasm: r |= c
125# asm 1: or   <c=int64#2,<r=int64#7
126# asm 2: or   <c=%rsi,<r=%rax
127or   %rsi,%rax
128
129# qhasm: t = mem64[ input_0 + 64 ]
130# asm 1: movq   64(<input_0=int64#1),>t=int64#2
131# asm 2: movq   64(<input_0=%rdi),>t=%rsi
132movq   64(%rdi),%rsi
133
134# qhasm: c = count(t)
135# asm 1: popcnt <t=int64#2, >c=int64#2
136# asm 2: popcnt <t=%rsi, >c=%rsi
137popcnt %rsi, %rsi
138
139# qhasm: (uint32) c &= 1
140# asm 1: and  $1,<c=int64#2d
141# asm 2: and  $1,<c=%esi
142and  $1,%esi
143
144# qhasm: r <<= 1
145# asm 1: shl  $1,<r=int64#7
146# asm 2: shl  $1,<r=%rax
147shl  $1,%rax
148
149# qhasm: r |= c
150# asm 1: or   <c=int64#2,<r=int64#7
151# asm 2: or   <c=%rsi,<r=%rax
152or   %rsi,%rax
153
154# qhasm: t = mem64[ input_0 + 56 ]
155# asm 1: movq   56(<input_0=int64#1),>t=int64#2
156# asm 2: movq   56(<input_0=%rdi),>t=%rsi
157movq   56(%rdi),%rsi
158
159# qhasm: c = count(t)
160# asm 1: popcnt <t=int64#2, >c=int64#2
161# asm 2: popcnt <t=%rsi, >c=%rsi
162popcnt %rsi, %rsi
163
164# qhasm: (uint32) c &= 1
165# asm 1: and  $1,<c=int64#2d
166# asm 2: and  $1,<c=%esi
167and  $1,%esi
168
169# qhasm: r <<= 1
170# asm 1: shl  $1,<r=int64#7
171# asm 2: shl  $1,<r=%rax
172shl  $1,%rax
173
174# qhasm: r |= c
175# asm 1: or   <c=int64#2,<r=int64#7
176# asm 2: or   <c=%rsi,<r=%rax
177or   %rsi,%rax
178
179# qhasm: t = mem64[ input_0 + 48 ]
180# asm 1: movq   48(<input_0=int64#1),>t=int64#2
181# asm 2: movq   48(<input_0=%rdi),>t=%rsi
182movq   48(%rdi),%rsi
183
184# qhasm: c = count(t)
185# asm 1: popcnt <t=int64#2, >c=int64#2
186# asm 2: popcnt <t=%rsi, >c=%rsi
187popcnt %rsi, %rsi
188
189# qhasm: (uint32) c &= 1
190# asm 1: and  $1,<c=int64#2d
191# asm 2: and  $1,<c=%esi
192and  $1,%esi
193
194# qhasm: r <<= 1
195# asm 1: shl  $1,<r=int64#7
196# asm 2: shl  $1,<r=%rax
197shl  $1,%rax
198
199# qhasm: r |= c
200# asm 1: or   <c=int64#2,<r=int64#7
201# asm 2: or   <c=%rsi,<r=%rax
202or   %rsi,%rax
203
204# qhasm: t = mem64[ input_0 + 40 ]
205# asm 1: movq   40(<input_0=int64#1),>t=int64#2
206# asm 2: movq   40(<input_0=%rdi),>t=%rsi
207movq   40(%rdi),%rsi
208
209# qhasm: c = count(t)
210# asm 1: popcnt <t=int64#2, >c=int64#2
211# asm 2: popcnt <t=%rsi, >c=%rsi
212popcnt %rsi, %rsi
213
214# qhasm: (uint32) c &= 1
215# asm 1: and  $1,<c=int64#2d
216# asm 2: and  $1,<c=%esi
217and  $1,%esi
218
219# qhasm: r <<= 1
220# asm 1: shl  $1,<r=int64#7
221# asm 2: shl  $1,<r=%rax
222shl  $1,%rax
223
224# qhasm: r |= c
225# asm 1: or   <c=int64#2,<r=int64#7
226# asm 2: or   <c=%rsi,<r=%rax
227or   %rsi,%rax
228
229# qhasm: t = mem64[ input_0 + 32 ]
230# asm 1: movq   32(<input_0=int64#1),>t=int64#2
231# asm 2: movq   32(<input_0=%rdi),>t=%rsi
232movq   32(%rdi),%rsi
233
234# qhasm: c = count(t)
235# asm 1: popcnt <t=int64#2, >c=int64#2
236# asm 2: popcnt <t=%rsi, >c=%rsi
237popcnt %rsi, %rsi
238
239# qhasm: (uint32) c &= 1
240# asm 1: and  $1,<c=int64#2d
241# asm 2: and  $1,<c=%esi
242and  $1,%esi
243
244# qhasm: r <<= 1
245# asm 1: shl  $1,<r=int64#7
246# asm 2: shl  $1,<r=%rax
247shl  $1,%rax
248
249# qhasm: r |= c
250# asm 1: or   <c=int64#2,<r=int64#7
251# asm 2: or   <c=%rsi,<r=%rax
252or   %rsi,%rax
253
254# qhasm: t = mem64[ input_0 + 24 ]
255# asm 1: movq   24(<input_0=int64#1),>t=int64#2
256# asm 2: movq   24(<input_0=%rdi),>t=%rsi
257movq   24(%rdi),%rsi
258
259# qhasm: c = count(t)
260# asm 1: popcnt <t=int64#2, >c=int64#2
261# asm 2: popcnt <t=%rsi, >c=%rsi
262popcnt %rsi, %rsi
263
264# qhasm: (uint32) c &= 1
265# asm 1: and  $1,<c=int64#2d
266# asm 2: and  $1,<c=%esi
267and  $1,%esi
268
269# qhasm: r <<= 1
270# asm 1: shl  $1,<r=int64#7
271# asm 2: shl  $1,<r=%rax
272shl  $1,%rax
273
274# qhasm: r |= c
275# asm 1: or   <c=int64#2,<r=int64#7
276# asm 2: or   <c=%rsi,<r=%rax
277or   %rsi,%rax
278
279# qhasm: t = mem64[ input_0 + 16 ]
280# asm 1: movq   16(<input_0=int64#1),>t=int64#2
281# asm 2: movq   16(<input_0=%rdi),>t=%rsi
282movq   16(%rdi),%rsi
283
284# qhasm: c = count(t)
285# asm 1: popcnt <t=int64#2, >c=int64#2
286# asm 2: popcnt <t=%rsi, >c=%rsi
287popcnt %rsi, %rsi
288
289# qhasm: (uint32) c &= 1
290# asm 1: and  $1,<c=int64#2d
291# asm 2: and  $1,<c=%esi
292and  $1,%esi
293
294# qhasm: r <<= 1
295# asm 1: shl  $1,<r=int64#7
296# asm 2: shl  $1,<r=%rax
297shl  $1,%rax
298
299# qhasm: r |= c
300# asm 1: or   <c=int64#2,<r=int64#7
301# asm 2: or   <c=%rsi,<r=%rax
302or   %rsi,%rax
303
304# qhasm: t = mem64[ input_0 + 8 ]
305# asm 1: movq   8(<input_0=int64#1),>t=int64#2
306# asm 2: movq   8(<input_0=%rdi),>t=%rsi
307movq   8(%rdi),%rsi
308
309# qhasm: c = count(t)
310# asm 1: popcnt <t=int64#2, >c=int64#2
311# asm 2: popcnt <t=%rsi, >c=%rsi
312popcnt %rsi, %rsi
313
314# qhasm: (uint32) c &= 1
315# asm 1: and  $1,<c=int64#2d
316# asm 2: and  $1,<c=%esi
317and  $1,%esi
318
319# qhasm: r <<= 1
320# asm 1: shl  $1,<r=int64#7
321# asm 2: shl  $1,<r=%rax
322shl  $1,%rax
323
324# qhasm: r |= c
325# asm 1: or   <c=int64#2,<r=int64#7
326# asm 2: or   <c=%rsi,<r=%rax
327or   %rsi,%rax
328
329# qhasm: t = mem64[ input_0 + 0 ]
330# asm 1: movq   0(<input_0=int64#1),>t=int64#1
331# asm 2: movq   0(<input_0=%rdi),>t=%rdi
332movq   0(%rdi),%rdi
333
334# qhasm: c = count(t)
335# asm 1: popcnt <t=int64#1, >c=int64#1
336# asm 2: popcnt <t=%rdi, >c=%rdi
337popcnt %rdi, %rdi
338
339# qhasm: (uint32) c &= 1
340# asm 1: and  $1,<c=int64#1d
341# asm 2: and  $1,<c=%edi
342and  $1,%edi
343
344# qhasm: r <<= 1
345# asm 1: shl  $1,<r=int64#7
346# asm 2: shl  $1,<r=%rax
347shl  $1,%rax
348
349# qhasm: r |= c
350# asm 1: or   <c=int64#1,<r=int64#7
351# asm 2: or   <c=%rdi,<r=%rax
352or   %rdi,%rax
353
354# qhasm: return r
355add %r11,%rsp
356ret
357