OLD | NEW |
1 #if defined(__arm__) | |
2 #include "arm_arch.h" | 1 #include "arm_arch.h" |
3 | 2 |
4 .text | 3 .text |
5 .code 32 | 4 .code 32 |
6 | 5 |
7 .type K256,%object | 6 .type K256,%object |
8 .align 5 | 7 .align 5 |
9 K256: | 8 K256: |
10 .word 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 | 9 .word 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 |
11 .word 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 | 10 .word 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 |
12 .word 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 | 11 .word 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 |
13 .word 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 | 12 .word 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 |
14 .word 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc | 13 .word 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc |
15 .word 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da | 14 .word 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da |
16 .word 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 | 15 .word 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 |
17 .word 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 | 16 .word 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 |
18 .word 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 | 17 .word 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 |
19 .word 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 | 18 .word 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 |
20 .word 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 | 19 .word 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 |
21 .word 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 | 20 .word 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 |
22 .word 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 | 21 .word 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 |
23 .word 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 | 22 .word 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 |
24 .word 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 | 23 .word 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 |
25 .word 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 | 24 .word 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 |
26 .size K256,.-K256 | 25 .size K256,.-K256 |
27 .word 0 @ terminator | 26 .word 0 @ terminator |
| 27 #if __ARM_MAX_ARCH__>=7 |
28 .LOPENSSL_armcap: | 28 .LOPENSSL_armcap: |
29 .word OPENSSL_armcap_P-sha256_block_data_order | 29 .word OPENSSL_armcap_P-sha256_block_data_order |
| 30 #endif |
30 .align 5 | 31 .align 5 |
31 | 32 |
32 .global sha256_block_data_order | 33 .global sha256_block_data_order |
33 .hidden sha256_block_data_order | |
34 .type sha256_block_data_order,%function | 34 .type sha256_block_data_order,%function |
35 sha256_block_data_order: | 35 sha256_block_data_order: |
36 sub r3,pc,#8 @ sha256_block_data_order | 36 sub r3,pc,#8 @ sha256_block_data_order |
37 add r2,r1,r2,lsl#6 @ len to point at the end of inp | 37 add r2,r1,r2,lsl#6 @ len to point at the end of inp |
38 #if __ARM_ARCH__>=7 | 38 #if __ARM_MAX_ARCH__>=7 |
39 ldr r12,.LOPENSSL_armcap | 39 ldr r12,.LOPENSSL_armcap |
40 ldr r12,[r3,r12] @ OPENSSL_armcap_P | 40 ldr r12,[r3,r12] @ OPENSSL_armcap_P |
41 » tst» r12,#1 | 41 » tst» r12,#ARMV8_SHA256 |
| 42 » bne» .LARMv8 |
| 43 » tst» r12,#ARMV7_NEON |
42 bne .LNEON | 44 bne .LNEON |
43 #endif | 45 #endif |
44 stmdb sp!,{r0,r1,r2,r4-r11,lr} | 46 stmdb sp!,{r0,r1,r2,r4-r11,lr} |
45 ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11} | 47 ldmia r0,{r4,r5,r6,r7,r8,r9,r10,r11} |
46 sub r14,r3,#256+32 @ K256 | 48 sub r14,r3,#256+32 @ K256 |
47 sub sp,sp,#16*4 @ alloca(X[16]) | 49 sub sp,sp,#16*4 @ alloca(X[16]) |
48 .Loop: | 50 .Loop: |
49 # if __ARM_ARCH__>=7 | 51 # if __ARM_ARCH__>=7 |
50 ldr r2,[r1],#4 | 52 ldr r2,[r1],#4 |
51 # else | 53 # else |
(...skipping 1711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1763 | 1765 |
1764 add sp,sp,#19*4 @ destroy frame | 1766 add sp,sp,#19*4 @ destroy frame |
1765 #if __ARM_ARCH__>=5 | 1767 #if __ARM_ARCH__>=5 |
1766 ldmia sp!,{r4-r11,pc} | 1768 ldmia sp!,{r4-r11,pc} |
1767 #else | 1769 #else |
1768 ldmia sp!,{r4-r11,lr} | 1770 ldmia sp!,{r4-r11,lr} |
1769 tst lr,#1 | 1771 tst lr,#1 |
1770 moveq pc,lr @ be binary compatible with V4, yet | 1772 moveq pc,lr @ be binary compatible with V4, yet |
1771 .word 0xe12fff1e @ interoperable with Thumb ISA:-
) | 1773 .word 0xe12fff1e @ interoperable with Thumb ISA:-
) |
1772 #endif | 1774 #endif |
1773 #if __ARM_ARCH__>=7 | 1775 .size» sha256_block_data_order,.-sha256_block_data_order |
| 1776 #if __ARM_MAX_ARCH__>=7 |
| 1777 .arch» armv7-a |
1774 .fpu neon | 1778 .fpu neon |
| 1779 |
| 1780 .type sha256_block_data_order_neon,%function |
1775 .align 4 | 1781 .align 4 |
| 1782 sha256_block_data_order_neon: |
1776 .LNEON: | 1783 .LNEON: |
1777 stmdb sp!,{r4-r12,lr} | 1784 stmdb sp!,{r4-r12,lr} |
1778 | 1785 |
1779 mov r12,sp | 1786 mov r12,sp |
1780 sub sp,sp,#16*4+16 @ alloca | 1787 sub sp,sp,#16*4+16 @ alloca |
1781 sub r14,r3,#256+32 @ K256 | 1788 sub r14,r3,#256+32 @ K256 |
1782 bic sp,sp,#15 @ align for 128-bit stores | 1789 bic sp,sp,#15 @ align for 128-bit stores |
1783 | 1790 |
1784 vld1.8 {q0},[r1]! | 1791 vld1.8 {q0},[r1]! |
1785 vld1.8 {q1},[r1]! | 1792 vld1.8 {q1},[r1]! |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2536 stmia r2,{r8-r11} | 2543 stmia r2,{r8-r11} |
2537 | 2544 |
2538 movne r1,sp | 2545 movne r1,sp |
2539 ldrne r2,[sp,#0] | 2546 ldrne r2,[sp,#0] |
2540 eorne r12,r12,r12 | 2547 eorne r12,r12,r12 |
2541 ldreq sp,[sp,#76] @ restore original sp | 2548 ldreq sp,[sp,#76] @ restore original sp |
2542 eorne r3,r5,r6 | 2549 eorne r3,r5,r6 |
2543 bne .L_00_48 | 2550 bne .L_00_48 |
2544 | 2551 |
2545 ldmia sp!,{r4-r12,pc} | 2552 ldmia sp!,{r4-r12,pc} |
| 2553 .size sha256_block_data_order_neon,.-sha256_block_data_order_neon |
2546 #endif | 2554 #endif |
2547 .size sha256_block_data_order,.-sha256_block_data_order | 2555 #if __ARM_MAX_ARCH__>=7 |
2548 .asciz "SHA256 block transform for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org
>" | 2556 .type» sha256_block_data_order_armv8,%function |
| 2557 .align» 5 |
| 2558 sha256_block_data_order_armv8: |
| 2559 .LARMv8: |
| 2560 » vld1.32»{q0,q1},[r0] |
| 2561 » sub» r3,r3,#sha256_block_data_order-K256 |
| 2562 |
| 2563 .Loop_v8: |
| 2564 » vld1.8» » {q8-q9},[r1]! |
| 2565 » vld1.8» » {q10-q11},[r1]! |
| 2566 » vld1.32»» {q12},[r3]! |
| 2567 » vrev32.8» q8,q8 |
| 2568 » vrev32.8» q9,q9 |
| 2569 » vrev32.8» q10,q10 |
| 2570 » vrev32.8» q11,q11 |
| 2571 » vmov» » q14,q0» @ offload |
| 2572 » vmov» » q15,q1 |
| 2573 » teq» » r1,r2 |
| 2574 » vld1.32»» {q13},[r3]! |
| 2575 » vadd.i32» q12,q12,q8 |
| 2576 » .byte» 0xe2,0x03,0xfa,0xf3» @ sha256su0 q8,q9 |
| 2577 » vmov» » q2,q0 |
| 2578 » .byte» 0x68,0x0c,0x02,0xf3» @ sha256h q0,q1,q12 |
| 2579 » .byte» 0x68,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q12 |
| 2580 » .byte» 0xe6,0x0c,0x64,0xf3» @ sha256su1 q8,q10,q11 |
| 2581 » vld1.32»» {q12},[r3]! |
| 2582 » vadd.i32» q13,q13,q9 |
| 2583 » .byte» 0xe4,0x23,0xfa,0xf3» @ sha256su0 q9,q10 |
| 2584 » vmov» » q2,q0 |
| 2585 » .byte» 0x6a,0x0c,0x02,0xf3» @ sha256h q0,q1,q13 |
| 2586 » .byte» 0x6a,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q13 |
| 2587 » .byte» 0xe0,0x2c,0x66,0xf3» @ sha256su1 q9,q11,q8 |
| 2588 » vld1.32»» {q13},[r3]! |
| 2589 » vadd.i32» q12,q12,q10 |
| 2590 » .byte» 0xe6,0x43,0xfa,0xf3» @ sha256su0 q10,q11 |
| 2591 » vmov» » q2,q0 |
| 2592 » .byte» 0x68,0x0c,0x02,0xf3» @ sha256h q0,q1,q12 |
| 2593 » .byte» 0x68,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q12 |
| 2594 » .byte» 0xe2,0x4c,0x60,0xf3» @ sha256su1 q10,q8,q9 |
| 2595 » vld1.32»» {q12},[r3]! |
| 2596 » vadd.i32» q13,q13,q11 |
| 2597 » .byte» 0xe0,0x63,0xfa,0xf3» @ sha256su0 q11,q8 |
| 2598 » vmov» » q2,q0 |
| 2599 » .byte» 0x6a,0x0c,0x02,0xf3» @ sha256h q0,q1,q13 |
| 2600 » .byte» 0x6a,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q13 |
| 2601 » .byte» 0xe4,0x6c,0x62,0xf3» @ sha256su1 q11,q9,q10 |
| 2602 » vld1.32»» {q13},[r3]! |
| 2603 » vadd.i32» q12,q12,q8 |
| 2604 » .byte» 0xe2,0x03,0xfa,0xf3» @ sha256su0 q8,q9 |
| 2605 » vmov» » q2,q0 |
| 2606 » .byte» 0x68,0x0c,0x02,0xf3» @ sha256h q0,q1,q12 |
| 2607 » .byte» 0x68,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q12 |
| 2608 » .byte» 0xe6,0x0c,0x64,0xf3» @ sha256su1 q8,q10,q11 |
| 2609 » vld1.32»» {q12},[r3]! |
| 2610 » vadd.i32» q13,q13,q9 |
| 2611 » .byte» 0xe4,0x23,0xfa,0xf3» @ sha256su0 q9,q10 |
| 2612 » vmov» » q2,q0 |
| 2613 » .byte» 0x6a,0x0c,0x02,0xf3» @ sha256h q0,q1,q13 |
| 2614 » .byte» 0x6a,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q13 |
| 2615 » .byte» 0xe0,0x2c,0x66,0xf3» @ sha256su1 q9,q11,q8 |
| 2616 » vld1.32»» {q13},[r3]! |
| 2617 » vadd.i32» q12,q12,q10 |
| 2618 » .byte» 0xe6,0x43,0xfa,0xf3» @ sha256su0 q10,q11 |
| 2619 » vmov» » q2,q0 |
| 2620 » .byte» 0x68,0x0c,0x02,0xf3» @ sha256h q0,q1,q12 |
| 2621 » .byte» 0x68,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q12 |
| 2622 » .byte» 0xe2,0x4c,0x60,0xf3» @ sha256su1 q10,q8,q9 |
| 2623 » vld1.32»» {q12},[r3]! |
| 2624 » vadd.i32» q13,q13,q11 |
| 2625 » .byte» 0xe0,0x63,0xfa,0xf3» @ sha256su0 q11,q8 |
| 2626 » vmov» » q2,q0 |
| 2627 » .byte» 0x6a,0x0c,0x02,0xf3» @ sha256h q0,q1,q13 |
| 2628 » .byte» 0x6a,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q13 |
| 2629 » .byte» 0xe4,0x6c,0x62,0xf3» @ sha256su1 q11,q9,q10 |
| 2630 » vld1.32»» {q13},[r3]! |
| 2631 » vadd.i32» q12,q12,q8 |
| 2632 » .byte» 0xe2,0x03,0xfa,0xf3» @ sha256su0 q8,q9 |
| 2633 » vmov» » q2,q0 |
| 2634 » .byte» 0x68,0x0c,0x02,0xf3» @ sha256h q0,q1,q12 |
| 2635 » .byte» 0x68,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q12 |
| 2636 » .byte» 0xe6,0x0c,0x64,0xf3» @ sha256su1 q8,q10,q11 |
| 2637 » vld1.32»» {q12},[r3]! |
| 2638 » vadd.i32» q13,q13,q9 |
| 2639 » .byte» 0xe4,0x23,0xfa,0xf3» @ sha256su0 q9,q10 |
| 2640 » vmov» » q2,q0 |
| 2641 » .byte» 0x6a,0x0c,0x02,0xf3» @ sha256h q0,q1,q13 |
| 2642 » .byte» 0x6a,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q13 |
| 2643 » .byte» 0xe0,0x2c,0x66,0xf3» @ sha256su1 q9,q11,q8 |
| 2644 » vld1.32»» {q13},[r3]! |
| 2645 » vadd.i32» q12,q12,q10 |
| 2646 » .byte» 0xe6,0x43,0xfa,0xf3» @ sha256su0 q10,q11 |
| 2647 » vmov» » q2,q0 |
| 2648 » .byte» 0x68,0x0c,0x02,0xf3» @ sha256h q0,q1,q12 |
| 2649 » .byte» 0x68,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q12 |
| 2650 » .byte» 0xe2,0x4c,0x60,0xf3» @ sha256su1 q10,q8,q9 |
| 2651 » vld1.32»» {q12},[r3]! |
| 2652 » vadd.i32» q13,q13,q11 |
| 2653 » .byte» 0xe0,0x63,0xfa,0xf3» @ sha256su0 q11,q8 |
| 2654 » vmov» » q2,q0 |
| 2655 » .byte» 0x6a,0x0c,0x02,0xf3» @ sha256h q0,q1,q13 |
| 2656 » .byte» 0x6a,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q13 |
| 2657 » .byte» 0xe4,0x6c,0x62,0xf3» @ sha256su1 q11,q9,q10 |
| 2658 » vld1.32»» {q13},[r3]! |
| 2659 » vadd.i32» q12,q12,q8 |
| 2660 » vmov» » q2,q0 |
| 2661 » .byte» 0x68,0x0c,0x02,0xf3» @ sha256h q0,q1,q12 |
| 2662 » .byte» 0x68,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q12 |
| 2663 |
| 2664 » vld1.32»» {q12},[r3]! |
| 2665 » vadd.i32» q13,q13,q9 |
| 2666 » vmov» » q2,q0 |
| 2667 » .byte» 0x6a,0x0c,0x02,0xf3» @ sha256h q0,q1,q13 |
| 2668 » .byte» 0x6a,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q13 |
| 2669 |
| 2670 » vld1.32»» {q13},[r3] |
| 2671 » vadd.i32» q12,q12,q10 |
| 2672 » sub» » r3,r3,#256-16» @ rewind |
| 2673 » vmov» » q2,q0 |
| 2674 » .byte» 0x68,0x0c,0x02,0xf3» @ sha256h q0,q1,q12 |
| 2675 » .byte» 0x68,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q12 |
| 2676 |
| 2677 » vadd.i32» q13,q13,q11 |
| 2678 » vmov» » q2,q0 |
| 2679 » .byte» 0x6a,0x0c,0x02,0xf3» @ sha256h q0,q1,q13 |
| 2680 » .byte» 0x6a,0x2c,0x14,0xf3» @ sha256h2 q1,q2,q13 |
| 2681 |
| 2682 » vadd.i32» q0,q0,q14 |
| 2683 » vadd.i32» q1,q1,q15 |
| 2684 » bne» » .Loop_v8 |
| 2685 |
| 2686 » vst1.32»» {q0,q1},[r0] |
| 2687 |
| 2688 » bx» lr» » @ bx lr |
| 2689 .size» sha256_block_data_order_armv8,.-sha256_block_data_order_armv8 |
| 2690 #endif |
| 2691 .asciz "SHA256 block transform for ARMv4/NEON/ARMv8, CRYPTOGAMS by <appro@opens
sl.org>" |
2549 .align 2 | 2692 .align 2 |
| 2693 #if __ARM_MARCH_ARCH__>=7 |
2550 .comm OPENSSL_armcap_P,4,4 | 2694 .comm OPENSSL_armcap_P,4,4 |
2551 | |
2552 #endif | 2695 #endif |
OLD | NEW |