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
45 .def sha256_multi_block; .scl 2; .type 32; .endef
51 .LSEH_begin_sha256_multi_block:
64 movaps %xmm10,-120(%rax)
65 movaps %xmm11,-104(%rax)
66 movaps %xmm12,-88(%rax)
67 movaps %xmm13,-72(%rax)
68 movaps %xmm14,-56(%rax)
69 movaps %xmm15,-40(%rax)
73 leaq K256+128(%rip),%rbp
111 movdqu 0-128(%rdi),%xmm8
113 movdqu 32-128(%rdi),%xmm9
114 movdqu 64-128(%rdi),%xmm10
115 movdqu 96-128(%rdi),%xmm11
116 movdqu 128-128(%rdi),%xmm12
117 movdqu 160-128(%rdi),%xmm13
118 movdqu 192-128(%rdi),%xmm14
119 movdqu 224-128(%rdi),%xmm15
120 movdqu .Lpbswap(%rip),%xmm6
131 punpckldq %xmm1,%xmm5
132 punpckldq %xmm2,%xmm0
133 punpckldq %xmm0,%xmm5
134 .byte 102,15,56,0,238
140 movdqa %xmm5,0-128(%rax)
146 paddd -128(%rbp),%xmm5
191 punpckldq %xmm1,%xmm5
192 punpckldq %xmm2,%xmm0
193 punpckldq %xmm0,%xmm5
194 .byte 102,15,56,0,238
200 movdqa %xmm5,16-128(%rax)
206 paddd -96(%rbp),%xmm5
251 punpckldq %xmm1,%xmm5
252 punpckldq %xmm2,%xmm0
253 punpckldq %xmm0,%xmm5
254 .byte 102,15,56,0,238
260 movdqa %xmm5,32-128(%rax)
266 paddd -64(%rbp),%xmm5
311 punpckldq %xmm1,%xmm5
312 punpckldq %xmm2,%xmm0
313 punpckldq %xmm0,%xmm5
314 .byte 102,15,56,0,238
320 movdqa %xmm5,48-128(%rax)
326 paddd -32(%rbp),%xmm5
371 punpckldq %xmm1,%xmm5
372 punpckldq %xmm2,%xmm0
373 punpckldq %xmm0,%xmm5
374 .byte 102,15,56,0,238
380 movdqa %xmm5,64-128(%rax)
431 punpckldq %xmm1,%xmm5
432 punpckldq %xmm2,%xmm0
433 punpckldq %xmm0,%xmm5
434 .byte 102,15,56,0,238
440 movdqa %xmm5,80-128(%rax)
491 punpckldq %xmm1,%xmm5
492 punpckldq %xmm2,%xmm0
493 punpckldq %xmm0,%xmm5
494 .byte 102,15,56,0,238
500 movdqa %xmm5,96-128(%rax)
551 punpckldq %xmm1,%xmm5
552 punpckldq %xmm2,%xmm0
553 punpckldq %xmm0,%xmm5
554 .byte 102,15,56,0,238
560 movdqa %xmm5,112-128(%rax)
612 punpckldq %xmm1,%xmm5
613 punpckldq %xmm2,%xmm0
614 punpckldq %xmm0,%xmm5
615 .byte 102,15,56,0,238
621 movdqa %xmm5,128-128(%rax)
627 paddd -128(%rbp),%xmm5
672 punpckldq %xmm1,%xmm5
673 punpckldq %xmm2,%xmm0
674 punpckldq %xmm0,%xmm5
675 .byte 102,15,56,0,238
681 movdqa %xmm5,144-128(%rax)
687 paddd -96(%rbp),%xmm5
732 punpckldq %xmm1,%xmm5
733 punpckldq %xmm2,%xmm0
734 punpckldq %xmm0,%xmm5
735 .byte 102,15,56,0,238
741 movdqa %xmm5,160-128(%rax)
747 paddd -64(%rbp),%xmm5
792 punpckldq %xmm1,%xmm5
793 punpckldq %xmm2,%xmm0
794 punpckldq %xmm0,%xmm5
795 .byte 102,15,56,0,238
801 movdqa %xmm5,176-128(%rax)
807 paddd -32(%rbp),%xmm5
852 punpckldq %xmm1,%xmm5
853 punpckldq %xmm2,%xmm0
854 punpckldq %xmm0,%xmm5
855 .byte 102,15,56,0,238
861 movdqa %xmm5,192-128(%rax)
912 punpckldq %xmm1,%xmm5
913 punpckldq %xmm2,%xmm0
914 punpckldq %xmm0,%xmm5
915 .byte 102,15,56,0,238
921 movdqa %xmm5,208-128(%rax)
972 punpckldq %xmm1,%xmm5
973 punpckldq %xmm2,%xmm0
974 punpckldq %xmm0,%xmm5
975 .byte 102,15,56,0,238
981 movdqa %xmm5,224-128(%rax)
1036 punpckldq %xmm1,%xmm5
1037 punpckldq %xmm2,%xmm0
1038 punpckldq %xmm0,%xmm5
1039 .byte 102,15,56,0,238
1045 movdqa %xmm5,240-128(%rax)
1051 paddd 96(%rbp),%xmm5
1093 movdqu 0-128(%rax),%xmm5
1098 movdqa 16-128(%rax),%xmm6
1099 paddd 144-128(%rax),%xmm5
1107 movdqa 224-128(%rax),%xmm0
1134 movdqa %xmm5,0-128(%rax)
1140 paddd -128(%rbp),%xmm5
1181 movdqa 32-128(%rax),%xmm5
1182 paddd 160-128(%rax),%xmm6
1190 movdqa 240-128(%rax),%xmm0
1217 movdqa %xmm6,16-128(%rax)
1223 paddd -96(%rbp),%xmm6
1264 movdqa 48-128(%rax),%xmm6
1265 paddd 176-128(%rax),%xmm5
1273 movdqa 0-128(%rax),%xmm0
1300 movdqa %xmm5,32-128(%rax)
1306 paddd -64(%rbp),%xmm5
1338 movdqa %xmm15,%xmm13
1347 movdqa 64-128(%rax),%xmm5
1348 paddd 192-128(%rax),%xmm6
1356 movdqa 16-128(%rax),%xmm0
1383 movdqa %xmm6,48-128(%rax)
1389 paddd -32(%rbp),%xmm6
1421 movdqa %xmm14,%xmm12
1430 movdqa 80-128(%rax),%xmm6
1431 paddd 208-128(%rax),%xmm5
1439 movdqa 32-128(%rax),%xmm0
1466 movdqa %xmm5,64-128(%rax)
1504 movdqa %xmm13,%xmm11
1513 movdqa 96-128(%rax),%xmm5
1514 paddd 224-128(%rax),%xmm6
1522 movdqa 48-128(%rax),%xmm0
1549 movdqa %xmm6,80-128(%rax)
1555 paddd 32(%rbp),%xmm6
1587 movdqa %xmm12,%xmm10
1596 movdqa 112-128(%rax),%xmm6
1597 paddd 240-128(%rax),%xmm5
1605 movdqa 64-128(%rax),%xmm0
1632 movdqa %xmm5,96-128(%rax)
1638 paddd 64(%rbp),%xmm5
1679 movdqa 128-128(%rax),%xmm5
1680 paddd 0-128(%rax),%xmm6
1688 movdqa 80-128(%rax),%xmm0
1715 movdqa %xmm6,112-128(%rax)
1721 paddd 96(%rbp),%xmm6
1763 movdqa 144-128(%rax),%xmm6
1764 paddd 16-128(%rax),%xmm5
1772 movdqa 96-128(%rax),%xmm0
1799 movdqa %xmm5,128-128(%rax)
1805 paddd -128(%rbp),%xmm5
1846 movdqa 160-128(%rax),%xmm5
1847 paddd 32-128(%rax),%xmm6
1855 movdqa 112-128(%rax),%xmm0
1882 movdqa %xmm6,144-128(%rax)
1888 paddd -96(%rbp),%xmm6
1929 movdqa 176-128(%rax),%xmm6
1930 paddd 48-128(%rax),%xmm5
1938 movdqa 128-128(%rax),%xmm0
1965 movdqa %xmm5,160-128(%rax)
1971 paddd -64(%rbp),%xmm5
2003 movdqa %xmm15,%xmm13
2012 movdqa 192-128(%rax),%xmm5
2013 paddd 64-128(%rax),%xmm6
2021 movdqa 144-128(%rax),%xmm0
2048 movdqa %xmm6,176-128(%rax)
2054 paddd -32(%rbp),%xmm6
2086 movdqa %xmm14,%xmm12
2095 movdqa 208-128(%rax),%xmm6
2096 paddd 80-128(%rax),%xmm5
2104 movdqa 160-128(%rax),%xmm0
2131 movdqa %xmm5,192-128(%rax)
2169 movdqa %xmm13,%xmm11
2178 movdqa 224-128(%rax),%xmm5
2179 paddd 96-128(%rax),%xmm6
2187 movdqa 176-128(%rax),%xmm0
2214 movdqa %xmm6,208-128(%rax)
2220 paddd 32(%rbp),%xmm6
2252 movdqa %xmm12,%xmm10
2261 movdqa 240-128(%rax),%xmm6
2262 paddd 112-128(%rax),%xmm5
2270 movdqa 192-128(%rax),%xmm0
2297 movdqa %xmm5,224-128(%rax)
2303 paddd 64(%rbp),%xmm5
2344 movdqa 0-128(%rax),%xmm5
2345 paddd 128-128(%rax),%xmm6
2353 movdqa 208-128(%rax),%xmm0
2380 movdqa %xmm6,240-128(%rax)
2386 paddd 96(%rbp),%xmm6
2432 leaq K256+128(%rip),%rbp
2448 movdqu 0-128(%rdi),%xmm0
2450 movdqu 32-128(%rdi),%xmm1
2452 movdqu 64-128(%rdi),%xmm2
2454 movdqu 96-128(%rdi),%xmm5
2457 movdqu 128-128(%rdi),%xmm0
2460 movdqu 160-128(%rdi),%xmm1
2463 movdqu 192-128(%rdi),%xmm2
2466 movdqu 224-128(%rdi),%xmm5
2470 movdqu %xmm8,0-128(%rdi)
2472 movdqu %xmm9,32-128(%rdi)
2474 movdqu %xmm10,64-128(%rdi)
2475 movdqu %xmm11,96-128(%rdi)
2476 movdqu %xmm12,128-128(%rdi)
2477 movdqu %xmm13,160-128(%rdi)
2478 movdqu %xmm14,192-128(%rdi)
2479 movdqu %xmm15,224-128(%rdi)
2482 movdqa .Lpbswap(%rip),%xmm6
2494 movaps -184(%rax),%xmm6
2495 movaps -168(%rax),%xmm7
2496 movaps -152(%rax),%xmm8
2497 movaps -136(%rax),%xmm9
2498 movaps -120(%rax),%xmm10
2499 movaps -104(%rax),%xmm11
2500 movaps -88(%rax),%xmm12
2501 movaps -72(%rax),%xmm13
2502 movaps -56(%rax),%xmm14
2503 movaps -40(%rax),%xmm15
2510 .LSEH_end_sha256_multi_block:
2513 .long 1116352408,1116352408,1116352408,1116352408
2514 .long 1116352408,1116352408,1116352408,1116352408
2515 .long 1899447441,1899447441,1899447441,1899447441
2516 .long 1899447441,1899447441,1899447441,1899447441
2517 .long 3049323471,3049323471,3049323471,3049323471
2518 .long 3049323471,3049323471,3049323471,3049323471
2519 .long 3921009573,3921009573,3921009573,3921009573
2520 .long 3921009573,3921009573,3921009573,3921009573
2521 .long 961987163,961987163,961987163,961987163
2522 .long 961987163,961987163,961987163,961987163
2523 .long 1508970993,1508970993,1508970993,1508970993
2524 .long 1508970993,1508970993,1508970993,1508970993
2525 .long 2453635748,2453635748,2453635748,2453635748
2526 .long 2453635748,2453635748,2453635748,2453635748
2527 .long 2870763221,2870763221,2870763221,2870763221
2528 .long 2870763221,2870763221,2870763221,2870763221
2529 .long 3624381080,3624381080,3624381080,3624381080
2530 .long 3624381080,3624381080,3624381080,3624381080
2531 .long 310598401,310598401,310598401,310598401
2532 .long 310598401,310598401,310598401,310598401
2533 .long 607225278,607225278,607225278,607225278
2534 .long 607225278,607225278,607225278,607225278
2535 .long 1426881987,1426881987,1426881987,1426881987
2536 .long 1426881987,1426881987,1426881987,1426881987
2537 .long 1925078388,1925078388,1925078388,1925078388
2538 .long 1925078388,1925078388,1925078388,1925078388
2539 .long 2162078206,2162078206,2162078206,2162078206
2540 .long 2162078206,2162078206,2162078206,2162078206
2541 .long 2614888103,2614888103,2614888103,2614888103
2542 .long 2614888103,2614888103,2614888103,2614888103
2543 .long 3248222580,3248222580,3248222580,3248222580
2544 .long 3248222580,3248222580,3248222580,3248222580
2545 .long 3835390401,3835390401,3835390401,3835390401
2546 .long 3835390401,3835390401,3835390401,3835390401
2547 .long 4022224774,4022224774,4022224774,4022224774
2548 .long 4022224774,4022224774,4022224774,4022224774
2549 .long 264347078,264347078,264347078,264347078
2550 .long 264347078,264347078,264347078,264347078
2551 .long 604807628,604807628,604807628,604807628
2552 .long 604807628,604807628,604807628,604807628
2553 .long 770255983,770255983,770255983,770255983
2554 .long 770255983,770255983,770255983,770255983
2555 .long 1249150122,1249150122,1249150122,1249150122
2556 .long 1249150122,1249150122,1249150122,1249150122
2557 .long 1555081692,1555081692,1555081692,1555081692
2558 .long 1555081692,1555081692,1555081692,1555081692
2559 .long 1996064986,1996064986,1996064986,1996064986
2560 .long 1996064986,1996064986,1996064986,1996064986
2561 .long 2554220882,2554220882,2554220882,2554220882
2562 .long 2554220882,2554220882,2554220882,2554220882
2563 .long 2821834349,2821834349,2821834349,2821834349
2564 .long 2821834349,2821834349,2821834349,2821834349
2565 .long 2952996808,2952996808,2952996808,2952996808
2566 .long 2952996808,2952996808,2952996808,2952996808
2567 .long 3210313671,3210313671,3210313671,3210313671
2568 .long 3210313671,3210313671,3210313671,3210313671
2569 .long 3336571891,3336571891,3336571891,3336571891
2570 .long 3336571891,3336571891,3336571891,3336571891
2571 .long 3584528711,3584528711,3584528711,3584528711
2572 .long 3584528711,3584528711,3584528711,3584528711
2573 .long 113926993,113926993,113926993,113926993
2574 .long 113926993,113926993,113926993,113926993
2575 .long 338241895,338241895,338241895,338241895
2576 .long 338241895,338241895,338241895,338241895
2577 .long 666307205,666307205,666307205,666307205
2578 .long 666307205,666307205,666307205,666307205
2579 .long 773529912,773529912,773529912,773529912
2580 .long 773529912,773529912,773529912,773529912
2581 .long 1294757372,1294757372,1294757372,1294757372
2582 .long 1294757372,1294757372,1294757372,1294757372
2583 .long 1396182291,1396182291,1396182291,1396182291
2584 .long 1396182291,1396182291,1396182291,1396182291
2585 .long 1695183700,1695183700,1695183700,1695183700
2586 .long 1695183700,1695183700,1695183700,1695183700
2587 .long 1986661051,1986661051,1986661051,1986661051
2588 .long 1986661051,1986661051,1986661051,1986661051
2589 .long 2177026350,2177026350,2177026350,2177026350
2590 .long 2177026350,2177026350,2177026350,2177026350
2591 .long 2456956037,2456956037,2456956037,2456956037
2592 .long 2456956037,2456956037,2456956037,2456956037
2593 .long 2730485921,2730485921,2730485921,2730485921
2594 .long 2730485921,2730485921,2730485921,2730485921
2595 .long 2820302411,2820302411,2820302411,2820302411
2596 .long 2820302411,2820302411,2820302411,2820302411
2597 .long 3259730800,3259730800,3259730800,3259730800
2598 .long 3259730800,3259730800,3259730800,3259730800
2599 .long 3345764771,3345764771,3345764771,3345764771
2600 .long 3345764771,3345764771,3345764771,3345764771
2601 .long 3516065817,3516065817,3516065817,3516065817
2602 .long 3516065817,3516065817,3516065817,3516065817
2603 .long 3600352804,3600352804,3600352804,3600352804
2604 .long 3600352804,3600352804,3600352804,3600352804
2605 .long 4094571909,4094571909,4094571909,4094571909
2606 .long 4094571909,4094571909,4094571909,4094571909
2607 .long 275423344,275423344,275423344,275423344
2608 .long 275423344,275423344,275423344,275423344
2609 .long 430227734,430227734,430227734,430227734
2610 .long 430227734,430227734,430227734,430227734
2611 .long 506948616,506948616,506948616,506948616
2612 .long 506948616,506948616,506948616,506948616
2613 .long 659060556,659060556,659060556,659060556
2614 .long 659060556,659060556,659060556,659060556
2615 .long 883997877,883997877,883997877,883997877
2616 .long 883997877,883997877,883997877,883997877
2617 .long 958139571,958139571,958139571,958139571
2618 .long 958139571,958139571,958139571,958139571
2619 .long 1322822218,1322822218,1322822218,1322822218
2620 .long 1322822218,1322822218,1322822218,1322822218
2621 .long 1537002063,1537002063,1537002063,1537002063
2622 .long 1537002063,1537002063,1537002063,1537002063
2623 .long 1747873779,1747873779,1747873779,1747873779
2624 .long 1747873779,1747873779,1747873779,1747873779
2625 .long 1955562222,1955562222,1955562222,1955562222
2626 .long 1955562222,1955562222,1955562222,1955562222
2627 .long 2024104815,2024104815,2024104815,2024104815
2628 .long 2024104815,2024104815,2024104815,2024104815
2629 .long 2227730452,2227730452,2227730452,2227730452
2630 .long 2227730452,2227730452,2227730452,2227730452
2631 .long 2361852424,2361852424,2361852424,2361852424
2632 .long 2361852424,2361852424,2361852424,2361852424
2633 .long 2428436474,2428436474,2428436474,2428436474
2634 .long 2428436474,2428436474,2428436474,2428436474
2635 .long 2756734187,2756734187,2756734187,2756734187
2636 .long 2756734187,2756734187,2756734187,2756734187
2637 .long 3204031479,3204031479,3204031479,3204031479
2638 .long 3204031479,3204031479,3204031479,3204031479
2639 .long 3329325298,3329325298,3329325298,3329325298
2640 .long 3329325298,3329325298,3329325298,3329325298
2642 .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2643 .long 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2645 .section .note.GNU-stack,"",%progbits