OLD | NEW |
1 #if defined(__arm__) | |
2 #include "arm_arch.h" | 1 #include "arm_arch.h" |
3 #ifdef __ARMEL__ | 2 #ifdef __ARMEL__ |
4 # define LO 0 | 3 # define LO 0 |
5 # define HI 4 | 4 # define HI 4 |
6 # define WORD64(hi0,lo0,hi1,lo1) .word lo0,hi0, lo1,hi1 | 5 # define WORD64(hi0,lo0,hi1,lo1) .word lo0,hi0, lo1,hi1 |
7 #else | 6 #else |
8 # define HI 0 | 7 # define HI 0 |
9 # define LO 4 | 8 # define LO 4 |
10 # define WORD64(hi0,lo0,hi1,lo1) .word hi0,lo0, hi1,lo1 | 9 # define WORD64(hi0,lo0,hi1,lo1) .word hi0,lo0, hi1,lo1 |
11 #endif | 10 #endif |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 WORD64(0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b) | 48 WORD64(0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b) |
50 WORD64(0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207) | 49 WORD64(0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207) |
51 WORD64(0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178) | 50 WORD64(0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178) |
52 WORD64(0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6) | 51 WORD64(0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6) |
53 WORD64(0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b) | 52 WORD64(0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b) |
54 WORD64(0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493) | 53 WORD64(0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493) |
55 WORD64(0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c) | 54 WORD64(0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c) |
56 WORD64(0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a) | 55 WORD64(0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a) |
57 WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817) | 56 WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817) |
58 .size K512,.-K512 | 57 .size K512,.-K512 |
| 58 #if __ARM_MAX_ARCH__>=7 |
59 .LOPENSSL_armcap: | 59 .LOPENSSL_armcap: |
60 .word OPENSSL_armcap_P-sha512_block_data_order | 60 .word OPENSSL_armcap_P-sha512_block_data_order |
61 .skip 32-4 | 61 .skip 32-4 |
| 62 #else |
| 63 .skip 32 |
| 64 #endif |
62 | 65 |
63 .global sha512_block_data_order | 66 .global sha512_block_data_order |
64 .hidden sha512_block_data_order | |
65 .type sha512_block_data_order,%function | 67 .type sha512_block_data_order,%function |
66 sha512_block_data_order: | 68 sha512_block_data_order: |
67 sub r3,pc,#8 @ sha512_block_data_order | 69 sub r3,pc,#8 @ sha512_block_data_order |
68 add r2,r1,r2,lsl#7 @ len to point at the end of inp | 70 add r2,r1,r2,lsl#7 @ len to point at the end of inp |
69 #if __ARM_ARCH__>=7 | 71 #if __ARM_MAX_ARCH__>=7 |
70 ldr r12,.LOPENSSL_armcap | 72 ldr r12,.LOPENSSL_armcap |
71 ldr r12,[r3,r12] @ OPENSSL_armcap_P | 73 ldr r12,[r3,r12] @ OPENSSL_armcap_P |
72 tst r12,#1 | 74 tst r12,#1 |
73 bne .LNEON | 75 bne .LNEON |
74 #endif | 76 #endif |
75 stmdb sp!,{r4-r12,lr} | 77 stmdb sp!,{r4-r12,lr} |
76 sub r14,r3,#672 @ K512 | 78 sub r14,r3,#672 @ K512 |
77 sub sp,sp,#9*8 | 79 sub sp,sp,#9*8 |
78 | 80 |
79 ldr r7,[r0,#32+LO] | 81 ldr r7,[r0,#32+LO] |
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 | 434 |
433 add sp,sp,#8*9 @ destroy frame | 435 add sp,sp,#8*9 @ destroy frame |
434 #if __ARM_ARCH__>=5 | 436 #if __ARM_ARCH__>=5 |
435 ldmia sp!,{r4-r12,pc} | 437 ldmia sp!,{r4-r12,pc} |
436 #else | 438 #else |
437 ldmia sp!,{r4-r12,lr} | 439 ldmia sp!,{r4-r12,lr} |
438 tst lr,#1 | 440 tst lr,#1 |
439 moveq pc,lr @ be binary compatible with V4, yet | 441 moveq pc,lr @ be binary compatible with V4, yet |
440 .word 0xe12fff1e @ interoperable with Thumb ISA:-
) | 442 .word 0xe12fff1e @ interoperable with Thumb ISA:-
) |
441 #endif | 443 #endif |
442 #if __ARM_ARCH__>=7 | 444 #if __ARM_MAX_ARCH__>=7 |
| 445 .arch» armv7-a |
443 .fpu neon | 446 .fpu neon |
444 | 447 |
445 .align 4 | 448 .align 4 |
446 .LNEON: | 449 .LNEON: |
447 dmb @ errata #451034 on early Cortex A8 | 450 dmb @ errata #451034 on early Cortex A8 |
448 vstmdb sp!,{d8-d15} @ ABI specification says so | 451 vstmdb sp!,{d8-d15} @ ABI specification says so |
449 sub r3,r3,#672 @ K512 | 452 sub r3,r3,#672 @ K512 |
450 vldmia r0,{d16-d23} @ load context | 453 vldmia r0,{d16-d23} @ load context |
451 .Loop_neon: | 454 .Loop_neon: |
452 vshr.u64 d24,d20,#14 @ 0 | 455 vshr.u64 d24,d20,#14 @ 0 |
(...skipping 1302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1755 vadd.i64 q8,q12 @ vectorized accumulate | 1758 vadd.i64 q8,q12 @ vectorized accumulate |
1756 vadd.i64 q9,q13 | 1759 vadd.i64 q9,q13 |
1757 vadd.i64 q10,q14 | 1760 vadd.i64 q10,q14 |
1758 vadd.i64 q11,q15 | 1761 vadd.i64 q11,q15 |
1759 vstmia r0,{d16-d23} @ save context | 1762 vstmia r0,{d16-d23} @ save context |
1760 teq r1,r2 | 1763 teq r1,r2 |
1761 sub r3,#640 @ rewind K512 | 1764 sub r3,#640 @ rewind K512 |
1762 bne .Loop_neon | 1765 bne .Loop_neon |
1763 | 1766 |
1764 vldmia sp!,{d8-d15} @ epilogue | 1767 vldmia sp!,{d8-d15} @ epilogue |
1765 » .word» 0xe12fff1e | 1768 » bx» lr» » » » @ .word»0xe12fff1e |
1766 #endif | 1769 #endif |
1767 .size sha512_block_data_order,.-sha512_block_data_order | 1770 .size sha512_block_data_order,.-sha512_block_data_order |
1768 .asciz "SHA512 block transform for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org
>" | 1771 .asciz "SHA512 block transform for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org
>" |
1769 .align 2 | 1772 .align 2 |
| 1773 #if __ARM_MAX_ARCH__>=7 |
1770 .comm OPENSSL_armcap_P,4,4 | 1774 .comm OPENSSL_armcap_P,4,4 |
1771 | |
1772 #endif | 1775 #endif |
OLD | NEW |