VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.7/crypto/genasm-nasm/keccak1600-mmx.S@ 107835

Last change on this file since 107835 was 83531, checked in by vboxsync, 5 years ago

setting svn:sync-process=export for openssl-1.1.1f, all files except tests

File size: 7.7 KB
Line 
1%ifidn __OUTPUT_FORMAT__,obj
2section code use32 class=code align=64
3%elifidn __OUTPUT_FORMAT__,win32
4section .text code align=64
5%else
6section .text code
7%endif
8align 16
9__KeccakF1600:
10 movq mm0,[60+esi]
11 movq mm1,[68+esi]
12 movq mm2,[76+esi]
13 movq mm3,[84+esi]
14 movq mm4,[92+esi]
15 mov ecx,24
16 jmp NEAR L$000loop
17align 16
18L$000loop:
19 pxor mm0,[esi-100]
20 pxor mm1,[esi-92]
21 pxor mm2,[esi-84]
22 pxor mm3,[esi-76]
23 pxor mm4,[esi-68]
24 pxor mm0,[esi-60]
25 pxor mm1,[esi-52]
26 pxor mm2,[esi-44]
27 pxor mm3,[esi-36]
28 pxor mm4,[esi-28]
29 pxor mm0,[esi-20]
30 pxor mm1,[esi-12]
31 pxor mm2,[esi-4]
32 pxor mm3,[4+esi]
33 pxor mm4,[12+esi]
34 pxor mm2,[36+esi]
35 pxor mm0,[20+esi]
36 pxor mm1,[28+esi]
37 pxor mm3,[44+esi]
38 movq mm5,mm2
39 pxor mm4,[52+esi]
40 movq mm7,mm2
41 psrlq mm5,63
42 movq mm6,mm0
43 psllq mm7,1
44 pxor mm5,mm0
45 psrlq mm0,63
46 pxor mm5,mm7
47 psllq mm6,1
48 movq mm7,mm1
49 movq [12+esp],mm5
50 pxor mm6,mm0
51 psrlq mm7,63
52 pxor mm6,mm3
53 movq mm0,mm1
54 movq [36+esp],mm6
55 psllq mm0,1
56 pxor mm7,mm4
57 pxor mm0,mm7
58 movq mm7,mm3
59 psrlq mm3,63
60 movq [4+esp],mm0
61 psllq mm7,1
62 movq mm5,mm4
63 psrlq mm4,63
64 pxor mm1,mm3
65 psllq mm5,1
66 pxor mm1,mm7
67 pxor mm2,mm4
68 movq [20+esp],mm1
69 pxor mm2,mm5
70 movq mm3,[44+esi]
71 movq [28+esp],mm2
72 pxor mm3,mm2
73 movq mm4,[92+esi]
74 movq mm7,mm3
75 psrlq mm3,43
76 pxor mm4,mm6
77 psllq mm7,21
78 movq mm6,mm4
79 psrlq mm4,50
80 por mm3,mm7
81 psllq mm6,14
82 movq mm2,[esi-4]
83 por mm4,mm6
84 pxor mm2,mm1
85 movq mm1,[esi-52]
86 movq mm6,mm2
87 psrlq mm2,21
88 pxor mm1,[12+esp]
89 psllq mm6,43
90 movq mm7,mm1
91 psrlq mm1,20
92 por mm2,mm6
93 psllq mm7,44
94 pxor mm0,[esi-100]
95 por mm1,mm7
96 movq mm5,mm1
97 movq mm6,mm2
98 pandn mm5,mm2
99 pandn mm2,mm3
100 pxor mm5,mm0
101 pxor mm2,mm1
102 pxor mm5,[ebx]
103 lea ebx,[8+ebx]
104 movq mm7,mm3
105 movq [edi-100],mm5
106 movq mm5,mm4
107 pandn mm3,mm4
108 pandn mm4,mm0
109 pxor mm3,mm6
110 movq [edi-92],mm2
111 pxor mm4,mm7
112 movq mm7,[esi-76]
113 movq [edi-84],mm3
114 pandn mm0,mm1
115 movq [edi-76],mm4
116 pxor mm0,mm5
117 pxor mm7,[28+esp]
118 movq [edi-68],mm0
119 movq mm0,mm7
120 psrlq mm7,36
121 movq mm1,[esi-28]
122 psllq mm0,28
123 pxor mm1,[36+esp]
124 por mm0,mm7
125 movq mm6,mm1
126 psrlq mm1,44
127 movq mm2,[esi-20]
128 psllq mm6,20
129 pxor mm2,[4+esp]
130 por mm1,mm6
131 movq mm7,mm2
132 psrlq mm2,61
133 movq mm3,[28+esi]
134 psllq mm7,3
135 pxor mm3,[12+esp]
136 por mm2,mm7
137 movq mm5,mm3
138 psrlq mm3,19
139 movq mm4,[76+esi]
140 psllq mm5,45
141 pxor mm4,[20+esp]
142 por mm3,mm5
143 movq mm6,mm4
144 psrlq mm4,3
145 psllq mm6,61
146 por mm4,mm6
147 movq mm5,mm1
148 movq mm6,mm2
149 pandn mm5,mm2
150 pandn mm2,mm3
151 pxor mm5,mm0
152 pxor mm2,mm1
153 movq mm7,mm3
154 movq [edi-60],mm5
155 movq mm5,mm4
156 pandn mm3,mm4
157 pandn mm4,mm0
158 pxor mm3,mm6
159 movq [edi-52],mm2
160 pxor mm4,mm7
161 movq mm7,[esi-92]
162 movq [edi-44],mm3
163 pandn mm0,mm1
164 movq [edi-36],mm4
165 pxor mm0,mm5
166 pxor mm7,[12+esp]
167 movq [edi-28],mm0
168 movq mm0,mm7
169 psrlq mm7,63
170 movq mm1,[esi-44]
171 psllq mm0,1
172 pxor mm1,[20+esp]
173 por mm0,mm7
174 movq mm6,mm1
175 psrlq mm1,58
176 movq mm2,[4+esi]
177 psllq mm6,6
178 pxor mm2,[28+esp]
179 por mm1,mm6
180 movq mm7,mm2
181 psrlq mm2,39
182 movq mm3,[52+esi]
183 psllq mm7,25
184 pxor mm3,[36+esp]
185 por mm2,mm7
186 movq mm5,mm3
187 psrlq mm3,56
188 movq mm4,[60+esi]
189 psllq mm5,8
190 pxor mm4,[4+esp]
191 por mm3,mm5
192 movq mm6,mm4
193 psrlq mm4,46
194 psllq mm6,18
195 por mm4,mm6
196 movq mm5,mm1
197 movq mm6,mm2
198 pandn mm5,mm2
199 pandn mm2,mm3
200 pxor mm5,mm0
201 pxor mm2,mm1
202 movq mm7,mm3
203 movq [edi-20],mm5
204 movq mm5,mm4
205 pandn mm3,mm4
206 pandn mm4,mm0
207 pxor mm3,mm6
208 movq [edi-12],mm2
209 pxor mm4,mm7
210 movq mm7,[esi-68]
211 movq [edi-4],mm3
212 pandn mm0,mm1
213 movq [4+edi],mm4
214 pxor mm0,mm5
215 pxor mm7,[36+esp]
216 movq [12+edi],mm0
217 movq mm0,mm7
218 psrlq mm7,37
219 movq mm1,[esi-60]
220 psllq mm0,27
221 pxor mm1,[4+esp]
222 por mm0,mm7
223 movq mm6,mm1
224 psrlq mm1,28
225 movq mm2,[esi-12]
226 psllq mm6,36
227 pxor mm2,[12+esp]
228 por mm1,mm6
229 movq mm7,mm2
230 psrlq mm2,54
231 movq mm3,[36+esi]
232 psllq mm7,10
233 pxor mm3,[20+esp]
234 por mm2,mm7
235 movq mm5,mm3
236 psrlq mm3,49
237 movq mm4,[84+esi]
238 psllq mm5,15
239 pxor mm4,[28+esp]
240 por mm3,mm5
241 movq mm6,mm4
242 psrlq mm4,8
243 psllq mm6,56
244 por mm4,mm6
245 movq mm5,mm1
246 movq mm6,mm2
247 pandn mm5,mm2
248 pandn mm2,mm3
249 pxor mm5,mm0
250 pxor mm2,mm1
251 movq mm7,mm3
252 movq [20+edi],mm5
253 movq mm5,mm4
254 pandn mm3,mm4
255 pandn mm4,mm0
256 pxor mm3,mm6
257 movq [28+edi],mm2
258 pxor mm4,mm7
259 movq mm7,[esi-84]
260 movq [36+edi],mm3
261 pandn mm0,mm1
262 movq [44+edi],mm4
263 pxor mm0,mm5
264 pxor mm7,[20+esp]
265 movq [52+edi],mm0
266 movq mm0,mm7
267 psrlq mm7,2
268 movq mm1,[esi-36]
269 psllq mm0,62
270 pxor mm1,[28+esp]
271 por mm0,mm7
272 movq mm6,mm1
273 psrlq mm1,9
274 movq mm2,[12+esi]
275 psllq mm6,55
276 pxor mm2,[36+esp]
277 por mm1,mm6
278 movq mm7,mm2
279 psrlq mm2,25
280 movq mm3,[20+esi]
281 psllq mm7,39
282 pxor mm3,[4+esp]
283 por mm2,mm7
284 movq mm5,mm3
285 psrlq mm3,23
286 movq mm4,[68+esi]
287 psllq mm5,41
288 pxor mm4,[12+esp]
289 por mm3,mm5
290 movq mm6,mm4
291 psrlq mm4,62
292 psllq mm6,2
293 por mm4,mm6
294 movq mm5,mm0
295 xor edi,esi
296 movq [12+esp],mm1
297 xor esi,edi
298 xor edi,esi
299 movq mm6,mm1
300 movq mm7,mm2
301 pandn mm6,mm2
302 pandn mm7,mm3
303 pxor mm0,mm6
304 pxor mm1,mm7
305 movq mm6,mm3
306 movq [60+esi],mm0
307 pandn mm6,mm4
308 movq [68+esi],mm1
309 pxor mm2,mm6
310 movq mm7,mm4
311 movq [76+esi],mm2
312 pandn mm7,mm5
313 pandn mm5,[12+esp]
314 pxor mm3,mm7
315 pxor mm4,mm5
316 movq [84+esi],mm3
317 sub ecx,1
318 movq [92+esi],mm4
319 jnz NEAR L$000loop
320 lea ebx,[ebx-192]
321 ret
322global _KeccakF1600
323align 16
324_KeccakF1600:
325L$_KeccakF1600_begin:
326 push ebp
327 push ebx
328 push esi
329 push edi
330 mov esi,DWORD [20+esp]
331 mov ebp,esp
332 sub esp,240
333 call L$001pic_point
334L$001pic_point:
335 pop ebx
336 lea ebx,[(L$iotas-L$001pic_point)+ebx]
337 and esp,-8
338 lea esi,[100+esi]
339 lea edi,[140+esp]
340 call __KeccakF1600
341 mov esp,ebp
342 emms
343 pop edi
344 pop esi
345 pop ebx
346 pop ebp
347 ret
348global _SHA3_absorb
349align 16
350_SHA3_absorb:
351L$_SHA3_absorb_begin:
352 push ebp
353 push ebx
354 push esi
355 push edi
356 mov esi,DWORD [20+esp]
357 mov eax,DWORD [24+esp]
358 mov ecx,DWORD [28+esp]
359 mov edx,DWORD [32+esp]
360 mov ebp,esp
361 sub esp,248
362 call L$002pic_point
363L$002pic_point:
364 pop ebx
365 lea ebx,[(L$iotas-L$002pic_point)+ebx]
366 and esp,-8
367 mov edi,esi
368 lea esi,[100+esi]
369 mov DWORD [ebp-4],edx
370 jmp NEAR L$003loop
371align 16
372L$003loop:
373 cmp ecx,edx
374 jc NEAR L$004absorbed
375 shr edx,3
376L$005block:
377 movq mm0,[eax]
378 lea eax,[8+eax]
379 pxor mm0,[edi]
380 lea edi,[8+edi]
381 sub ecx,8
382 movq [edi-8],mm0
383 dec edx
384 jnz NEAR L$005block
385 lea edi,[140+esp]
386 mov DWORD [ebp-8],ecx
387 call __KeccakF1600
388 mov ecx,DWORD [ebp-8]
389 mov edx,DWORD [ebp-4]
390 lea edi,[esi-100]
391 jmp NEAR L$003loop
392align 16
393L$004absorbed:
394 mov eax,ecx
395 mov esp,ebp
396 emms
397 pop edi
398 pop esi
399 pop ebx
400 pop ebp
401 ret
402global _SHA3_squeeze
403align 16
404_SHA3_squeeze:
405L$_SHA3_squeeze_begin:
406 push ebp
407 push ebx
408 push esi
409 push edi
410 mov esi,DWORD [20+esp]
411 mov eax,DWORD [24+esp]
412 mov ecx,DWORD [28+esp]
413 mov edx,DWORD [32+esp]
414 mov ebp,esp
415 sub esp,248
416 call L$006pic_point
417L$006pic_point:
418 pop ebx
419 lea ebx,[(L$iotas-L$006pic_point)+ebx]
420 and esp,-8
421 shr edx,3
422 mov edi,esi
423 lea esi,[100+esi]
424 mov DWORD [ebp-4],edx
425 jmp NEAR L$007loop
426align 16
427L$007loop:
428 cmp ecx,8
429 jc NEAR L$008tail
430 movq mm0,[edi]
431 lea edi,[8+edi]
432 movq [eax],mm0
433 lea eax,[8+eax]
434 sub ecx,8
435 jz NEAR L$009done
436 dec edx
437 jnz NEAR L$007loop
438 lea edi,[140+esp]
439 mov DWORD [ebp-8],ecx
440 call __KeccakF1600
441 mov ecx,DWORD [ebp-8]
442 mov edx,DWORD [ebp-4]
443 lea edi,[esi-100]
444 jmp NEAR L$007loop
445align 16
446L$008tail:
447 mov esi,edi
448 mov edi,eax
449dd 0xA4F39066
450L$009done:
451 mov esp,ebp
452 emms
453 pop edi
454 pop esi
455 pop ebx
456 pop ebp
457 ret
458align 32
459L$iotas:
460dd 1,0
461dd 32898,0
462dd 32906,2147483648
463dd 2147516416,2147483648
464dd 32907,0
465dd 2147483649,0
466dd 2147516545,2147483648
467dd 32777,2147483648
468dd 138,0
469dd 136,0
470dd 2147516425,0
471dd 2147483658,0
472dd 2147516555,0
473dd 139,2147483648
474dd 32905,2147483648
475dd 32771,2147483648
476dd 32770,2147483648
477dd 128,2147483648
478dd 32778,0
479dd 2147483658,2147483648
480dd 2147516545,2147483648
481dd 32896,2147483648
482dd 2147483649,0
483dd 2147516424,2147483648
484db 75,101,99,99,97,107,45,49,54,48,48,32,97,98,115,111
485db 114,98,32,97,110,100,32,115,113,117,101,101,122,101,32,102
486db 111,114,32,77,77,88,44,32,67,82,89,80,84,79,71,65
487db 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
488db 110,115,115,108,46,111,114,103,62,0
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette