1 # Copyright (c) 2011-2012, Andy Polyakov <appro@openssl.org>
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
8 # * Redistributions of source code must retain copyright notices,
9 # this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following
13 # disclaimer in the documentation and/or other materials
14 # provided with the distribution.
16 # * Neither the name of the Andy Polyakov nor the names of its
17 # copyright holder and contributors may be used to endorse or
18 # promote products derived from this software without specific
19 # prior written permission.
21 # ALTERNATIVELY, provided that this notice is retained in full, this
22 # product may be distributed under the terms of the GNU General Public
23 # License (GPL), in which case the provisions of the GPL apply INSTEAD OF
26 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
27 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 # *** This file is auto-generated ***
44 .globl _sha256_multi_block
54 leaq K256+128(%rip),%rbp
92 movdqu 0-128(%rdi),%xmm8
94 movdqu 32-128(%rdi),%xmm9
95 movdqu 64-128(%rdi),%xmm10
96 movdqu 96-128(%rdi),%xmm11
97 movdqu 128-128(%rdi),%xmm12
98 movdqu 160-128(%rdi),%xmm13
99 movdqu 192-128(%rdi),%xmm14
100 movdqu 224-128(%rdi),%xmm15
101 movdqu L$pbswap(%rip),%xmm6
112 punpckldq %xmm1,%xmm5
113 punpckldq %xmm2,%xmm0
114 punpckldq %xmm0,%xmm5
115 .byte 102,15,56,0,238
121 movdqa %xmm5,0-128(%rax)
127 paddd -128(%rbp),%xmm5
172 punpckldq %xmm1,%xmm5
173 punpckldq %xmm2,%xmm0
174 punpckldq %xmm0,%xmm5
175 .byte 102,15,56,0,238
181 movdqa %xmm5,16-128(%rax)
187 paddd -96(%rbp),%xmm5
232 punpckldq %xmm1,%xmm5
233 punpckldq %xmm2,%xmm0
234 punpckldq %xmm0,%xmm5
235 .byte 102,15,56,0,238
241 movdqa %xmm5,32-128(%rax)
247 paddd -64(%rbp),%xmm5
292 punpckldq %xmm1,%xmm5
293 punpckldq %xmm2,%xmm0
294 punpckldq %xmm0,%xmm5
295 .byte 102,15,56,0,238
301 movdqa %xmm5,48-128(%rax)
307 paddd -32(%rbp),%xmm5
352 punpckldq %xmm1,%xmm5
353 punpckldq %xmm2,%xmm0
354 punpckldq %xmm0,%xmm5
355 .byte 102,15,56,0,238
361 movdqa %xmm5,64-128(%rax)
412 punpckldq %xmm1,%xmm5
413 punpckldq %xmm2,%xmm0
414 punpckldq %xmm0,%xmm5
415 .byte 102,15,56,0,238
421 movdqa %xmm5,80-128(%rax)
472 punpckldq %xmm1,%xmm5
473 punpckldq %xmm2,%xmm0
474 punpckldq %xmm0,%xmm5
475 .byte 102,15,56,0,238
481 movdqa %xmm5,96-128(%rax)
532 punpckldq %xmm1,%xmm5
533 punpckldq %xmm2,%xmm0
534 punpckldq %xmm0,%xmm5
535 .byte 102,15,56,0,238
541 movdqa %xmm5,112-128(%rax)
593 punpckldq %xmm1,%xmm5
594 punpckldq %xmm2,%xmm0
595 punpckldq %xmm0,%xmm5
596 .byte 102,15,56,0,238
602 movdqa %xmm5,128-128(%rax)
608 paddd -128(%rbp),%xmm5
653 punpckldq %xmm1,%xmm5
654 punpckldq %xmm2,%xmm0
655 punpckldq %xmm0,%xmm5
656 .byte 102,15,56,0,238
662 movdqa %xmm5,144-128(%rax)
668 paddd -96(%rbp),%xmm5
713 punpckldq %xmm1,%xmm5
714 punpckldq %xmm2,%xmm0
715 punpckldq %xmm0,%xmm5
716 .byte 102,15,56,0,238
722 movdqa %xmm5,160-128(%rax)
728 paddd -64(%rbp),%xmm5
773 punpckldq %xmm1,%xmm5
774 punpckldq %xmm2,%xmm0
775 punpckldq %xmm0,%xmm5
776 .byte 102,15,56,0,238
782 movdqa %xmm5,176-128(%rax)
788 paddd -32(%rbp),%xmm5
833 punpckldq %xmm1,%xmm5
834 punpckldq %xmm2,%xmm0
835 punpckldq %xmm0,%xmm5
836 .byte 102,15,56,0,238
842 movdqa %xmm5,192-128(%rax)
893 punpckldq %xmm1,%xmm5
894 punpckldq %xmm2,%xmm0
895 punpckldq %xmm0,%xmm5
896 .byte 102,15,56,0,238
902 movdqa %xmm5,208-128(%rax)
953 punpckldq %xmm1,%xmm5
954 punpckldq %xmm2,%xmm0
955 punpckldq %xmm0,%xmm5
956 .byte 102,15,56,0,238
962 movdqa %xmm5,224-128(%rax)
1017 punpckldq %xmm1,%xmm5
1018 punpckldq %xmm2,%xmm0
1019 punpckldq %xmm0,%xmm5
1020 .byte 102,15,56,0,238
1026 movdqa %xmm5,240-128(%rax)
1032 paddd 96(%rbp),%xmm5
1074 movdqu 0-128(%rax),%xmm5
1079 movdqa 16-128(%rax),%xmm6
1080 paddd 144-128(%rax),%xmm5
1088 movdqa 224-128(%rax),%xmm0
1115 movdqa %xmm5,0-128(%rax)
1121 paddd -128(%rbp),%xmm5
1162 movdqa 32-128(%rax),%xmm5
1163 paddd 160-128(%rax),%xmm6
1171 movdqa 240-128(%rax),%xmm0
1198 movdqa %xmm6,16-128(%rax)
1204 paddd -96(%rbp),%xmm6
1245 movdqa 48-128(%rax),%xmm6
1246 paddd 176-128(%rax),%xmm5
1254 movdqa 0-128(%rax),%xmm0
1281 movdqa %xmm5,32-128(%rax)
1287 paddd -64(%rbp),%xmm5
1319 movdqa %xmm15,%xmm13
1328 movdqa 64-128(%rax),%xmm5
1329 paddd 192-128(%rax),%xmm6
1337 movdqa 16-128(%rax),%xmm0
1364 movdqa %xmm6,48-128(%rax)
1370 paddd -32(%rbp),%xmm6
1402 movdqa %xmm14,%xmm12
1411 movdqa 80-128(%rax),%xmm6
1412 paddd 208-128(%rax),%xmm5
1420 movdqa 32-128(%rax),%xmm0
1447 movdqa %xmm5,64-128(%rax)
1485 movdqa %xmm13,%xmm11
1494 movdqa 96-128(%rax),%xmm5
1495 paddd 224-128(%rax),%xmm6
1503 movdqa 48-128(%rax),%xmm0
1530 movdqa %xmm6,80-128(%rax)
1536 paddd 32(%rbp),%xmm6
1568 movdqa %xmm12,%xmm10
1577 movdqa 112-128(%rax),%xmm6
1578 paddd 240-128(%rax),%xmm5
1586 movdqa 64-128(%rax),%xmm0
1613 movdqa %xmm5,96-128(%rax)
1619 paddd 64(%rbp),%xmm5
1660 movdqa 128-128(%rax),%xmm5
1661 paddd 0-128(%rax),%xmm6
1669 movdqa 80-128(%rax),%xmm0
1696 movdqa %xmm6,112-128(%rax)
1702 paddd 96(%rbp),%xmm6
1744 movdqa 144-128(%rax),%xmm6
1745 paddd 16-128(%rax),%xmm5
1753 movdqa 96-128(%rax),%xmm0
1780 movdqa %xmm5,128-128(%rax)
1786 paddd -128(%rbp),%xmm5
1827 movdqa 160-128(%rax),%xmm5
1828 paddd 32-128(%rax),%xmm6
1836 movdqa 112-128(%rax),%xmm0
1863 movdqa %xmm6,144-128(%rax)
1869 paddd -96(%rbp),%xmm6
1910 movdqa 176-128(%rax),%xmm6
1911 paddd 48-128(%rax),%xmm5
1919 movdqa 128-128(%rax),%xmm0
1946 movdqa %xmm5,160-128(%rax)
1952 paddd -64(%rbp),%xmm5
1984 movdqa %xmm15,%xmm13
1993 movdqa 192-128(%rax),%xmm5
1994 paddd 64-128(%rax),%xmm6
2002 movdqa 144-128(%rax),%xmm0
2029 movdqa %xmm6,176-128(%rax)
2035 paddd -32(%rbp),%xmm6
2067 movdqa %xmm14,%xmm12
2076 movdqa 208-128(%rax),%xmm6
2077 paddd 80-128(%rax),%xmm5
2085 movdqa 160-128(%rax),%xmm0
2112 movdqa %xmm5,192-128(%rax)
2150 movdqa %xmm13,%xmm11
2159 movdqa 224-128(%rax),%xmm5
2160 paddd 96-128(%rax),%xmm6
2168 movdqa 176-128(%rax),%xmm0
2195 movdqa %xmm6,208-128(%rax)
2201 paddd 32(%rbp),%xmm6
2233 movdqa %xmm12,%xmm10
2242 movdqa 240-128(%rax),%xmm6
2243 paddd 112-128(%rax),%xmm5
2251 movdqa 192-128(%rax),%xmm0
2278 movdqa %xmm5,224-128(%rax)
2284 paddd 64(%rbp),%xmm5
2325 movdqa 0-128(%rax),%xmm5
2326 paddd 128-128(%rax),%xmm6
2334 movdqa 208-128(%rax),%xmm0
2361 movdqa %xmm6,240-128(%rax)
2367 paddd 96(%rbp),%xmm6
2413 leaq K256+128(%rip),%rbp
2429 movdqu 0-128(%rdi),%xmm0
2431 movdqu 32-128(%rdi),%xmm1
2433 movdqu 64-128(%rdi),%xmm2
2435 movdqu 96-128(%rdi),%xmm5
2438 movdqu 128-128(%rdi),%xmm0
2441 movdqu 160-128(%rdi),%xmm1
2444 movdqu 192-128(%rdi),%xmm2
2447 movdqu 224-128(%rdi),%xmm5
2451 movdqu %xmm8,0-128(%rdi)
2453 movdqu %xmm9,32-128(%rdi)
2455 movdqu %xmm10,64-128(%rdi)
2456 movdqu %xmm11,96-128(%rdi)
2457 movdqu %xmm12,128-128(%rdi)
2458 movdqu %xmm13,160-128(%rdi)
2459 movdqu %xmm14,192-128(%rdi)
2460 movdqu %xmm15,224-128(%rdi)
2463 movdqa L$pbswap(%rip),%xmm6
2482 .long 1116352408,1116352408,1116352408,1116352408
2483 .long 1116352408,1116352408,1116352408,1116352408
2484 .long 1899447441,1899447441,1899447441,1899447441
2485 .long 1899447441,1899447441,1899447441,1899447441
2486 .long 3049323471,3049323471,3049323471,3049323471
2487 .long 3049323471,3049323471,3049323471,3049323471
2488 .long 3921009573,3921009573,3921009573,3921009573
2489 .long 3921009573,3921009573,3921009573,3921009573
2490 .long 961987163,961987163,961987163,961987163
2491 .long 961987163,961987163,961987163,961987163
2492 .long 1508970993,1508970993,1508970993,1508970993
2493 .long 1508970993,1508970993,1508970993,1508970993
2494 .long 2453635748,2453635748,2453635748,2453635748
2495 .long 2453635748,2453635748,2453635748,2453635748
2496 .long 2870763221,2870763221,2870763221,2870763221
2497 .long 2870763221,2870763221,2870763221,2870763221
2498 .long 3624381080,3624381080,3624381080,3624381080
2499 .long 3624381080,3624381080,3624381080,3624381080
2500 .long 310598401,310598401,310598401,310598401
2501 .long 310598401,310598401,310598401,310598401
2502 .long 607225278,607225278,607225278,607225278
2503 .long 607225278,607225278,607225278,607225278
2504 .long 1426881987,1426881987,1426881987,1426881987
2505 .long 1426881987,1426881987,1426881987,1426881987
2506 .long 1925078388,1925078388,1925078388,1925078388
2507 .long 1925078388,1925078388,1925078388,1925078388
2508 .long 2162078206,2162078206,2162078206,2162078206
2509 .long 2162078206,2162078206,2162078206,2162078206
2510 .long 2614888103,2614888103,2614888103,2614888103
2511 .long 2614888103,2614888103,2614888103,2614888103
2512 .long 3248222580,3248222580,3248222580,3248222580
2513 .long 3248222580,3248222580,3248222580,3248222580
2514 .long 3835390401,3835390401,3835390401,3835390401
2515 .long 3835390401,3835390401,3835390401,3835390401
2516 .long 4022224774,4022224774,4022224774,4022224774
2517 .long 4022224774,4022224774,4022224774,4022224774
2518 .long 264347078,264347078,264347078,264347078
2519 .long 264347078,264347078,264347078,264347078
2520 .long 604807628,604807628,604807628,604807628
2521 .long 604807628,604807628,604807628,604807628
2522 .long 770255983,770255983,770255983,770255983
2523 .long 770255983,770255983,770255983,770255983
2524 .long 1249150122,1249150122,1249150122,1249150122
2525 .long 1249150122,1249150122,1249150122,1249150122
2526 .long 1555081692,1555081692,1555081692,1555081692
2527 .long 1555081692,1555081692,1555081692,1555081692
2528 .long 1996064986,1996064986,1996064986,1996064986
2529 .long 1996064986,1996064986,1996064986,1996064986
2530 .long 2554220882,2554220882,2554220882,2554220882
2531 .long 2554220882,2554220882,2554220882,2554220882
2532 .long 2821834349,2821834349,2821834349,2821834349
2533 .long 2821834349,2821834349,2821834349,2821834349
2534 .long 2952996808,2952996808,2952996808,2952996808
2535 .long 2952996808,2952996808,2952996808,2952996808
2536 .long 3210313671,3210313671,3210313671,3210313671
2537 .long 3210313671,3210313671,3210313671,3210313671
2538 .long 3336571891,3336571891,3336571891,3336571891
2539 .long 3336571891,3336571891,3336571891,3336571891
2540 .long 3584528711,3584528711,3584528711,3584528711
2541 .long 3584528711,3584528711,3584528711,3584528711
2542 .long 113926993,113926993,113926993,113926993
2543 .long 113926993,113926993,113926993,113926993
2544 .long 338241895,338241895,338241895,338241895
2545 .long 338241895,338241895,338241895,338241895
2546 .long 666307205,666307205,666307205,666307205
2547 .long 666307205,666307205,666307205,666307205
2548 .long 773529912,773529912,773529912,773529912
2549 .long 773529912,773529912,773529912,773529912
2550 .long 1294757372,1294757372,1294757372,1294757372
2551 .long 1294757372,1294757372,1294757372,1294757372
2552 .long 1396182291,1396182291,1396182291,1396182291
2553 .long 1396182291,1396182291,1396182291,1396182291
2554 .long 1695183700,1695183700,1695183700,1695183700
2555 .long 1695183700,1695183700,1695183700,1695183700
2556 .long 1986661051,1986661051,1986661051,1986661051
2557 .long 1986661051,1986661051,1986661051,1986661051
2558 .long 2177026350,2177026350,2177026350,2177026350
2559 .long 2177026350,2177026350,2177026350,2177026350
2560 .long 2456956037,2456956037,2456956037,2456956037
2561 .long 2456956037,2456956037,2456956037,2456956037
2562 .long 2730485921,2730485921,2730485921,2730485921
2563 .long 2730485921,2730485921,2730485921,2730485921
2564 .long 2820302411,2820302411,2820302411,2820302411
2565 .long 2820302411,2820302411,2820302411,2820302411
2566 .long 3259730800,3259730800,3259730800,3259730800
2567 .long 3259730800,3259730800,3259730800,3259730800
2568 .long 3345764771,3345764771,3345764771,3345764771
2569 .long 3345764771,3345764771,3345764771,3345764771
2570 .long 3516065817,3516065817,3516065817,3516065817
2571 .long 3516065817,3516065817,3516065817,3516065817
2572 .long 3600352804,3600352804,3600352804,3600352804
2573 .long 3600352804,3600352804,3600352804,3600352804
2574 .long 4094571909,4094571909,4094571909,4094571909
2575 .long 4094571909,4094571909,4094571909,4094571909
2576 .long 275423344,275423344,275423344,275423344
2577 .long 275423344,275423344,275423344,275423344
2578 .long 430227734,430227734,430227734,430227734
2579 .long 430227734,430227734,430227734,430227734
2580 .long 506948616,506948616,506948616,506948616
2581 .long 506948616,506948616,506948616,506948616
2582 .long 659060556,659060556,659060556,659060556
2583 .long 659060556,659060556,659060556,659060556
2584 .long 883997877,883997877,883997877,883997877
2585 .long 883997877,883997877,883997877,883997877
2586 .long 958139571,958139571,958139571,958139571
2587 .long 958139571,958139571,958139571,958139571
2588 .long 1322822218,1322822218,1322822218,1322822218
2589 .long 1322822218,1322822218,1322822218,1322822218
2590 .long 1537002063,1537002063,1537002063,1537002063
2591 .long 1537002063,1537002063,1537002063,1537002063
2592 .long 1747873779,1747873779,1747873779,1747873779
2593 .long 1747873779,1747873779,1747873779,1747873779
2594 .long 1955562222,1955562222,1955562222,1955562222
2595 .long 1955562222,1955562222,1955562222,1955562222
2596 .long 2024104815,2024104815,2024104815,2024104815
2597 .long 2024104815,2024104815,2024104815,2024104815
2598 .long 2227730452,2227730452,2227730452,2227730452
2599 .long 2227730452,2227730452,2227730452,2227730452
2600 .long 2361852424,2361852424,2361852424,2361852424
2601 .long 2361852424,2361852424,2361852424,2361852424
2602 .long 2428436474,2428436474,2428436474,2428436474
2603 .long 2428436474,2428436474,2428436474,2428436474
2604 .long 2756734187,2756734187,2756734187,2756734187
2605 .long 2756734187,2756734187,2756734187,2756734187
2606 .long 3204031479,3204031479,3204031479,3204031479
2607 .long 3204031479,3204031479,3204031479,3204031479
2608 .long 3329325298,3329325298,3329325298,3329325298
2609 .long 3329325298,3329325298,3329325298,3329325298
2611 .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2612 .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2614 .section .note.GNU-stack,"",%progbits