1// Code generated by command: go run blake2s_amd64_asm.go -out ../blake2s_amd64.s -pkg blake2s. DO NOT EDIT.
2
3//go:build amd64 && gc && !purego
4
5#include "textflag.h"
6
7// func hashBlocksSSE2(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte)
8// Requires: SSE2
9TEXT ·hashBlocksSSE2(SB), $672-48
10 MOVQ h+0(FP), AX
11 MOVQ c+8(FP), BX
12 MOVL flag+16(FP), CX
13 MOVQ blocks_base+24(FP), SI
14 MOVQ blocks_len+32(FP), DX
15 MOVQ SP, BP
16 ADDQ $0x0f, BP
17 ANDQ $-16, BP
18 MOVQ (BX), R9
19 MOVQ R9, (BP)
20 MOVQ CX, 8(BP)
21 MOVOU (AX), X0
22 MOVOU 16(AX), X1
23 MOVOU iv0<>+0(SB), X2
24 MOVOU iv1<>+0(SB), X3
25 MOVOU counter<>+0(SB), X12
26 MOVOU rol16<>+0(SB), X13
27 MOVOU rol8<>+0(SB), X14
28 MOVO (BP), X15
29
30loop:
31 MOVO X0, X4
32 MOVO X1, X5
33 MOVO X2, X6
34 MOVO X3, X7
35 PADDQ X12, X15
36 PXOR X15, X7
37 MOVQ (SI), R8
38 MOVQ 8(SI), R9
39 MOVQ 16(SI), R10
40 MOVQ 24(SI), R11
41 MOVQ 32(SI), R12
42 MOVQ 40(SI), R13
43 MOVQ 48(SI), R14
44 MOVQ 56(SI), R15
45 MOVL R8, 16(BP)
46 MOVL R8, 116(BP)
47 MOVL R8, 164(BP)
48 MOVL R8, 264(BP)
49 MOVL R8, 288(BP)
50 MOVL R8, 344(BP)
51 MOVL R8, 432(BP)
52 MOVL R8, 512(BP)
53 MOVL R8, 540(BP)
54 MOVL R8, 652(BP)
55 SHRQ $0x20, R8
56 MOVL R8, 32(BP)
57 MOVL R8, 112(BP)
58 MOVL R8, 200(BP)
59 MOVL R8, 228(BP)
60 MOVL R8, 320(BP)
61 MOVL R8, 380(BP)
62 MOVL R8, 404(BP)
63 MOVL R8, 488(BP)
64 MOVL R8, 568(BP)
65 MOVL R8, 604(BP)
66 MOVL R9, 20(BP)
67 MOVL R9, 132(BP)
68 MOVL R9, 168(BP)
69 MOVL R9, 240(BP)
70 MOVL R9, 280(BP)
71 MOVL R9, 336(BP)
72 MOVL R9, 456(BP)
73 MOVL R9, 508(BP)
74 MOVL R9, 576(BP)
75 MOVL R9, 608(BP)
76 SHRQ $0x20, R9
77 MOVL R9, 36(BP)
78 MOVL R9, 140(BP)
79 MOVL R9, 180(BP)
80 MOVL R9, 212(BP)
81 MOVL R9, 316(BP)
82 MOVL R9, 364(BP)
83 MOVL R9, 452(BP)
84 MOVL R9, 476(BP)
85 MOVL R9, 552(BP)
86 MOVL R9, 632(BP)
87 MOVL R10, 24(BP)
88 MOVL R10, 84(BP)
89 MOVL R10, 204(BP)
90 MOVL R10, 248(BP)
91 MOVL R10, 296(BP)
92 MOVL R10, 368(BP)
93 MOVL R10, 412(BP)
94 MOVL R10, 516(BP)
95 MOVL R10, 584(BP)
96 MOVL R10, 612(BP)
97 SHRQ $0x20, R10
98 MOVL R10, 40(BP)
99 MOVL R10, 124(BP)
100 MOVL R10, 152(BP)
101 MOVL R10, 244(BP)
102 MOVL R10, 276(BP)
103 MOVL R10, 388(BP)
104 MOVL R10, 416(BP)
105 MOVL R10, 496(BP)
106 MOVL R10, 588(BP)
107 MOVL R10, 620(BP)
108 MOVL R11, 28(BP)
109 MOVL R11, 108(BP)
110 MOVL R11, 196(BP)
111 MOVL R11, 256(BP)
112 MOVL R11, 312(BP)
113 MOVL R11, 340(BP)
114 MOVL R11, 436(BP)
115 MOVL R11, 520(BP)
116 MOVL R11, 528(BP)
117 MOVL R11, 616(BP)
118 SHRQ $0x20, R11
119 MOVL R11, 44(BP)
120 MOVL R11, 136(BP)
121 MOVL R11, 184(BP)
122 MOVL R11, 208(BP)
123 MOVL R11, 292(BP)
124 MOVL R11, 372(BP)
125 MOVL R11, 448(BP)
126 MOVL R11, 468(BP)
127 MOVL R11, 580(BP)
128 MOVL R11, 600(BP)
129 MOVL R12, 48(BP)
130 MOVL R12, 100(BP)
131 MOVL R12, 160(BP)
132 MOVL R12, 268(BP)
133 MOVL R12, 328(BP)
134 MOVL R12, 348(BP)
135 MOVL R12, 444(BP)
136 MOVL R12, 504(BP)
137 MOVL R12, 556(BP)
138 MOVL R12, 596(BP)
139 SHRQ $0x20, R12
140 MOVL R12, 64(BP)
141 MOVL R12, 88(BP)
142 MOVL R12, 188(BP)
143 MOVL R12, 224(BP)
144 MOVL R12, 272(BP)
145 MOVL R12, 396(BP)
146 MOVL R12, 440(BP)
147 MOVL R12, 492(BP)
148 MOVL R12, 548(BP)
149 MOVL R12, 628(BP)
150 MOVL R13, 52(BP)
151 MOVL R13, 96(BP)
152 MOVL R13, 176(BP)
153 MOVL R13, 260(BP)
154 MOVL R13, 284(BP)
155 MOVL R13, 356(BP)
156 MOVL R13, 428(BP)
157 MOVL R13, 524(BP)
158 MOVL R13, 572(BP)
159 MOVL R13, 592(BP)
160 SHRQ $0x20, R13
161 MOVL R13, 68(BP)
162 MOVL R13, 120(BP)
163 MOVL R13, 144(BP)
164 MOVL R13, 220(BP)
165 MOVL R13, 308(BP)
166 MOVL R13, 360(BP)
167 MOVL R13, 460(BP)
168 MOVL R13, 480(BP)
169 MOVL R13, 536(BP)
170 MOVL R13, 640(BP)
171 MOVL R14, 56(BP)
172 MOVL R14, 128(BP)
173 MOVL R14, 148(BP)
174 MOVL R14, 232(BP)
175 MOVL R14, 324(BP)
176 MOVL R14, 352(BP)
177 MOVL R14, 400(BP)
178 MOVL R14, 472(BP)
179 MOVL R14, 560(BP)
180 MOVL R14, 648(BP)
181 SHRQ $0x20, R14
182 MOVL R14, 72(BP)
183 MOVL R14, 92(BP)
184 MOVL R14, 172(BP)
185 MOVL R14, 216(BP)
186 MOVL R14, 332(BP)
187 MOVL R14, 384(BP)
188 MOVL R14, 424(BP)
189 MOVL R14, 464(BP)
190 MOVL R14, 564(BP)
191 MOVL R14, 636(BP)
192 MOVL R15, 60(BP)
193 MOVL R15, 80(BP)
194 MOVL R15, 192(BP)
195 MOVL R15, 236(BP)
196 MOVL R15, 304(BP)
197 MOVL R15, 392(BP)
198 MOVL R15, 408(BP)
199 MOVL R15, 484(BP)
200 MOVL R15, 532(BP)
201 MOVL R15, 644(BP)
202 SHRQ $0x20, R15
203 MOVL R15, 76(BP)
204 MOVL R15, 104(BP)
205 MOVL R15, 156(BP)
206 MOVL R15, 252(BP)
207 MOVL R15, 300(BP)
208 MOVL R15, 376(BP)
209 MOVL R15, 420(BP)
210 MOVL R15, 500(BP)
211 MOVL R15, 544(BP)
212 MOVL R15, 624(BP)
213 PADDL 16(BP), X4
214 PADDL X5, X4
215 PXOR X4, X7
216 MOVO X7, X8
217 PSLLL $0x10, X8
218 PSRLL $0x10, X7
219 PXOR X8, X7
220 PADDL X7, X6
221 PXOR X6, X5
222 MOVO X5, X8
223 PSLLL $0x14, X8
224 PSRLL $0x0c, X5
225 PXOR X8, X5
226 PADDL 32(BP), X4
227 PADDL X5, X4
228 PXOR X4, X7
229 MOVO X7, X8
230 PSLLL $0x18, X8
231 PSRLL $0x08, X7
232 PXOR X8, X7
233 PADDL X7, X6
234 PXOR X6, X5
235 MOVO X5, X8
236 PSLLL $0x19, X8
237 PSRLL $0x07, X5
238 PXOR X8, X5
239 PSHUFL $0x39, X5, X5
240 PSHUFL $0x4e, X6, X6
241 PSHUFL $0x93, X7, X7
242 PADDL 48(BP), X4
243 PADDL X5, X4
244 PXOR X4, X7
245 MOVO X7, X8
246 PSLLL $0x10, X8
247 PSRLL $0x10, X7
248 PXOR X8, X7
249 PADDL X7, X6
250 PXOR X6, X5
251 MOVO X5, X8
252 PSLLL $0x14, X8
253 PSRLL $0x0c, X5
254 PXOR X8, X5
255 PADDL 64(BP), X4
256 PADDL X5, X4
257 PXOR X4, X7
258 MOVO X7, X8
259 PSLLL $0x18, X8
260 PSRLL $0x08, X7
261 PXOR X8, X7
262 PADDL X7, X6
263 PXOR X6, X5
264 MOVO X5, X8
265 PSLLL $0x19, X8
266 PSRLL $0x07, X5
267 PXOR X8, X5
268 PSHUFL $0x39, X7, X7
269 PSHUFL $0x4e, X6, X6
270 PSHUFL $0x93, X5, X5
271 PADDL 80(BP), X4
272 PADDL X5, X4
273 PXOR X4, X7
274 MOVO X7, X8
275 PSLLL $0x10, X8
276 PSRLL $0x10, X7
277 PXOR X8, X7
278 PADDL X7, X6
279 PXOR X6, X5
280 MOVO X5, X8
281 PSLLL $0x14, X8
282 PSRLL $0x0c, X5
283 PXOR X8, X5
284 PADDL 96(BP), X4
285 PADDL X5, X4
286 PXOR X4, X7
287 MOVO X7, X8
288 PSLLL $0x18, X8
289 PSRLL $0x08, X7
290 PXOR X8, X7
291 PADDL X7, X6
292 PXOR X6, X5
293 MOVO X5, X8
294 PSLLL $0x19, X8
295 PSRLL $0x07, X5
296 PXOR X8, X5
297 PSHUFL $0x39, X5, X5
298 PSHUFL $0x4e, X6, X6
299 PSHUFL $0x93, X7, X7
300 PADDL 112(BP), X4
301 PADDL X5, X4
302 PXOR X4, X7
303 MOVO X7, X8
304 PSLLL $0x10, X8
305 PSRLL $0x10, X7
306 PXOR X8, X7
307 PADDL X7, X6
308 PXOR X6, X5
309 MOVO X5, X8
310 PSLLL $0x14, X8
311 PSRLL $0x0c, X5
312 PXOR X8, X5
313 PADDL 128(BP), X4
314 PADDL X5, X4
315 PXOR X4, X7
316 MOVO X7, X8
317 PSLLL $0x18, X8
318 PSRLL $0x08, X7
319 PXOR X8, X7
320 PADDL X7, X6
321 PXOR X6, X5
322 MOVO X5, X8
323 PSLLL $0x19, X8
324 PSRLL $0x07, X5
325 PXOR X8, X5
326 PSHUFL $0x39, X7, X7
327 PSHUFL $0x4e, X6, X6
328 PSHUFL $0x93, X5, X5
329 PADDL 144(BP), X4
330 PADDL X5, X4
331 PXOR X4, X7
332 MOVO X7, X8
333 PSLLL $0x10, X8
334 PSRLL $0x10, X7
335 PXOR X8, X7
336 PADDL X7, X6
337 PXOR X6, X5
338 MOVO X5, X8
339 PSLLL $0x14, X8
340 PSRLL $0x0c, X5
341 PXOR X8, X5
342 PADDL 160(BP), X4
343 PADDL X5, X4
344 PXOR X4, X7
345 MOVO X7, X8
346 PSLLL $0x18, X8
347 PSRLL $0x08, X7
348 PXOR X8, X7
349 PADDL X7, X6
350 PXOR X6, X5
351 MOVO X5, X8
352 PSLLL $0x19, X8
353 PSRLL $0x07, X5
354 PXOR X8, X5
355 PSHUFL $0x39, X5, X5
356 PSHUFL $0x4e, X6, X6
357 PSHUFL $0x93, X7, X7
358 PADDL 176(BP), X4
359 PADDL X5, X4
360 PXOR X4, X7
361 MOVO X7, X8
362 PSLLL $0x10, X8
363 PSRLL $0x10, X7
364 PXOR X8, X7
365 PADDL X7, X6
366 PXOR X6, X5
367 MOVO X5, X8
368 PSLLL $0x14, X8
369 PSRLL $0x0c, X5
370 PXOR X8, X5
371 PADDL 192(BP), X4
372 PADDL X5, X4
373 PXOR X4, X7
374 MOVO X7, X8
375 PSLLL $0x18, X8
376 PSRLL $0x08, X7
377 PXOR X8, X7
378 PADDL X7, X6
379 PXOR X6, X5
380 MOVO X5, X8
381 PSLLL $0x19, X8
382 PSRLL $0x07, X5
383 PXOR X8, X5
384 PSHUFL $0x39, X7, X7
385 PSHUFL $0x4e, X6, X6
386 PSHUFL $0x93, X5, X5
387 PADDL 208(BP), X4
388 PADDL X5, X4
389 PXOR X4, X7
390 MOVO X7, X8
391 PSLLL $0x10, X8
392 PSRLL $0x10, X7
393 PXOR X8, X7
394 PADDL X7, X6
395 PXOR X6, X5
396 MOVO X5, X8
397 PSLLL $0x14, X8
398 PSRLL $0x0c, X5
399 PXOR X8, X5
400 PADDL 224(BP), X4
401 PADDL X5, X4
402 PXOR X4, X7
403 MOVO X7, X8
404 PSLLL $0x18, X8
405 PSRLL $0x08, X7
406 PXOR X8, X7
407 PADDL X7, X6
408 PXOR X6, X5
409 MOVO X5, X8
410 PSLLL $0x19, X8
411 PSRLL $0x07, X5
412 PXOR X8, X5
413 PSHUFL $0x39, X5, X5
414 PSHUFL $0x4e, X6, X6
415 PSHUFL $0x93, X7, X7
416 PADDL 240(BP), X4
417 PADDL X5, X4
418 PXOR X4, X7
419 MOVO X7, X8
420 PSLLL $0x10, X8
421 PSRLL $0x10, X7
422 PXOR X8, X7
423 PADDL X7, X6
424 PXOR X6, X5
425 MOVO X5, X8
426 PSLLL $0x14, X8
427 PSRLL $0x0c, X5
428 PXOR X8, X5
429 PADDL 256(BP), X4
430 PADDL X5, X4
431 PXOR X4, X7
432 MOVO X7, X8
433 PSLLL $0x18, X8
434 PSRLL $0x08, X7
435 PXOR X8, X7
436 PADDL X7, X6
437 PXOR X6, X5
438 MOVO X5, X8
439 PSLLL $0x19, X8
440 PSRLL $0x07, X5
441 PXOR X8, X5
442 PSHUFL $0x39, X7, X7
443 PSHUFL $0x4e, X6, X6
444 PSHUFL $0x93, X5, X5
445 PADDL 272(BP), X4
446 PADDL X5, X4
447 PXOR X4, X7
448 MOVO X7, X8
449 PSLLL $0x10, X8
450 PSRLL $0x10, X7
451 PXOR X8, X7
452 PADDL X7, X6
453 PXOR X6, X5
454 MOVO X5, X8
455 PSLLL $0x14, X8
456 PSRLL $0x0c, X5
457 PXOR X8, X5
458 PADDL 288(BP), X4
459 PADDL X5, X4
460 PXOR X4, X7
461 MOVO X7, X8
462 PSLLL $0x18, X8
463 PSRLL $0x08, X7
464 PXOR X8, X7
465 PADDL X7, X6
466 PXOR X6, X5
467 MOVO X5, X8
468 PSLLL $0x19, X8
469 PSRLL $0x07, X5
470 PXOR X8, X5
471 PSHUFL $0x39, X5, X5
472 PSHUFL $0x4e, X6, X6
473 PSHUFL $0x93, X7, X7
474 PADDL 304(BP), X4
475 PADDL X5, X4
476 PXOR X4, X7
477 MOVO X7, X8
478 PSLLL $0x10, X8
479 PSRLL $0x10, X7
480 PXOR X8, X7
481 PADDL X7, X6
482 PXOR X6, X5
483 MOVO X5, X8
484 PSLLL $0x14, X8
485 PSRLL $0x0c, X5
486 PXOR X8, X5
487 PADDL 320(BP), X4
488 PADDL X5, X4
489 PXOR X4, X7
490 MOVO X7, X8
491 PSLLL $0x18, X8
492 PSRLL $0x08, X7
493 PXOR X8, X7
494 PADDL X7, X6
495 PXOR X6, X5
496 MOVO X5, X8
497 PSLLL $0x19, X8
498 PSRLL $0x07, X5
499 PXOR X8, X5
500 PSHUFL $0x39, X7, X7
501 PSHUFL $0x4e, X6, X6
502 PSHUFL $0x93, X5, X5
503 PADDL 336(BP), X4
504 PADDL X5, X4
505 PXOR X4, X7
506 MOVO X7, X8
507 PSLLL $0x10, X8
508 PSRLL $0x10, X7
509 PXOR X8, X7
510 PADDL X7, X6
511 PXOR X6, X5
512 MOVO X5, X8
513 PSLLL $0x14, X8
514 PSRLL $0x0c, X5
515 PXOR X8, X5
516 PADDL 352(BP), X4
517 PADDL X5, X4
518 PXOR X4, X7
519 MOVO X7, X8
520 PSLLL $0x18, X8
521 PSRLL $0x08, X7
522 PXOR X8, X7
523 PADDL X7, X6
524 PXOR X6, X5
525 MOVO X5, X8
526 PSLLL $0x19, X8
527 PSRLL $0x07, X5
528 PXOR X8, X5
529 PSHUFL $0x39, X5, X5
530 PSHUFL $0x4e, X6, X6
531 PSHUFL $0x93, X7, X7
532 PADDL 368(BP), X4
533 PADDL X5, X4
534 PXOR X4, X7
535 MOVO X7, X8
536 PSLLL $0x10, X8
537 PSRLL $0x10, X7
538 PXOR X8, X7
539 PADDL X7, X6
540 PXOR X6, X5
541 MOVO X5, X8
542 PSLLL $0x14, X8
543 PSRLL $0x0c, X5
544 PXOR X8, X5
545 PADDL 384(BP), X4
546 PADDL X5, X4
547 PXOR X4, X7
548 MOVO X7, X8
549 PSLLL $0x18, X8
550 PSRLL $0x08, X7
551 PXOR X8, X7
552 PADDL X7, X6
553 PXOR X6, X5
554 MOVO X5, X8
555 PSLLL $0x19, X8
556 PSRLL $0x07, X5
557 PXOR X8, X5
558 PSHUFL $0x39, X7, X7
559 PSHUFL $0x4e, X6, X6
560 PSHUFL $0x93, X5, X5
561 PADDL 400(BP), X4
562 PADDL X5, X4
563 PXOR X4, X7
564 MOVO X7, X8
565 PSLLL $0x10, X8
566 PSRLL $0x10, X7
567 PXOR X8, X7
568 PADDL X7, X6
569 PXOR X6, X5
570 MOVO X5, X8
571 PSLLL $0x14, X8
572 PSRLL $0x0c, X5
573 PXOR X8, X5
574 PADDL 416(BP), X4
575 PADDL X5, X4
576 PXOR X4, X7
577 MOVO X7, X8
578 PSLLL $0x18, X8
579 PSRLL $0x08, X7
580 PXOR X8, X7
581 PADDL X7, X6
582 PXOR X6, X5
583 MOVO X5, X8
584 PSLLL $0x19, X8
585 PSRLL $0x07, X5
586 PXOR X8, X5
587 PSHUFL $0x39, X5, X5
588 PSHUFL $0x4e, X6, X6
589 PSHUFL $0x93, X7, X7
590 PADDL 432(BP), X4
591 PADDL X5, X4
592 PXOR X4, X7
593 MOVO X7, X8
594 PSLLL $0x10, X8
595 PSRLL $0x10, X7
596 PXOR X8, X7
597 PADDL X7, X6
598 PXOR X6, X5
599 MOVO X5, X8
600 PSLLL $0x14, X8
601 PSRLL $0x0c, X5
602 PXOR X8, X5
603 PADDL 448(BP), X4
604 PADDL X5, X4
605 PXOR X4, X7
606 MOVO X7, X8
607 PSLLL $0x18, X8
608 PSRLL $0x08, X7
609 PXOR X8, X7
610 PADDL X7, X6
611 PXOR X6, X5
612 MOVO X5, X8
613 PSLLL $0x19, X8
614 PSRLL $0x07, X5
615 PXOR X8, X5
616 PSHUFL $0x39, X7, X7
617 PSHUFL $0x4e, X6, X6
618 PSHUFL $0x93, X5, X5
619 PADDL 464(BP), X4
620 PADDL X5, X4
621 PXOR X4, X7
622 MOVO X7, X8
623 PSLLL $0x10, X8
624 PSRLL $0x10, X7
625 PXOR X8, X7
626 PADDL X7, X6
627 PXOR X6, X5
628 MOVO X5, X8
629 PSLLL $0x14, X8
630 PSRLL $0x0c, X5
631 PXOR X8, X5
632 PADDL 480(BP), X4
633 PADDL X5, X4
634 PXOR X4, X7
635 MOVO X7, X8
636 PSLLL $0x18, X8
637 PSRLL $0x08, X7
638 PXOR X8, X7
639 PADDL X7, X6
640 PXOR X6, X5
641 MOVO X5, X8
642 PSLLL $0x19, X8
643 PSRLL $0x07, X5
644 PXOR X8, X5
645 PSHUFL $0x39, X5, X5
646 PSHUFL $0x4e, X6, X6
647 PSHUFL $0x93, X7, X7
648 PADDL 496(BP), X4
649 PADDL X5, X4
650 PXOR X4, X7
651 MOVO X7, X8
652 PSLLL $0x10, X8
653 PSRLL $0x10, X7
654 PXOR X8, X7
655 PADDL X7, X6
656 PXOR X6, X5
657 MOVO X5, X8
658 PSLLL $0x14, X8
659 PSRLL $0x0c, X5
660 PXOR X8, X5
661 PADDL 512(BP), X4
662 PADDL X5, X4
663 PXOR X4, X7
664 MOVO X7, X8
665 PSLLL $0x18, X8
666 PSRLL $0x08, X7
667 PXOR X8, X7
668 PADDL X7, X6
669 PXOR X6, X5
670 MOVO X5, X8
671 PSLLL $0x19, X8
672 PSRLL $0x07, X5
673 PXOR X8, X5
674 PSHUFL $0x39, X7, X7
675 PSHUFL $0x4e, X6, X6
676 PSHUFL $0x93, X5, X5
677 PADDL 528(BP), X4
678 PADDL X5, X4
679 PXOR X4, X7
680 MOVO X7, X8
681 PSLLL $0x10, X8
682 PSRLL $0x10, X7
683 PXOR X8, X7
684 PADDL X7, X6
685 PXOR X6, X5
686 MOVO X5, X8
687 PSLLL $0x14, X8
688 PSRLL $0x0c, X5
689 PXOR X8, X5
690 PADDL 544(BP), X4
691 PADDL X5, X4
692 PXOR X4, X7
693 MOVO X7, X8
694 PSLLL $0x18, X8
695 PSRLL $0x08, X7
696 PXOR X8, X7
697 PADDL X7, X6
698 PXOR X6, X5
699 MOVO X5, X8
700 PSLLL $0x19, X8
701 PSRLL $0x07, X5
702 PXOR X8, X5
703 PSHUFL $0x39, X5, X5
704 PSHUFL $0x4e, X6, X6
705 PSHUFL $0x93, X7, X7
706 PADDL 560(BP), X4
707 PADDL X5, X4
708 PXOR X4, X7
709 MOVO X7, X8
710 PSLLL $0x10, X8
711 PSRLL $0x10, X7
712 PXOR X8, X7
713 PADDL X7, X6
714 PXOR X6, X5
715 MOVO X5, X8
716 PSLLL $0x14, X8
717 PSRLL $0x0c, X5
718 PXOR X8, X5
719 PADDL 576(BP), X4
720 PADDL X5, X4
721 PXOR X4, X7
722 MOVO X7, X8
723 PSLLL $0x18, X8
724 PSRLL $0x08, X7
725 PXOR X8, X7
726 PADDL X7, X6
727 PXOR X6, X5
728 MOVO X5, X8
729 PSLLL $0x19, X8
730 PSRLL $0x07, X5
731 PXOR X8, X5
732 PSHUFL $0x39, X7, X7
733 PSHUFL $0x4e, X6, X6
734 PSHUFL $0x93, X5, X5
735 PADDL 592(BP), X4
736 PADDL X5, X4
737 PXOR X4, X7
738 MOVO X7, X8
739 PSLLL $0x10, X8
740 PSRLL $0x10, X7
741 PXOR X8, X7
742 PADDL X7, X6
743 PXOR X6, X5
744 MOVO X5, X8
745 PSLLL $0x14, X8
746 PSRLL $0x0c, X5
747 PXOR X8, X5
748 PADDL 608(BP), X4
749 PADDL X5, X4
750 PXOR X4, X7
751 MOVO X7, X8
752 PSLLL $0x18, X8
753 PSRLL $0x08, X7
754 PXOR X8, X7
755 PADDL X7, X6
756 PXOR X6, X5
757 MOVO X5, X8
758 PSLLL $0x19, X8
759 PSRLL $0x07, X5
760 PXOR X8, X5
761 PSHUFL $0x39, X5, X5
762 PSHUFL $0x4e, X6, X6
763 PSHUFL $0x93, X7, X7
764 PADDL 624(BP), X4
765 PADDL X5, X4
766 PXOR X4, X7
767 MOVO X7, X8
768 PSLLL $0x10, X8
769 PSRLL $0x10, X7
770 PXOR X8, X7
771 PADDL X7, X6
772 PXOR X6, X5
773 MOVO X5, X8
774 PSLLL $0x14, X8
775 PSRLL $0x0c, X5
776 PXOR X8, X5
777 PADDL 640(BP), X4
778 PADDL X5, X4
779 PXOR X4, X7
780 MOVO X7, X8
781 PSLLL $0x18, X8
782 PSRLL $0x08, X7
783 PXOR X8, X7
784 PADDL X7, X6
785 PXOR X6, X5
786 MOVO X5, X8
787 PSLLL $0x19, X8
788 PSRLL $0x07, X5
789 PXOR X8, X5
790 PSHUFL $0x39, X7, X7
791 PSHUFL $0x4e, X6, X6
792 PSHUFL $0x93, X5, X5
793 PXOR X4, X0
794 PXOR X5, X1
795 PXOR X6, X0
796 PXOR X7, X1
797 LEAQ 64(SI), SI
798 SUBQ $0x40, DX
799 JNE loop
800 MOVO X15, (BP)
801 MOVQ (BP), R9
802 MOVQ R9, (BX)
803 MOVOU X0, (AX)
804 MOVOU X1, 16(AX)
805 RET
806
807DATA iv0<>+0(SB)/4, $0x6a09e667
808DATA iv0<>+4(SB)/4, $0xbb67ae85
809DATA iv0<>+8(SB)/4, $0x3c6ef372
810DATA iv0<>+12(SB)/4, $0xa54ff53a
811GLOBL iv0<>(SB), RODATA|NOPTR, $16
812
813DATA iv1<>+0(SB)/4, $0x510e527f
814DATA iv1<>+4(SB)/4, $0x9b05688c
815DATA iv1<>+8(SB)/4, $0x1f83d9ab
816DATA iv1<>+12(SB)/4, $0x5be0cd19
817GLOBL iv1<>(SB), RODATA|NOPTR, $16
818
819DATA counter<>+0(SB)/8, $0x0000000000000040
820DATA counter<>+8(SB)/8, $0x0000000000000000
821GLOBL counter<>(SB), RODATA|NOPTR, $16
822
823DATA rol16<>+0(SB)/8, $0x0504070601000302
824DATA rol16<>+8(SB)/8, $0x0d0c0f0e09080b0a
825GLOBL rol16<>(SB), RODATA|NOPTR, $16
826
827DATA rol8<>+0(SB)/8, $0x0407060500030201
828DATA rol8<>+8(SB)/8, $0x0c0f0e0d080b0a09
829GLOBL rol8<>(SB), RODATA|NOPTR, $16
830
831// func hashBlocksSSSE3(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte)
832// Requires: SSE2, SSSE3
833TEXT ·hashBlocksSSSE3(SB), $672-48
834 MOVQ h+0(FP), AX
835 MOVQ c+8(FP), BX
836 MOVL flag+16(FP), CX
837 MOVQ blocks_base+24(FP), SI
838 MOVQ blocks_len+32(FP), DX
839 MOVQ SP, BP
840 ADDQ $0x0f, BP
841 ANDQ $-16, BP
842 MOVQ (BX), R9
843 MOVQ R9, (BP)
844 MOVQ CX, 8(BP)
845 MOVOU (AX), X0
846 MOVOU 16(AX), X1
847 MOVOU iv0<>+0(SB), X2
848 MOVOU iv1<>+0(SB), X3
849 MOVOU counter<>+0(SB), X12
850 MOVOU rol16<>+0(SB), X13
851 MOVOU rol8<>+0(SB), X14
852 MOVO (BP), X15
853
854loop:
855 MOVO X0, X4
856 MOVO X1, X5
857 MOVO X2, X6
858 MOVO X3, X7
859 PADDQ X12, X15
860 PXOR X15, X7
861 MOVQ (SI), R8
862 MOVQ 8(SI), R9
863 MOVQ 16(SI), R10
864 MOVQ 24(SI), R11
865 MOVQ 32(SI), R12
866 MOVQ 40(SI), R13
867 MOVQ 48(SI), R14
868 MOVQ 56(SI), R15
869 MOVL R8, 16(BP)
870 MOVL R8, 116(BP)
871 MOVL R8, 164(BP)
872 MOVL R8, 264(BP)
873 MOVL R8, 288(BP)
874 MOVL R8, 344(BP)
875 MOVL R8, 432(BP)
876 MOVL R8, 512(BP)
877 MOVL R8, 540(BP)
878 MOVL R8, 652(BP)
879 SHRQ $0x20, R8
880 MOVL R8, 32(BP)
881 MOVL R8, 112(BP)
882 MOVL R8, 200(BP)
883 MOVL R8, 228(BP)
884 MOVL R8, 320(BP)
885 MOVL R8, 380(BP)
886 MOVL R8, 404(BP)
887 MOVL R8, 488(BP)
888 MOVL R8, 568(BP)
889 MOVL R8, 604(BP)
890 MOVL R9, 20(BP)
891 MOVL R9, 132(BP)
892 MOVL R9, 168(BP)
893 MOVL R9, 240(BP)
894 MOVL R9, 280(BP)
895 MOVL R9, 336(BP)
896 MOVL R9, 456(BP)
897 MOVL R9, 508(BP)
898 MOVL R9, 576(BP)
899 MOVL R9, 608(BP)
900 SHRQ $0x20, R9
901 MOVL R9, 36(BP)
902 MOVL R9, 140(BP)
903 MOVL R9, 180(BP)
904 MOVL R9, 212(BP)
905 MOVL R9, 316(BP)
906 MOVL R9, 364(BP)
907 MOVL R9, 452(BP)
908 MOVL R9, 476(BP)
909 MOVL R9, 552(BP)
910 MOVL R9, 632(BP)
911 MOVL R10, 24(BP)
912 MOVL R10, 84(BP)
913 MOVL R10, 204(BP)
914 MOVL R10, 248(BP)
915 MOVL R10, 296(BP)
916 MOVL R10, 368(BP)
917 MOVL R10, 412(BP)
918 MOVL R10, 516(BP)
919 MOVL R10, 584(BP)
920 MOVL R10, 612(BP)
921 SHRQ $0x20, R10
922 MOVL R10, 40(BP)
923 MOVL R10, 124(BP)
924 MOVL R10, 152(BP)
925 MOVL R10, 244(BP)
926 MOVL R10, 276(BP)
927 MOVL R10, 388(BP)
928 MOVL R10, 416(BP)
929 MOVL R10, 496(BP)
930 MOVL R10, 588(BP)
931 MOVL R10, 620(BP)
932 MOVL R11, 28(BP)
933 MOVL R11, 108(BP)
934 MOVL R11, 196(BP)
935 MOVL R11, 256(BP)
936 MOVL R11, 312(BP)
937 MOVL R11, 340(BP)
938 MOVL R11, 436(BP)
939 MOVL R11, 520(BP)
940 MOVL R11, 528(BP)
941 MOVL R11, 616(BP)
942 SHRQ $0x20, R11
943 MOVL R11, 44(BP)
944 MOVL R11, 136(BP)
945 MOVL R11, 184(BP)
946 MOVL R11, 208(BP)
947 MOVL R11, 292(BP)
948 MOVL R11, 372(BP)
949 MOVL R11, 448(BP)
950 MOVL R11, 468(BP)
951 MOVL R11, 580(BP)
952 MOVL R11, 600(BP)
953 MOVL R12, 48(BP)
954 MOVL R12, 100(BP)
955 MOVL R12, 160(BP)
956 MOVL R12, 268(BP)
957 MOVL R12, 328(BP)
958 MOVL R12, 348(BP)
959 MOVL R12, 444(BP)
960 MOVL R12, 504(BP)
961 MOVL R12, 556(BP)
962 MOVL R12, 596(BP)
963 SHRQ $0x20, R12
964 MOVL R12, 64(BP)
965 MOVL R12, 88(BP)
966 MOVL R12, 188(BP)
967 MOVL R12, 224(BP)
968 MOVL R12, 272(BP)
969 MOVL R12, 396(BP)
970 MOVL R12, 440(BP)
971 MOVL R12, 492(BP)
972 MOVL R12, 548(BP)
973 MOVL R12, 628(BP)
974 MOVL R13, 52(BP)
975 MOVL R13, 96(BP)
976 MOVL R13, 176(BP)
977 MOVL R13, 260(BP)
978 MOVL R13, 284(BP)
979 MOVL R13, 356(BP)
980 MOVL R13, 428(BP)
981 MOVL R13, 524(BP)
982 MOVL R13, 572(BP)
983 MOVL R13, 592(BP)
984 SHRQ $0x20, R13
985 MOVL R13, 68(BP)
986 MOVL R13, 120(BP)
987 MOVL R13, 144(BP)
988 MOVL R13, 220(BP)
989 MOVL R13, 308(BP)
990 MOVL R13, 360(BP)
991 MOVL R13, 460(BP)
992 MOVL R13, 480(BP)
993 MOVL R13, 536(BP)
994 MOVL R13, 640(BP)
995 MOVL R14, 56(BP)
996 MOVL R14, 128(BP)
997 MOVL R14, 148(BP)
998 MOVL R14, 232(BP)
999 MOVL R14, 324(BP)
1000 MOVL R14, 352(BP)
1001 MOVL R14, 400(BP)
1002 MOVL R14, 472(BP)
1003 MOVL R14, 560(BP)
1004 MOVL R14, 648(BP)
1005 SHRQ $0x20, R14
1006 MOVL R14, 72(BP)
1007 MOVL R14, 92(BP)
1008 MOVL R14, 172(BP)
1009 MOVL R14, 216(BP)
1010 MOVL R14, 332(BP)
1011 MOVL R14, 384(BP)
1012 MOVL R14, 424(BP)
1013 MOVL R14, 464(BP)
1014 MOVL R14, 564(BP)
1015 MOVL R14, 636(BP)
1016 MOVL R15, 60(BP)
1017 MOVL R15, 80(BP)
1018 MOVL R15, 192(BP)
1019 MOVL R15, 236(BP)
1020 MOVL R15, 304(BP)
1021 MOVL R15, 392(BP)
1022 MOVL R15, 408(BP)
1023 MOVL R15, 484(BP)
1024 MOVL R15, 532(BP)
1025 MOVL R15, 644(BP)
1026 SHRQ $0x20, R15
1027 MOVL R15, 76(BP)
1028 MOVL R15, 104(BP)
1029 MOVL R15, 156(BP)
1030 MOVL R15, 252(BP)
1031 MOVL R15, 300(BP)
1032 MOVL R15, 376(BP)
1033 MOVL R15, 420(BP)
1034 MOVL R15, 500(BP)
1035 MOVL R15, 544(BP)
1036 MOVL R15, 624(BP)
1037 PADDL 16(BP), X4
1038 PADDL X5, X4
1039 PXOR X4, X7
1040 PSHUFB X13, X7
1041 PADDL X7, X6
1042 PXOR X6, X5
1043 MOVO X5, X8
1044 PSLLL $0x14, X8
1045 PSRLL $0x0c, X5
1046 PXOR X8, X5
1047 PADDL 32(BP), X4
1048 PADDL X5, X4
1049 PXOR X4, X7
1050 PSHUFB X14, X7
1051 PADDL X7, X6
1052 PXOR X6, X5
1053 MOVO X5, X8
1054 PSLLL $0x19, X8
1055 PSRLL $0x07, X5
1056 PXOR X8, X5
1057 PSHUFL $0x39, X5, X5
1058 PSHUFL $0x4e, X6, X6
1059 PSHUFL $0x93, X7, X7
1060 PADDL 48(BP), X4
1061 PADDL X5, X4
1062 PXOR X4, X7
1063 PSHUFB X13, X7
1064 PADDL X7, X6
1065 PXOR X6, X5
1066 MOVO X5, X8
1067 PSLLL $0x14, X8
1068 PSRLL $0x0c, X5
1069 PXOR X8, X5
1070 PADDL 64(BP), X4
1071 PADDL X5, X4
1072 PXOR X4, X7
1073 PSHUFB X14, X7
1074 PADDL X7, X6
1075 PXOR X6, X5
1076 MOVO X5, X8
1077 PSLLL $0x19, X8
1078 PSRLL $0x07, X5
1079 PXOR X8, X5
1080 PSHUFL $0x39, X7, X7
1081 PSHUFL $0x4e, X6, X6
1082 PSHUFL $0x93, X5, X5
1083 PADDL 80(BP), X4
1084 PADDL X5, X4
1085 PXOR X4, X7
1086 PSHUFB X13, X7
1087 PADDL X7, X6
1088 PXOR X6, X5
1089 MOVO X5, X8
1090 PSLLL $0x14, X8
1091 PSRLL $0x0c, X5
1092 PXOR X8, X5
1093 PADDL 96(BP), X4
1094 PADDL X5, X4
1095 PXOR X4, X7
1096 PSHUFB X14, X7
1097 PADDL X7, X6
1098 PXOR X6, X5
1099 MOVO X5, X8
1100 PSLLL $0x19, X8
1101 PSRLL $0x07, X5
1102 PXOR X8, X5
1103 PSHUFL $0x39, X5, X5
1104 PSHUFL $0x4e, X6, X6
1105 PSHUFL $0x93, X7, X7
1106 PADDL 112(BP), X4
1107 PADDL X5, X4
1108 PXOR X4, X7
1109 PSHUFB X13, X7
1110 PADDL X7, X6
1111 PXOR X6, X5
1112 MOVO X5, X8
1113 PSLLL $0x14, X8
1114 PSRLL $0x0c, X5
1115 PXOR X8, X5
1116 PADDL 128(BP), X4
1117 PADDL X5, X4
1118 PXOR X4, X7
1119 PSHUFB X14, X7
1120 PADDL X7, X6
1121 PXOR X6, X5
1122 MOVO X5, X8
1123 PSLLL $0x19, X8
1124 PSRLL $0x07, X5
1125 PXOR X8, X5
1126 PSHUFL $0x39, X7, X7
1127 PSHUFL $0x4e, X6, X6
1128 PSHUFL $0x93, X5, X5
1129 PADDL 144(BP), X4
1130 PADDL X5, X4
1131 PXOR X4, X7
1132 PSHUFB X13, X7
1133 PADDL X7, X6
1134 PXOR X6, X5
1135 MOVO X5, X8
1136 PSLLL $0x14, X8
1137 PSRLL $0x0c, X5
1138 PXOR X8, X5
1139 PADDL 160(BP), X4
1140 PADDL X5, X4
1141 PXOR X4, X7
1142 PSHUFB X14, X7
1143 PADDL X7, X6
1144 PXOR X6, X5
1145 MOVO X5, X8
1146 PSLLL $0x19, X8
1147 PSRLL $0x07, X5
1148 PXOR X8, X5
1149 PSHUFL $0x39, X5, X5
1150 PSHUFL $0x4e, X6, X6
1151 PSHUFL $0x93, X7, X7
1152 PADDL 176(BP), X4
1153 PADDL X5, X4
1154 PXOR X4, X7
1155 PSHUFB X13, X7
1156 PADDL X7, X6
1157 PXOR X6, X5
1158 MOVO X5, X8
1159 PSLLL $0x14, X8
1160 PSRLL $0x0c, X5
1161 PXOR X8, X5
1162 PADDL 192(BP), X4
1163 PADDL X5, X4
1164 PXOR X4, X7
1165 PSHUFB X14, X7
1166 PADDL X7, X6
1167 PXOR X6, X5
1168 MOVO X5, X8
1169 PSLLL $0x19, X8
1170 PSRLL $0x07, X5
1171 PXOR X8, X5
1172 PSHUFL $0x39, X7, X7
1173 PSHUFL $0x4e, X6, X6
1174 PSHUFL $0x93, X5, X5
1175 PADDL 208(BP), X4
1176 PADDL X5, X4
1177 PXOR X4, X7
1178 PSHUFB X13, X7
1179 PADDL X7, X6
1180 PXOR X6, X5
1181 MOVO X5, X8
1182 PSLLL $0x14, X8
1183 PSRLL $0x0c, X5
1184 PXOR X8, X5
1185 PADDL 224(BP), X4
1186 PADDL X5, X4
1187 PXOR X4, X7
1188 PSHUFB X14, X7
1189 PADDL X7, X6
1190 PXOR X6, X5
1191 MOVO X5, X8
1192 PSLLL $0x19, X8
1193 PSRLL $0x07, X5
1194 PXOR X8, X5
1195 PSHUFL $0x39, X5, X5
1196 PSHUFL $0x4e, X6, X6
1197 PSHUFL $0x93, X7, X7
1198 PADDL 240(BP), X4
1199 PADDL X5, X4
1200 PXOR X4, X7
1201 PSHUFB X13, X7
1202 PADDL X7, X6
1203 PXOR X6, X5
1204 MOVO X5, X8
1205 PSLLL $0x14, X8
1206 PSRLL $0x0c, X5
1207 PXOR X8, X5
1208 PADDL 256(BP), X4
1209 PADDL X5, X4
1210 PXOR X4, X7
1211 PSHUFB X14, X7
1212 PADDL X7, X6
1213 PXOR X6, X5
1214 MOVO X5, X8
1215 PSLLL $0x19, X8
1216 PSRLL $0x07, X5
1217 PXOR X8, X5
1218 PSHUFL $0x39, X7, X7
1219 PSHUFL $0x4e, X6, X6
1220 PSHUFL $0x93, X5, X5
1221 PADDL 272(BP), X4
1222 PADDL X5, X4
1223 PXOR X4, X7
1224 PSHUFB X13, X7
1225 PADDL X7, X6
1226 PXOR X6, X5
1227 MOVO X5, X8
1228 PSLLL $0x14, X8
1229 PSRLL $0x0c, X5
1230 PXOR X8, X5
1231 PADDL 288(BP), X4
1232 PADDL X5, X4
1233 PXOR X4, X7
1234 PSHUFB X14, X7
1235 PADDL X7, X6
1236 PXOR X6, X5
1237 MOVO X5, X8
1238 PSLLL $0x19, X8
1239 PSRLL $0x07, X5
1240 PXOR X8, X5
1241 PSHUFL $0x39, X5, X5
1242 PSHUFL $0x4e, X6, X6
1243 PSHUFL $0x93, X7, X7
1244 PADDL 304(BP), X4
1245 PADDL X5, X4
1246 PXOR X4, X7
1247 PSHUFB X13, X7
1248 PADDL X7, X6
1249 PXOR X6, X5
1250 MOVO X5, X8
1251 PSLLL $0x14, X8
1252 PSRLL $0x0c, X5
1253 PXOR X8, X5
1254 PADDL 320(BP), X4
1255 PADDL X5, X4
1256 PXOR X4, X7
1257 PSHUFB X14, X7
1258 PADDL X7, X6
1259 PXOR X6, X5
1260 MOVO X5, X8
1261 PSLLL $0x19, X8
1262 PSRLL $0x07, X5
1263 PXOR X8, X5
1264 PSHUFL $0x39, X7, X7
1265 PSHUFL $0x4e, X6, X6
1266 PSHUFL $0x93, X5, X5
1267 PADDL 336(BP), X4
1268 PADDL X5, X4
1269 PXOR X4, X7
1270 PSHUFB X13, X7
1271 PADDL X7, X6
1272 PXOR X6, X5
1273 MOVO X5, X8
1274 PSLLL $0x14, X8
1275 PSRLL $0x0c, X5
1276 PXOR X8, X5
1277 PADDL 352(BP), X4
1278 PADDL X5, X4
1279 PXOR X4, X7
1280 PSHUFB X14, X7
1281 PADDL X7, X6
1282 PXOR X6, X5
1283 MOVO X5, X8
1284 PSLLL $0x19, X8
1285 PSRLL $0x07, X5
1286 PXOR X8, X5
1287 PSHUFL $0x39, X5, X5
1288 PSHUFL $0x4e, X6, X6
1289 PSHUFL $0x93, X7, X7
1290 PADDL 368(BP), X4
1291 PADDL X5, X4
1292 PXOR X4, X7
1293 PSHUFB X13, X7
1294 PADDL X7, X6
1295 PXOR X6, X5
1296 MOVO X5, X8
1297 PSLLL $0x14, X8
1298 PSRLL $0x0c, X5
1299 PXOR X8, X5
1300 PADDL 384(BP), X4
1301 PADDL X5, X4
1302 PXOR X4, X7
1303 PSHUFB X14, X7
1304 PADDL X7, X6
1305 PXOR X6, X5
1306 MOVO X5, X8
1307 PSLLL $0x19, X8
1308 PSRLL $0x07, X5
1309 PXOR X8, X5
1310 PSHUFL $0x39, X7, X7
1311 PSHUFL $0x4e, X6, X6
1312 PSHUFL $0x93, X5, X5
1313 PADDL 400(BP), X4
1314 PADDL X5, X4
1315 PXOR X4, X7
1316 PSHUFB X13, X7
1317 PADDL X7, X6
1318 PXOR X6, X5
1319 MOVO X5, X8
1320 PSLLL $0x14, X8
1321 PSRLL $0x0c, X5
1322 PXOR X8, X5
1323 PADDL 416(BP), X4
1324 PADDL X5, X4
1325 PXOR X4, X7
1326 PSHUFB X14, X7
1327 PADDL X7, X6
1328 PXOR X6, X5
1329 MOVO X5, X8
1330 PSLLL $0x19, X8
1331 PSRLL $0x07, X5
1332 PXOR X8, X5
1333 PSHUFL $0x39, X5, X5
1334 PSHUFL $0x4e, X6, X6
1335 PSHUFL $0x93, X7, X7
1336 PADDL 432(BP), X4
1337 PADDL X5, X4
1338 PXOR X4, X7
1339 PSHUFB X13, X7
1340 PADDL X7, X6
1341 PXOR X6, X5
1342 MOVO X5, X8
1343 PSLLL $0x14, X8
1344 PSRLL $0x0c, X5
1345 PXOR X8, X5
1346 PADDL 448(BP), X4
1347 PADDL X5, X4
1348 PXOR X4, X7
1349 PSHUFB X14, X7
1350 PADDL X7, X6
1351 PXOR X6, X5
1352 MOVO X5, X8
1353 PSLLL $0x19, X8
1354 PSRLL $0x07, X5
1355 PXOR X8, X5
1356 PSHUFL $0x39, X7, X7
1357 PSHUFL $0x4e, X6, X6
1358 PSHUFL $0x93, X5, X5
1359 PADDL 464(BP), X4
1360 PADDL X5, X4
1361 PXOR X4, X7
1362 PSHUFB X13, X7
1363 PADDL X7, X6
1364 PXOR X6, X5
1365 MOVO X5, X8
1366 PSLLL $0x14, X8
1367 PSRLL $0x0c, X5
1368 PXOR X8, X5
1369 PADDL 480(BP), X4
1370 PADDL X5, X4
1371 PXOR X4, X7
1372 PSHUFB X14, X7
1373 PADDL X7, X6
1374 PXOR X6, X5
1375 MOVO X5, X8
1376 PSLLL $0x19, X8
1377 PSRLL $0x07, X5
1378 PXOR X8, X5
1379 PSHUFL $0x39, X5, X5
1380 PSHUFL $0x4e, X6, X6
1381 PSHUFL $0x93, X7, X7
1382 PADDL 496(BP), X4
1383 PADDL X5, X4
1384 PXOR X4, X7
1385 PSHUFB X13, X7
1386 PADDL X7, X6
1387 PXOR X6, X5
1388 MOVO X5, X8
1389 PSLLL $0x14, X8
1390 PSRLL $0x0c, X5
1391 PXOR X8, X5
1392 PADDL 512(BP), X4
1393 PADDL X5, X4
1394 PXOR X4, X7
1395 PSHUFB X14, X7
1396 PADDL X7, X6
1397 PXOR X6, X5
1398 MOVO X5, X8
1399 PSLLL $0x19, X8
1400 PSRLL $0x07, X5
1401 PXOR X8, X5
1402 PSHUFL $0x39, X7, X7
1403 PSHUFL $0x4e, X6, X6
1404 PSHUFL $0x93, X5, X5
1405 PADDL 528(BP), X4
1406 PADDL X5, X4
1407 PXOR X4, X7
1408 PSHUFB X13, X7
1409 PADDL X7, X6
1410 PXOR X6, X5
1411 MOVO X5, X8
1412 PSLLL $0x14, X8
1413 PSRLL $0x0c, X5
1414 PXOR X8, X5
1415 PADDL 544(BP), X4
1416 PADDL X5, X4
1417 PXOR X4, X7
1418 PSHUFB X14, X7
1419 PADDL X7, X6
1420 PXOR X6, X5
1421 MOVO X5, X8
1422 PSLLL $0x19, X8
1423 PSRLL $0x07, X5
1424 PXOR X8, X5
1425 PSHUFL $0x39, X5, X5
1426 PSHUFL $0x4e, X6, X6
1427 PSHUFL $0x93, X7, X7
1428 PADDL 560(BP), X4
1429 PADDL X5, X4
1430 PXOR X4, X7
1431 PSHUFB X13, X7
1432 PADDL X7, X6
1433 PXOR X6, X5
1434 MOVO X5, X8
1435 PSLLL $0x14, X8
1436 PSRLL $0x0c, X5
1437 PXOR X8, X5
1438 PADDL 576(BP), X4
1439 PADDL X5, X4
1440 PXOR X4, X7
1441 PSHUFB X14, X7
1442 PADDL X7, X6
1443 PXOR X6, X5
1444 MOVO X5, X8
1445 PSLLL $0x19, X8
1446 PSRLL $0x07, X5
1447 PXOR X8, X5
1448 PSHUFL $0x39, X7, X7
1449 PSHUFL $0x4e, X6, X6
1450 PSHUFL $0x93, X5, X5
1451 PADDL 592(BP), X4
1452 PADDL X5, X4
1453 PXOR X4, X7
1454 PSHUFB X13, X7
1455 PADDL X7, X6
1456 PXOR X6, X5
1457 MOVO X5, X8
1458 PSLLL $0x14, X8
1459 PSRLL $0x0c, X5
1460 PXOR X8, X5
1461 PADDL 608(BP), X4
1462 PADDL X5, X4
1463 PXOR X4, X7
1464 PSHUFB X14, X7
1465 PADDL X7, X6
1466 PXOR X6, X5
1467 MOVO X5, X8
1468 PSLLL $0x19, X8
1469 PSRLL $0x07, X5
1470 PXOR X8, X5
1471 PSHUFL $0x39, X5, X5
1472 PSHUFL $0x4e, X6, X6
1473 PSHUFL $0x93, X7, X7
1474 PADDL 624(BP), X4
1475 PADDL X5, X4
1476 PXOR X4, X7
1477 PSHUFB X13, X7
1478 PADDL X7, X6
1479 PXOR X6, X5
1480 MOVO X5, X8
1481 PSLLL $0x14, X8
1482 PSRLL $0x0c, X5
1483 PXOR X8, X5
1484 PADDL 640(BP), X4
1485 PADDL X5, X4
1486 PXOR X4, X7
1487 PSHUFB X14, X7
1488 PADDL X7, X6
1489 PXOR X6, X5
1490 MOVO X5, X8
1491 PSLLL $0x19, X8
1492 PSRLL $0x07, X5
1493 PXOR X8, X5
1494 PSHUFL $0x39, X7, X7
1495 PSHUFL $0x4e, X6, X6
1496 PSHUFL $0x93, X5, X5
1497 PXOR X4, X0
1498 PXOR X5, X1
1499 PXOR X6, X0
1500 PXOR X7, X1
1501 LEAQ 64(SI), SI
1502 SUBQ $0x40, DX
1503 JNE loop
1504 MOVO X15, (BP)
1505 MOVQ (BP), R9
1506 MOVQ R9, (BX)
1507 MOVOU X0, (AX)
1508 MOVOU X1, 16(AX)
1509 RET
1510
1511// func hashBlocksSSE4(h *[8]uint32, c *[2]uint32, flag uint32, blocks []byte)
1512// Requires: SSE2, SSE4.1, SSSE3
1513TEXT ·hashBlocksSSE4(SB), $32-48
1514 MOVQ h+0(FP), AX
1515 MOVQ c+8(FP), BX
1516 MOVL flag+16(FP), CX
1517 MOVQ blocks_base+24(FP), SI
1518 MOVQ blocks_len+32(FP), DX
1519 MOVQ SP, BP
1520 ADDQ $0x0f, BP
1521 ANDQ $-16, BP
1522 MOVQ (BX), R9
1523 MOVQ R9, (BP)
1524 MOVQ CX, 8(BP)
1525 MOVOU (AX), X0
1526 MOVOU 16(AX), X1
1527 MOVOU iv0<>+0(SB), X2
1528 MOVOU iv1<>+0(SB), X3
1529 MOVOU counter<>+0(SB), X12
1530 MOVOU rol16<>+0(SB), X13
1531 MOVOU rol8<>+0(SB), X14
1532 MOVO (BP), X15
1533
1534loop:
1535 MOVO X0, X4
1536 MOVO X1, X5
1537 MOVO X2, X6
1538 MOVO X3, X7
1539 PADDQ X12, X15
1540 PXOR X15, X7
1541 MOVL (SI), X8
1542 PINSRD $0x01, 8(SI), X8
1543 PINSRD $0x02, 16(SI), X8
1544 PINSRD $0x03, 24(SI), X8
1545 MOVL 4(SI), X9
1546 PINSRD $0x01, 12(SI), X9
1547 PINSRD $0x02, 20(SI), X9
1548 PINSRD $0x03, 28(SI), X9
1549 MOVL 32(SI), X10
1550 PINSRD $0x01, 40(SI), X10
1551 PINSRD $0x02, 48(SI), X10
1552 PINSRD $0x03, 56(SI), X10
1553 MOVL 36(SI), X11
1554 PINSRD $0x01, 44(SI), X11
1555 PINSRD $0x02, 52(SI), X11
1556 PINSRD $0x03, 60(SI), X11
1557 PADDL X8, X4
1558 PADDL X5, X4
1559 PXOR X4, X7
1560 PSHUFB X13, X7
1561 PADDL X7, X6
1562 PXOR X6, X5
1563 MOVO X5, X8
1564 PSLLL $0x14, X8
1565 PSRLL $0x0c, X5
1566 PXOR X8, X5
1567 PADDL X9, X4
1568 PADDL X5, X4
1569 PXOR X4, X7
1570 PSHUFB X14, X7
1571 PADDL X7, X6
1572 PXOR X6, X5
1573 MOVO X5, X8
1574 PSLLL $0x19, X8
1575 PSRLL $0x07, X5
1576 PXOR X8, X5
1577 PSHUFL $0x39, X5, X5
1578 PSHUFL $0x4e, X6, X6
1579 PSHUFL $0x93, X7, X7
1580 PADDL X10, X4
1581 PADDL X5, X4
1582 PXOR X4, X7
1583 PSHUFB X13, X7
1584 PADDL X7, X6
1585 PXOR X6, X5
1586 MOVO X5, X8
1587 PSLLL $0x14, X8
1588 PSRLL $0x0c, X5
1589 PXOR X8, X5
1590 PADDL X11, X4
1591 PADDL X5, X4
1592 PXOR X4, X7
1593 PSHUFB X14, X7
1594 PADDL X7, X6
1595 PXOR X6, X5
1596 MOVO X5, X8
1597 PSLLL $0x19, X8
1598 PSRLL $0x07, X5
1599 PXOR X8, X5
1600 PSHUFL $0x39, X7, X7
1601 PSHUFL $0x4e, X6, X6
1602 PSHUFL $0x93, X5, X5
1603 MOVL 56(SI), X8
1604 PINSRD $0x01, 16(SI), X8
1605 PINSRD $0x02, 36(SI), X8
1606 PINSRD $0x03, 52(SI), X8
1607 MOVL 40(SI), X9
1608 PINSRD $0x01, 32(SI), X9
1609 PINSRD $0x02, 60(SI), X9
1610 PINSRD $0x03, 24(SI), X9
1611 MOVL 4(SI), X10
1612 PINSRD $0x01, (SI), X10
1613 PINSRD $0x02, 44(SI), X10
1614 PINSRD $0x03, 20(SI), X10
1615 MOVL 48(SI), X11
1616 PINSRD $0x01, 8(SI), X11
1617 PINSRD $0x02, 28(SI), X11
1618 PINSRD $0x03, 12(SI), X11
1619 PADDL X8, X4
1620 PADDL X5, X4
1621 PXOR X4, X7
1622 PSHUFB X13, X7
1623 PADDL X7, X6
1624 PXOR X6, X5
1625 MOVO X5, X8
1626 PSLLL $0x14, X8
1627 PSRLL $0x0c, X5
1628 PXOR X8, X5
1629 PADDL X9, X4
1630 PADDL X5, X4
1631 PXOR X4, X7
1632 PSHUFB X14, X7
1633 PADDL X7, X6
1634 PXOR X6, X5
1635 MOVO X5, X8
1636 PSLLL $0x19, X8
1637 PSRLL $0x07, X5
1638 PXOR X8, X5
1639 PSHUFL $0x39, X5, X5
1640 PSHUFL $0x4e, X6, X6
1641 PSHUFL $0x93, X7, X7
1642 PADDL X10, X4
1643 PADDL X5, X4
1644 PXOR X4, X7
1645 PSHUFB X13, X7
1646 PADDL X7, X6
1647 PXOR X6, X5
1648 MOVO X5, X8
1649 PSLLL $0x14, X8
1650 PSRLL $0x0c, X5
1651 PXOR X8, X5
1652 PADDL X11, X4
1653 PADDL X5, X4
1654 PXOR X4, X7
1655 PSHUFB X14, X7
1656 PADDL X7, X6
1657 PXOR X6, X5
1658 MOVO X5, X8
1659 PSLLL $0x19, X8
1660 PSRLL $0x07, X5
1661 PXOR X8, X5
1662 PSHUFL $0x39, X7, X7
1663 PSHUFL $0x4e, X6, X6
1664 PSHUFL $0x93, X5, X5
1665 MOVL 44(SI), X8
1666 PINSRD $0x01, 48(SI), X8
1667 PINSRD $0x02, 20(SI), X8
1668 PINSRD $0x03, 60(SI), X8
1669 MOVL 32(SI), X9
1670 PINSRD $0x01, (SI), X9
1671 PINSRD $0x02, 8(SI), X9
1672 PINSRD $0x03, 52(SI), X9
1673 MOVL 40(SI), X10
1674 PINSRD $0x01, 12(SI), X10
1675 PINSRD $0x02, 28(SI), X10
1676 PINSRD $0x03, 36(SI), X10
1677 MOVL 56(SI), X11
1678 PINSRD $0x01, 24(SI), X11
1679 PINSRD $0x02, 4(SI), X11
1680 PINSRD $0x03, 16(SI), X11
1681 PADDL X8, X4
1682 PADDL X5, X4
1683 PXOR X4, X7
1684 PSHUFB X13, X7
1685 PADDL X7, X6
1686 PXOR X6, X5
1687 MOVO X5, X8
1688 PSLLL $0x14, X8
1689 PSRLL $0x0c, X5
1690 PXOR X8, X5
1691 PADDL X9, X4
1692 PADDL X5, X4
1693 PXOR X4, X7
1694 PSHUFB X14, X7
1695 PADDL X7, X6
1696 PXOR X6, X5
1697 MOVO X5, X8
1698 PSLLL $0x19, X8
1699 PSRLL $0x07, X5
1700 PXOR X8, X5
1701 PSHUFL $0x39, X5, X5
1702 PSHUFL $0x4e, X6, X6
1703 PSHUFL $0x93, X7, X7
1704 PADDL X10, X4
1705 PADDL X5, X4
1706 PXOR X4, X7
1707 PSHUFB X13, X7
1708 PADDL X7, X6
1709 PXOR X6, X5
1710 MOVO X5, X8
1711 PSLLL $0x14, X8
1712 PSRLL $0x0c, X5
1713 PXOR X8, X5
1714 PADDL X11, X4
1715 PADDL X5, X4
1716 PXOR X4, X7
1717 PSHUFB X14, X7
1718 PADDL X7, X6
1719 PXOR X6, X5
1720 MOVO X5, X8
1721 PSLLL $0x19, X8
1722 PSRLL $0x07, X5
1723 PXOR X8, X5
1724 PSHUFL $0x39, X7, X7
1725 PSHUFL $0x4e, X6, X6
1726 PSHUFL $0x93, X5, X5
1727 MOVL 28(SI), X8
1728 PINSRD $0x01, 12(SI), X8
1729 PINSRD $0x02, 52(SI), X8
1730 PINSRD $0x03, 44(SI), X8
1731 MOVL 36(SI), X9
1732 PINSRD $0x01, 4(SI), X9
1733 PINSRD $0x02, 48(SI), X9
1734 PINSRD $0x03, 56(SI), X9
1735 MOVL 8(SI), X10
1736 PINSRD $0x01, 20(SI), X10
1737 PINSRD $0x02, 16(SI), X10
1738 PINSRD $0x03, 60(SI), X10
1739 MOVL 24(SI), X11
1740 PINSRD $0x01, 40(SI), X11
1741 PINSRD $0x02, (SI), X11
1742 PINSRD $0x03, 32(SI), X11
1743 PADDL X8, X4
1744 PADDL X5, X4
1745 PXOR X4, X7
1746 PSHUFB X13, X7
1747 PADDL X7, X6
1748 PXOR X6, X5
1749 MOVO X5, X8
1750 PSLLL $0x14, X8
1751 PSRLL $0x0c, X5
1752 PXOR X8, X5
1753 PADDL X9, X4
1754 PADDL X5, X4
1755 PXOR X4, X7
1756 PSHUFB X14, X7
1757 PADDL X7, X6
1758 PXOR X6, X5
1759 MOVO X5, X8
1760 PSLLL $0x19, X8
1761 PSRLL $0x07, X5
1762 PXOR X8, X5
1763 PSHUFL $0x39, X5, X5
1764 PSHUFL $0x4e, X6, X6
1765 PSHUFL $0x93, X7, X7
1766 PADDL X10, X4
1767 PADDL X5, X4
1768 PXOR X4, X7
1769 PSHUFB X13, X7
1770 PADDL X7, X6
1771 PXOR X6, X5
1772 MOVO X5, X8
1773 PSLLL $0x14, X8
1774 PSRLL $0x0c, X5
1775 PXOR X8, X5
1776 PADDL X11, X4
1777 PADDL X5, X4
1778 PXOR X4, X7
1779 PSHUFB X14, X7
1780 PADDL X7, X6
1781 PXOR X6, X5
1782 MOVO X5, X8
1783 PSLLL $0x19, X8
1784 PSRLL $0x07, X5
1785 PXOR X8, X5
1786 PSHUFL $0x39, X7, X7
1787 PSHUFL $0x4e, X6, X6
1788 PSHUFL $0x93, X5, X5
1789 MOVL 36(SI), X8
1790 PINSRD $0x01, 20(SI), X8
1791 PINSRD $0x02, 8(SI), X8
1792 PINSRD $0x03, 40(SI), X8
1793 MOVL (SI), X9
1794 PINSRD $0x01, 28(SI), X9
1795 PINSRD $0x02, 16(SI), X9
1796 PINSRD $0x03, 60(SI), X9
1797 MOVL 56(SI), X10
1798 PINSRD $0x01, 44(SI), X10
1799 PINSRD $0x02, 24(SI), X10
1800 PINSRD $0x03, 12(SI), X10
1801 MOVL 4(SI), X11
1802 PINSRD $0x01, 48(SI), X11
1803 PINSRD $0x02, 32(SI), X11
1804 PINSRD $0x03, 52(SI), X11
1805 PADDL X8, X4
1806 PADDL X5, X4
1807 PXOR X4, X7
1808 PSHUFB X13, X7
1809 PADDL X7, X6
1810 PXOR X6, X5
1811 MOVO X5, X8
1812 PSLLL $0x14, X8
1813 PSRLL $0x0c, X5
1814 PXOR X8, X5
1815 PADDL X9, X4
1816 PADDL X5, X4
1817 PXOR X4, X7
1818 PSHUFB X14, X7
1819 PADDL X7, X6
1820 PXOR X6, X5
1821 MOVO X5, X8
1822 PSLLL $0x19, X8
1823 PSRLL $0x07, X5
1824 PXOR X8, X5
1825 PSHUFL $0x39, X5, X5
1826 PSHUFL $0x4e, X6, X6
1827 PSHUFL $0x93, X7, X7
1828 PADDL X10, X4
1829 PADDL X5, X4
1830 PXOR X4, X7
1831 PSHUFB X13, X7
1832 PADDL X7, X6
1833 PXOR X6, X5
1834 MOVO X5, X8
1835 PSLLL $0x14, X8
1836 PSRLL $0x0c, X5
1837 PXOR X8, X5
1838 PADDL X11, X4
1839 PADDL X5, X4
1840 PXOR X4, X7
1841 PSHUFB X14, X7
1842 PADDL X7, X6
1843 PXOR X6, X5
1844 MOVO X5, X8
1845 PSLLL $0x19, X8
1846 PSRLL $0x07, X5
1847 PXOR X8, X5
1848 PSHUFL $0x39, X7, X7
1849 PSHUFL $0x4e, X6, X6
1850 PSHUFL $0x93, X5, X5
1851 MOVL 8(SI), X8
1852 PINSRD $0x01, 24(SI), X8
1853 PINSRD $0x02, (SI), X8
1854 PINSRD $0x03, 32(SI), X8
1855 MOVL 48(SI), X9
1856 PINSRD $0x01, 40(SI), X9
1857 PINSRD $0x02, 44(SI), X9
1858 PINSRD $0x03, 12(SI), X9
1859 MOVL 16(SI), X10
1860 PINSRD $0x01, 28(SI), X10
1861 PINSRD $0x02, 60(SI), X10
1862 PINSRD $0x03, 4(SI), X10
1863 MOVL 52(SI), X11
1864 PINSRD $0x01, 20(SI), X11
1865 PINSRD $0x02, 56(SI), X11
1866 PINSRD $0x03, 36(SI), X11
1867 PADDL X8, X4
1868 PADDL X5, X4
1869 PXOR X4, X7
1870 PSHUFB X13, X7
1871 PADDL X7, X6
1872 PXOR X6, X5
1873 MOVO X5, X8
1874 PSLLL $0x14, X8
1875 PSRLL $0x0c, X5
1876 PXOR X8, X5
1877 PADDL X9, X4
1878 PADDL X5, X4
1879 PXOR X4, X7
1880 PSHUFB X14, X7
1881 PADDL X7, X6
1882 PXOR X6, X5
1883 MOVO X5, X8
1884 PSLLL $0x19, X8
1885 PSRLL $0x07, X5
1886 PXOR X8, X5
1887 PSHUFL $0x39, X5, X5
1888 PSHUFL $0x4e, X6, X6
1889 PSHUFL $0x93, X7, X7
1890 PADDL X10, X4
1891 PADDL X5, X4
1892 PXOR X4, X7
1893 PSHUFB X13, X7
1894 PADDL X7, X6
1895 PXOR X6, X5
1896 MOVO X5, X8
1897 PSLLL $0x14, X8
1898 PSRLL $0x0c, X5
1899 PXOR X8, X5
1900 PADDL X11, X4
1901 PADDL X5, X4
1902 PXOR X4, X7
1903 PSHUFB X14, X7
1904 PADDL X7, X6
1905 PXOR X6, X5
1906 MOVO X5, X8
1907 PSLLL $0x19, X8
1908 PSRLL $0x07, X5
1909 PXOR X8, X5
1910 PSHUFL $0x39, X7, X7
1911 PSHUFL $0x4e, X6, X6
1912 PSHUFL $0x93, X5, X5
1913 MOVL 48(SI), X8
1914 PINSRD $0x01, 4(SI), X8
1915 PINSRD $0x02, 56(SI), X8
1916 PINSRD $0x03, 16(SI), X8
1917 MOVL 20(SI), X9
1918 PINSRD $0x01, 60(SI), X9
1919 PINSRD $0x02, 52(SI), X9
1920 PINSRD $0x03, 40(SI), X9
1921 MOVL (SI), X10
1922 PINSRD $0x01, 24(SI), X10
1923 PINSRD $0x02, 36(SI), X10
1924 PINSRD $0x03, 32(SI), X10
1925 MOVL 28(SI), X11
1926 PINSRD $0x01, 12(SI), X11
1927 PINSRD $0x02, 8(SI), X11
1928 PINSRD $0x03, 44(SI), X11
1929 PADDL X8, X4
1930 PADDL X5, X4
1931 PXOR X4, X7
1932 PSHUFB X13, X7
1933 PADDL X7, X6
1934 PXOR X6, X5
1935 MOVO X5, X8
1936 PSLLL $0x14, X8
1937 PSRLL $0x0c, X5
1938 PXOR X8, X5
1939 PADDL X9, X4
1940 PADDL X5, X4
1941 PXOR X4, X7
1942 PSHUFB X14, X7
1943 PADDL X7, X6
1944 PXOR X6, X5
1945 MOVO X5, X8
1946 PSLLL $0x19, X8
1947 PSRLL $0x07, X5
1948 PXOR X8, X5
1949 PSHUFL $0x39, X5, X5
1950 PSHUFL $0x4e, X6, X6
1951 PSHUFL $0x93, X7, X7
1952 PADDL X10, X4
1953 PADDL X5, X4
1954 PXOR X4, X7
1955 PSHUFB X13, X7
1956 PADDL X7, X6
1957 PXOR X6, X5
1958 MOVO X5, X8
1959 PSLLL $0x14, X8
1960 PSRLL $0x0c, X5
1961 PXOR X8, X5
1962 PADDL X11, X4
1963 PADDL X5, X4
1964 PXOR X4, X7
1965 PSHUFB X14, X7
1966 PADDL X7, X6
1967 PXOR X6, X5
1968 MOVO X5, X8
1969 PSLLL $0x19, X8
1970 PSRLL $0x07, X5
1971 PXOR X8, X5
1972 PSHUFL $0x39, X7, X7
1973 PSHUFL $0x4e, X6, X6
1974 PSHUFL $0x93, X5, X5
1975 MOVL 52(SI), X8
1976 PINSRD $0x01, 28(SI), X8
1977 PINSRD $0x02, 48(SI), X8
1978 PINSRD $0x03, 12(SI), X8
1979 MOVL 44(SI), X9
1980 PINSRD $0x01, 56(SI), X9
1981 PINSRD $0x02, 4(SI), X9
1982 PINSRD $0x03, 36(SI), X9
1983 MOVL 20(SI), X10
1984 PINSRD $0x01, 60(SI), X10
1985 PINSRD $0x02, 32(SI), X10
1986 PINSRD $0x03, 8(SI), X10
1987 MOVL (SI), X11
1988 PINSRD $0x01, 16(SI), X11
1989 PINSRD $0x02, 24(SI), X11
1990 PINSRD $0x03, 40(SI), X11
1991 PADDL X8, X4
1992 PADDL X5, X4
1993 PXOR X4, X7
1994 PSHUFB X13, X7
1995 PADDL X7, X6
1996 PXOR X6, X5
1997 MOVO X5, X8
1998 PSLLL $0x14, X8
1999 PSRLL $0x0c, X5
2000 PXOR X8, X5
2001 PADDL X9, X4
2002 PADDL X5, X4
2003 PXOR X4, X7
2004 PSHUFB X14, X7
2005 PADDL X7, X6
2006 PXOR X6, X5
2007 MOVO X5, X8
2008 PSLLL $0x19, X8
2009 PSRLL $0x07, X5
2010 PXOR X8, X5
2011 PSHUFL $0x39, X5, X5
2012 PSHUFL $0x4e, X6, X6
2013 PSHUFL $0x93, X7, X7
2014 PADDL X10, X4
2015 PADDL X5, X4
2016 PXOR X4, X7
2017 PSHUFB X13, X7
2018 PADDL X7, X6
2019 PXOR X6, X5
2020 MOVO X5, X8
2021 PSLLL $0x14, X8
2022 PSRLL $0x0c, X5
2023 PXOR X8, X5
2024 PADDL X11, X4
2025 PADDL X5, X4
2026 PXOR X4, X7
2027 PSHUFB X14, X7
2028 PADDL X7, X6
2029 PXOR X6, X5
2030 MOVO X5, X8
2031 PSLLL $0x19, X8
2032 PSRLL $0x07, X5
2033 PXOR X8, X5
2034 PSHUFL $0x39, X7, X7
2035 PSHUFL $0x4e, X6, X6
2036 PSHUFL $0x93, X5, X5
2037 MOVL 24(SI), X8
2038 PINSRD $0x01, 56(SI), X8
2039 PINSRD $0x02, 44(SI), X8
2040 PINSRD $0x03, (SI), X8
2041 MOVL 60(SI), X9
2042 PINSRD $0x01, 36(SI), X9
2043 PINSRD $0x02, 12(SI), X9
2044 PINSRD $0x03, 32(SI), X9
2045 MOVL 48(SI), X10
2046 PINSRD $0x01, 52(SI), X10
2047 PINSRD $0x02, 4(SI), X10
2048 PINSRD $0x03, 40(SI), X10
2049 MOVL 8(SI), X11
2050 PINSRD $0x01, 28(SI), X11
2051 PINSRD $0x02, 16(SI), X11
2052 PINSRD $0x03, 20(SI), X11
2053 PADDL X8, X4
2054 PADDL X5, X4
2055 PXOR X4, X7
2056 PSHUFB X13, X7
2057 PADDL X7, X6
2058 PXOR X6, X5
2059 MOVO X5, X8
2060 PSLLL $0x14, X8
2061 PSRLL $0x0c, X5
2062 PXOR X8, X5
2063 PADDL X9, X4
2064 PADDL X5, X4
2065 PXOR X4, X7
2066 PSHUFB X14, X7
2067 PADDL X7, X6
2068 PXOR X6, X5
2069 MOVO X5, X8
2070 PSLLL $0x19, X8
2071 PSRLL $0x07, X5
2072 PXOR X8, X5
2073 PSHUFL $0x39, X5, X5
2074 PSHUFL $0x4e, X6, X6
2075 PSHUFL $0x93, X7, X7
2076 PADDL X10, X4
2077 PADDL X5, X4
2078 PXOR X4, X7
2079 PSHUFB X13, X7
2080 PADDL X7, X6
2081 PXOR X6, X5
2082 MOVO X5, X8
2083 PSLLL $0x14, X8
2084 PSRLL $0x0c, X5
2085 PXOR X8, X5
2086 PADDL X11, X4
2087 PADDL X5, X4
2088 PXOR X4, X7
2089 PSHUFB X14, X7
2090 PADDL X7, X6
2091 PXOR X6, X5
2092 MOVO X5, X8
2093 PSLLL $0x19, X8
2094 PSRLL $0x07, X5
2095 PXOR X8, X5
2096 PSHUFL $0x39, X7, X7
2097 PSHUFL $0x4e, X6, X6
2098 PSHUFL $0x93, X5, X5
2099 MOVL 40(SI), X8
2100 PINSRD $0x01, 32(SI), X8
2101 PINSRD $0x02, 28(SI), X8
2102 PINSRD $0x03, 4(SI), X8
2103 MOVL 8(SI), X9
2104 PINSRD $0x01, 16(SI), X9
2105 PINSRD $0x02, 24(SI), X9
2106 PINSRD $0x03, 20(SI), X9
2107 MOVL 60(SI), X10
2108 PINSRD $0x01, 36(SI), X10
2109 PINSRD $0x02, 12(SI), X10
2110 PINSRD $0x03, 52(SI), X10
2111 MOVL 44(SI), X11
2112 PINSRD $0x01, 56(SI), X11
2113 PINSRD $0x02, 48(SI), X11
2114 PINSRD $0x03, (SI), X11
2115 PADDL X8, X4
2116 PADDL X5, X4
2117 PXOR X4, X7
2118 PSHUFB X13, X7
2119 PADDL X7, X6
2120 PXOR X6, X5
2121 MOVO X5, X8
2122 PSLLL $0x14, X8
2123 PSRLL $0x0c, X5
2124 PXOR X8, X5
2125 PADDL X9, X4
2126 PADDL X5, X4
2127 PXOR X4, X7
2128 PSHUFB X14, X7
2129 PADDL X7, X6
2130 PXOR X6, X5
2131 MOVO X5, X8
2132 PSLLL $0x19, X8
2133 PSRLL $0x07, X5
2134 PXOR X8, X5
2135 PSHUFL $0x39, X5, X5
2136 PSHUFL $0x4e, X6, X6
2137 PSHUFL $0x93, X7, X7
2138 PADDL X10, X4
2139 PADDL X5, X4
2140 PXOR X4, X7
2141 PSHUFB X13, X7
2142 PADDL X7, X6
2143 PXOR X6, X5
2144 MOVO X5, X8
2145 PSLLL $0x14, X8
2146 PSRLL $0x0c, X5
2147 PXOR X8, X5
2148 PADDL X11, X4
2149 PADDL X5, X4
2150 PXOR X4, X7
2151 PSHUFB X14, X7
2152 PADDL X7, X6
2153 PXOR X6, X5
2154 MOVO X5, X8
2155 PSLLL $0x19, X8
2156 PSRLL $0x07, X5
2157 PXOR X8, X5
2158 PSHUFL $0x39, X7, X7
2159 PSHUFL $0x4e, X6, X6
2160 PSHUFL $0x93, X5, X5
2161 PXOR X4, X0
2162 PXOR X5, X1
2163 PXOR X6, X0
2164 PXOR X7, X1
2165 LEAQ 64(SI), SI
2166 SUBQ $0x40, DX
2167 JNE loop
2168 MOVO X15, (BP)
2169 MOVQ (BP), R9
2170 MOVQ R9, (BX)
2171 MOVOU X0, (AX)
2172 MOVOU X1, 16(AX)
2173 RET
View as plain text