VirtualBox

source: vbox/trunk/src/libs/openssl-3.1.4/crypto/genasm-macosx/keccak1600-mmx.S@ 103582

最後變更 在這個檔案從103582是 83531,由 vboxsync 提交於 5 年 前

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

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

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