OLD | NEW |
1 | 1 |
2 @ ==================================================================== | 2 @ ==================================================================== |
3 @ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL | 3 @ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL |
4 @ project. The module is, however, dual licensed under OpenSSL and | 4 @ project. The module is, however, dual licensed under OpenSSL and |
5 @ CRYPTOGAMS licenses depending on where you obtain it. For further | 5 @ CRYPTOGAMS licenses depending on where you obtain it. For further |
6 @ details see http://www.openssl.org/~appro/cryptogams/. | 6 @ details see http://www.openssl.org/~appro/cryptogams/. |
7 @ | 7 @ |
8 @ Permission to use under GPL terms is granted. | 8 @ Permission to use under GPL terms is granted. |
9 @ ==================================================================== | 9 @ ==================================================================== |
10 | 10 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 # define LO 0 | 60 # define LO 0 |
61 # define HI 4 | 61 # define HI 4 |
62 # define WORD64(hi0,lo0,hi1,lo1) .word lo0,hi0, lo1,hi1 | 62 # define WORD64(hi0,lo0,hi1,lo1) .word lo0,hi0, lo1,hi1 |
63 #else | 63 #else |
64 # define HI 0 | 64 # define HI 0 |
65 # define LO 4 | 65 # define LO 4 |
66 # define WORD64(hi0,lo0,hi1,lo1) .word hi0,lo0, hi1,lo1 | 66 # define WORD64(hi0,lo0,hi1,lo1) .word hi0,lo0, hi1,lo1 |
67 #endif | 67 #endif |
68 | 68 |
69 .text | 69 .text |
70 #if __ARM_ARCH__<7 || defined(__APPLE__) | 70 #if __ARM_ARCH__<7 |
71 .code 32 | 71 .code 32 |
72 #else | 72 #else |
73 .syntax»unified | 73 .syntax unified |
74 # ifdef __thumb2__ | 74 # ifdef __thumb2__ |
75 # define adrl adr | 75 # define adrl adr |
76 .thumb | 76 .thumb |
77 # else | 77 # else |
78 .code» 32 | 78 .code 32 |
79 # endif | 79 # endif |
80 #endif | 80 #endif |
81 | 81 |
82 .type K512,%object | 82 .type K512,%object |
83 .align 5 | 83 .align 5 |
84 K512: | 84 K512: |
85 » WORD64(0x428a2f98,0xd728ae22,» 0x71374491,0x23ef65cd) | 85 WORD64(0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd) |
86 » WORD64(0xb5c0fbcf,0xec4d3b2f,» 0xe9b5dba5,0x8189dbbc) | 86 WORD64(0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc) |
87 » WORD64(0x3956c25b,0xf348b538,» 0x59f111f1,0xb605d019) | 87 WORD64(0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019) |
88 » WORD64(0x923f82a4,0xaf194f9b,» 0xab1c5ed5,0xda6d8118) | 88 WORD64(0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118) |
89 » WORD64(0xd807aa98,0xa3030242,» 0x12835b01,0x45706fbe) | 89 WORD64(0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe) |
90 » WORD64(0x243185be,0x4ee4b28c,» 0x550c7dc3,0xd5ffb4e2) | 90 WORD64(0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2) |
91 » WORD64(0x72be5d74,0xf27b896f,» 0x80deb1fe,0x3b1696b1) | 91 WORD64(0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1) |
92 » WORD64(0x9bdc06a7,0x25c71235,» 0xc19bf174,0xcf692694) | 92 WORD64(0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694) |
93 » WORD64(0xe49b69c1,0x9ef14ad2,» 0xefbe4786,0x384f25e3) | 93 WORD64(0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3) |
94 » WORD64(0x0fc19dc6,0x8b8cd5b5,» 0x240ca1cc,0x77ac9c65) | 94 WORD64(0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65) |
95 » WORD64(0x2de92c6f,0x592b0275,» 0x4a7484aa,0x6ea6e483) | 95 WORD64(0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483) |
96 » WORD64(0x5cb0a9dc,0xbd41fbd4,» 0x76f988da,0x831153b5) | 96 WORD64(0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5) |
97 » WORD64(0x983e5152,0xee66dfab,» 0xa831c66d,0x2db43210) | 97 WORD64(0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210) |
98 » WORD64(0xb00327c8,0x98fb213f,» 0xbf597fc7,0xbeef0ee4) | 98 WORD64(0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4) |
99 » WORD64(0xc6e00bf3,0x3da88fc2,» 0xd5a79147,0x930aa725) | 99 WORD64(0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725) |
100 » WORD64(0x06ca6351,0xe003826f,» 0x14292967,0x0a0e6e70) | 100 WORD64(0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70) |
101 » WORD64(0x27b70a85,0x46d22ffc,» 0x2e1b2138,0x5c26c926) | 101 WORD64(0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926) |
102 » WORD64(0x4d2c6dfc,0x5ac42aed,» 0x53380d13,0x9d95b3df) | 102 WORD64(0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df) |
103 » WORD64(0x650a7354,0x8baf63de,» 0x766a0abb,0x3c77b2a8) | 103 WORD64(0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8) |
104 » WORD64(0x81c2c92e,0x47edaee6,» 0x92722c85,0x1482353b) | 104 WORD64(0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b) |
105 » WORD64(0xa2bfe8a1,0x4cf10364,» 0xa81a664b,0xbc423001) | 105 WORD64(0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001) |
106 » WORD64(0xc24b8b70,0xd0f89791,» 0xc76c51a3,0x0654be30) | 106 WORD64(0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30) |
107 » WORD64(0xd192e819,0xd6ef5218,» 0xd6990624,0x5565a910) | 107 WORD64(0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910) |
108 » WORD64(0xf40e3585,0x5771202a,» 0x106aa070,0x32bbd1b8) | 108 WORD64(0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8) |
109 » WORD64(0x19a4c116,0xb8d2d0c8,» 0x1e376c08,0x5141ab53) | 109 WORD64(0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53) |
110 » WORD64(0x2748774c,0xdf8eeb99,» 0x34b0bcb5,0xe19b48a8) | 110 WORD64(0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8) |
111 » WORD64(0x391c0cb3,0xc5c95a63,» 0x4ed8aa4a,0xe3418acb) | 111 WORD64(0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb) |
112 » WORD64(0x5b9cca4f,0x7763e373,» 0x682e6ff3,0xd6b2b8a3) | 112 WORD64(0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3) |
113 » WORD64(0x748f82ee,0x5defb2fc,» 0x78a5636f,0x43172f60) | 113 WORD64(0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60) |
114 » WORD64(0x84c87814,0xa1f0ab72,» 0x8cc70208,0x1a6439ec) | 114 WORD64(0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec) |
115 » WORD64(0x90befffa,0x23631e28,» 0xa4506ceb,0xde82bde9) | 115 WORD64(0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9) |
116 » WORD64(0xbef9a3f7,0xb2c67915,» 0xc67178f2,0xe372532b) | 116 WORD64(0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b) |
117 » WORD64(0xca273ece,0xea26619c,» 0xd186b8c7,0x21c0c207) | 117 WORD64(0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207) |
118 » WORD64(0xeada7dd6,0xcde0eb1e,» 0xf57d4f7f,0xee6ed178) | 118 WORD64(0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178) |
119 » WORD64(0x06f067aa,0x72176fba,» 0x0a637dc5,0xa2c898a6) | 119 WORD64(0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6) |
120 » WORD64(0x113f9804,0xbef90dae,» 0x1b710b35,0x131c471b) | 120 WORD64(0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b) |
121 » WORD64(0x28db77f5,0x23047d84,» 0x32caab7b,0x40c72493) | 121 WORD64(0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493) |
122 » WORD64(0x3c9ebe0a,0x15c9bebc,» 0x431d67c4,0x9c100d4c) | 122 WORD64(0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c) |
123 » WORD64(0x4cc5d4be,0xcb3e42b6,» 0x597f299c,0xfc657e2a) | 123 WORD64(0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a) |
124 » WORD64(0x5fcb6fab,0x3ad6faec,» 0x6c44198c,0x4a475817) | 124 WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817) |
125 .size K512,.-K512 | 125 .size K512,.-K512 |
126 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 126 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
127 .LOPENSSL_armcap: | 127 .LOPENSSL_armcap: |
128 .word» OPENSSL_armcap_P-.Lsha512_block_data_order | 128 .word» OPENSSL_armcap_P-sha512_block_data_order |
129 .skip 32-4 | 129 .skip 32-4 |
130 #else | 130 #else |
131 .skip 32 | 131 .skip 32 |
132 #endif | 132 #endif |
133 | 133 |
134 .globl» sha512_block_data_order | 134 .global»sha512_block_data_order |
135 .type sha512_block_data_order,%function | 135 .type sha512_block_data_order,%function |
136 sha512_block_data_order: | 136 sha512_block_data_order: |
137 .Lsha512_block_data_order: | |
138 #if __ARM_ARCH__<7 | 137 #if __ARM_ARCH__<7 |
139 sub r3,pc,#8 @ sha512_block_data_order | 138 sub r3,pc,#8 @ sha512_block_data_order |
140 #else | 139 #else |
141 adr r3,sha512_block_data_order | 140 adr r3,sha512_block_data_order |
142 #endif | 141 #endif |
143 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 142 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
144 ldr r12,.LOPENSSL_armcap | 143 ldr r12,.LOPENSSL_armcap |
145 ldr r12,[r3,r12] @ OPENSSL_armcap_P | 144 ldr r12,[r3,r12] @ OPENSSL_armcap_P |
146 #ifdef __APPLE__ | |
147 ldr r12,[r12] | |
148 #endif | |
149 tst r12,#1 | 145 tst r12,#1 |
150 bne .LNEON | 146 bne .LNEON |
151 #endif | 147 #endif |
152 add r2,r1,r2,lsl#7 @ len to point at the end of inp | 148 add r2,r1,r2,lsl#7 @ len to point at the end of inp |
153 » stmdb» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} | 149 » stmdb» sp!,{r4-r12,lr} |
154 sub r14,r3,#672 @ K512 | 150 sub r14,r3,#672 @ K512 |
155 sub sp,sp,#9*8 | 151 sub sp,sp,#9*8 |
156 | 152 |
157 ldr r7,[r0,#32+LO] | 153 ldr r7,[r0,#32+LO] |
158 ldr r8,[r0,#32+HI] | 154 ldr r8,[r0,#32+HI] |
159 ldr r9, [r0,#48+LO] | 155 ldr r9, [r0,#48+LO] |
160 ldr r10, [r0,#48+HI] | 156 ldr r10, [r0,#48+HI] |
161 ldr r11, [r0,#56+LO] | 157 ldr r11, [r0,#56+LO] |
162 ldr r12, [r0,#56+HI] | 158 ldr r12, [r0,#56+HI] |
163 .Loop: | 159 .Loop: |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 str r12, [r0,#56+HI] | 508 str r12, [r0,#56+HI] |
513 | 509 |
514 add sp,sp,#640 | 510 add sp,sp,#640 |
515 sub r14,r14,#640 | 511 sub r14,r14,#640 |
516 | 512 |
517 teq r1,r2 | 513 teq r1,r2 |
518 bne .Loop | 514 bne .Loop |
519 | 515 |
520 add sp,sp,#8*9 @ destroy frame | 516 add sp,sp,#8*9 @ destroy frame |
521 #if __ARM_ARCH__>=5 | 517 #if __ARM_ARCH__>=5 |
522 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,pc} | 518 » ldmia» sp!,{r4-r12,pc} |
523 #else | 519 #else |
524 » ldmia» sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr} | 520 » ldmia» sp!,{r4-r12,lr} |
525 tst lr,#1 | 521 tst lr,#1 |
526 moveq pc,lr @ be binary compatible with V4, yet | 522 moveq pc,lr @ be binary compatible with V4, yet |
527 .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-) | 523 » .word» 0xe12fff1e» » » @ interoperable with Thumb ISA:-
) |
528 #endif | 524 #endif |
529 .size sha512_block_data_order,.-sha512_block_data_order | 525 .size sha512_block_data_order,.-sha512_block_data_order |
530 #if __ARM_MAX_ARCH__>=7 | 526 #if __ARM_MAX_ARCH__>=7 |
531 .arch armv7-a | 527 .arch armv7-a |
532 .fpu neon | 528 .fpu neon |
533 | 529 |
534 .globl» sha512_block_data_order_neon | 530 .global»sha512_block_data_order_neon |
535 .type sha512_block_data_order_neon,%function | 531 .type sha512_block_data_order_neon,%function |
536 .align 4 | 532 .align 4 |
537 sha512_block_data_order_neon: | 533 sha512_block_data_order_neon: |
538 .LNEON: | 534 .LNEON: |
539 » dmb» @ errata #451034 on early Cortex A8 | 535 » dmb» » » » @ errata #451034 on early Cortex A8 |
540 add r2,r1,r2,lsl#7 @ len to point at the end of inp | 536 add r2,r1,r2,lsl#7 @ len to point at the end of inp |
541 adr r3,K512 | |
542 VFP_ABI_PUSH | 537 VFP_ABI_PUSH |
543 » vldmia» r0,{d16,d17,d18,d19,d20,d21,d22,d23}» » @ load context | 538 » adrl» r3,K512 |
| 539 » vldmia» r0,{d16-d23}» » @ load context |
544 .Loop_neon: | 540 .Loop_neon: |
545 vshr.u64 d24,d20,#14 @ 0 | 541 vshr.u64 d24,d20,#14 @ 0 |
546 #if 0<16 | 542 #if 0<16 |
547 » vld1.64»{d0},[r1]!» @ handles unaligned | 543 » vld1.64»» {d0},[r1]!» @ handles unaligned |
548 #endif | 544 #endif |
549 vshr.u64 d25,d20,#18 | 545 vshr.u64 d25,d20,#18 |
550 #if 0>0 | 546 #if 0>0 |
551 » vadd.i64» d16,d30»» » @ h+=Maj from the past | 547 » vadd.i64» d16,d30»» » @ h+=Maj from the past |
552 #endif | 548 #endif |
553 vshr.u64 d26,d20,#41 | 549 vshr.u64 d26,d20,#41 |
554 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 550 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
555 » vsli.64»d24,d20,#50 | 551 » vsli.64»» d24,d20,#50 |
556 » vsli.64»d25,d20,#46 | 552 » vsli.64»» d25,d20,#46 |
557 » vmov» d29,d20 | 553 » vmov» » d29,d20 |
558 » vsli.64»d26,d20,#23 | 554 » vsli.64»» d26,d20,#23 |
559 #if 0<16 && defined(__ARMEL__) | 555 #if 0<16 && defined(__ARMEL__) |
560 vrev64.8 d0,d0 | 556 vrev64.8 d0,d0 |
561 #endif | 557 #endif |
562 » veor» d25,d24 | 558 » veor» » d25,d24 |
563 » vbsl» d29,d21,d22» » @ Ch(e,f,g) | 559 » vbsl» » d29,d21,d22» » @ Ch(e,f,g) |
564 vshr.u64 d24,d16,#28 | 560 vshr.u64 d24,d16,#28 |
565 » veor» d26,d25»» » @ Sigma1(e) | 561 » veor» » d26,d25»» » @ Sigma1(e) |
566 vadd.i64 d27,d29,d23 | 562 vadd.i64 d27,d29,d23 |
567 vshr.u64 d25,d16,#34 | 563 vshr.u64 d25,d16,#34 |
568 » vsli.64»d24,d16,#36 | 564 » vsli.64»» d24,d16,#36 |
569 vadd.i64 d27,d26 | 565 vadd.i64 d27,d26 |
570 vshr.u64 d26,d16,#39 | 566 vshr.u64 d26,d16,#39 |
571 vadd.i64 d28,d0 | 567 vadd.i64 d28,d0 |
572 » vsli.64»d25,d16,#30 | 568 » vsli.64»» d25,d16,#30 |
573 » veor» d30,d16,d17 | 569 » veor» » d30,d16,d17 |
574 » vsli.64»d26,d16,#25 | 570 » vsli.64»» d26,d16,#25 |
575 » veor» d23,d24,d25 | 571 » veor» » d23,d24,d25 |
576 » vadd.i64» d27,d28 | 572 » vadd.i64» d27,d28 |
577 » vbsl» d30,d18,d17» » @ Maj(a,b,c) | 573 » vbsl» » d30,d18,d17» » @ Maj(a,b,c) |
578 » veor» d23,d26»» » @ Sigma0(a) | 574 » veor» » d23,d26»» » @ Sigma0(a) |
579 vadd.i64 d19,d27 | 575 vadd.i64 d19,d27 |
580 vadd.i64 d30,d27 | 576 vadd.i64 d30,d27 |
581 @ vadd.i64 d23,d30 | 577 @ vadd.i64 d23,d30 |
582 vshr.u64 d24,d19,#14 @ 1 | 578 vshr.u64 d24,d19,#14 @ 1 |
583 #if 1<16 | 579 #if 1<16 |
584 » vld1.64»{d1},[r1]!» @ handles unaligned | 580 » vld1.64»» {d1},[r1]!» @ handles unaligned |
585 #endif | 581 #endif |
586 vshr.u64 d25,d19,#18 | 582 vshr.u64 d25,d19,#18 |
587 #if 1>0 | 583 #if 1>0 |
588 » vadd.i64» d23,d30»» » @ h+=Maj from the past | 584 » vadd.i64» d23,d30»» » @ h+=Maj from the past |
589 #endif | 585 #endif |
590 vshr.u64 d26,d19,#41 | 586 vshr.u64 d26,d19,#41 |
591 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 587 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
592 » vsli.64»d24,d19,#50 | 588 » vsli.64»» d24,d19,#50 |
593 » vsli.64»d25,d19,#46 | 589 » vsli.64»» d25,d19,#46 |
594 » vmov» d29,d19 | 590 » vmov» » d29,d19 |
595 » vsli.64»d26,d19,#23 | 591 » vsli.64»» d26,d19,#23 |
596 #if 1<16 && defined(__ARMEL__) | 592 #if 1<16 && defined(__ARMEL__) |
597 vrev64.8 d1,d1 | 593 vrev64.8 d1,d1 |
598 #endif | 594 #endif |
599 » veor» d25,d24 | 595 » veor» » d25,d24 |
600 » vbsl» d29,d20,d21» » @ Ch(e,f,g) | 596 » vbsl» » d29,d20,d21» » @ Ch(e,f,g) |
601 vshr.u64 d24,d23,#28 | 597 vshr.u64 d24,d23,#28 |
602 » veor» d26,d25»» » @ Sigma1(e) | 598 » veor» » d26,d25»» » @ Sigma1(e) |
603 vadd.i64 d27,d29,d22 | 599 vadd.i64 d27,d29,d22 |
604 vshr.u64 d25,d23,#34 | 600 vshr.u64 d25,d23,#34 |
605 » vsli.64»d24,d23,#36 | 601 » vsli.64»» d24,d23,#36 |
606 vadd.i64 d27,d26 | 602 vadd.i64 d27,d26 |
607 vshr.u64 d26,d23,#39 | 603 vshr.u64 d26,d23,#39 |
608 vadd.i64 d28,d1 | 604 vadd.i64 d28,d1 |
609 » vsli.64»d25,d23,#30 | 605 » vsli.64»» d25,d23,#30 |
610 » veor» d30,d23,d16 | 606 » veor» » d30,d23,d16 |
611 » vsli.64»d26,d23,#25 | 607 » vsli.64»» d26,d23,#25 |
612 » veor» d22,d24,d25 | 608 » veor» » d22,d24,d25 |
613 » vadd.i64» d27,d28 | 609 » vadd.i64» d27,d28 |
614 » vbsl» d30,d17,d16» » @ Maj(a,b,c) | 610 » vbsl» » d30,d17,d16» » @ Maj(a,b,c) |
615 » veor» d22,d26»» » @ Sigma0(a) | 611 » veor» » d22,d26»» » @ Sigma0(a) |
616 vadd.i64 d18,d27 | 612 vadd.i64 d18,d27 |
617 vadd.i64 d30,d27 | 613 vadd.i64 d30,d27 |
618 @ vadd.i64 d22,d30 | 614 @ vadd.i64 d22,d30 |
619 vshr.u64 d24,d18,#14 @ 2 | 615 vshr.u64 d24,d18,#14 @ 2 |
620 #if 2<16 | 616 #if 2<16 |
621 » vld1.64»{d2},[r1]!» @ handles unaligned | 617 » vld1.64»» {d2},[r1]!» @ handles unaligned |
622 #endif | 618 #endif |
623 vshr.u64 d25,d18,#18 | 619 vshr.u64 d25,d18,#18 |
624 #if 2>0 | 620 #if 2>0 |
625 » vadd.i64» d22,d30»» » @ h+=Maj from the past | 621 » vadd.i64» d22,d30»» » @ h+=Maj from the past |
626 #endif | 622 #endif |
627 vshr.u64 d26,d18,#41 | 623 vshr.u64 d26,d18,#41 |
628 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 624 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
629 » vsli.64»d24,d18,#50 | 625 » vsli.64»» d24,d18,#50 |
630 » vsli.64»d25,d18,#46 | 626 » vsli.64»» d25,d18,#46 |
631 » vmov» d29,d18 | 627 » vmov» » d29,d18 |
632 » vsli.64»d26,d18,#23 | 628 » vsli.64»» d26,d18,#23 |
633 #if 2<16 && defined(__ARMEL__) | 629 #if 2<16 && defined(__ARMEL__) |
634 vrev64.8 d2,d2 | 630 vrev64.8 d2,d2 |
635 #endif | 631 #endif |
636 » veor» d25,d24 | 632 » veor» » d25,d24 |
637 » vbsl» d29,d19,d20» » @ Ch(e,f,g) | 633 » vbsl» » d29,d19,d20» » @ Ch(e,f,g) |
638 vshr.u64 d24,d22,#28 | 634 vshr.u64 d24,d22,#28 |
639 » veor» d26,d25»» » @ Sigma1(e) | 635 » veor» » d26,d25»» » @ Sigma1(e) |
640 vadd.i64 d27,d29,d21 | 636 vadd.i64 d27,d29,d21 |
641 vshr.u64 d25,d22,#34 | 637 vshr.u64 d25,d22,#34 |
642 » vsli.64»d24,d22,#36 | 638 » vsli.64»» d24,d22,#36 |
643 vadd.i64 d27,d26 | 639 vadd.i64 d27,d26 |
644 vshr.u64 d26,d22,#39 | 640 vshr.u64 d26,d22,#39 |
645 vadd.i64 d28,d2 | 641 vadd.i64 d28,d2 |
646 » vsli.64»d25,d22,#30 | 642 » vsli.64»» d25,d22,#30 |
647 » veor» d30,d22,d23 | 643 » veor» » d30,d22,d23 |
648 » vsli.64»d26,d22,#25 | 644 » vsli.64»» d26,d22,#25 |
649 » veor» d21,d24,d25 | 645 » veor» » d21,d24,d25 |
650 » vadd.i64» d27,d28 | 646 » vadd.i64» d27,d28 |
651 » vbsl» d30,d16,d23» » @ Maj(a,b,c) | 647 » vbsl» » d30,d16,d23» » @ Maj(a,b,c) |
652 » veor» d21,d26»» » @ Sigma0(a) | 648 » veor» » d21,d26»» » @ Sigma0(a) |
653 vadd.i64 d17,d27 | 649 vadd.i64 d17,d27 |
654 vadd.i64 d30,d27 | 650 vadd.i64 d30,d27 |
655 @ vadd.i64 d21,d30 | 651 @ vadd.i64 d21,d30 |
656 vshr.u64 d24,d17,#14 @ 3 | 652 vshr.u64 d24,d17,#14 @ 3 |
657 #if 3<16 | 653 #if 3<16 |
658 » vld1.64»{d3},[r1]!» @ handles unaligned | 654 » vld1.64»» {d3},[r1]!» @ handles unaligned |
659 #endif | 655 #endif |
660 vshr.u64 d25,d17,#18 | 656 vshr.u64 d25,d17,#18 |
661 #if 3>0 | 657 #if 3>0 |
662 » vadd.i64» d21,d30»» » @ h+=Maj from the past | 658 » vadd.i64» d21,d30»» » @ h+=Maj from the past |
663 #endif | 659 #endif |
664 vshr.u64 d26,d17,#41 | 660 vshr.u64 d26,d17,#41 |
665 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 661 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
666 » vsli.64»d24,d17,#50 | 662 » vsli.64»» d24,d17,#50 |
667 » vsli.64»d25,d17,#46 | 663 » vsli.64»» d25,d17,#46 |
668 » vmov» d29,d17 | 664 » vmov» » d29,d17 |
669 » vsli.64»d26,d17,#23 | 665 » vsli.64»» d26,d17,#23 |
670 #if 3<16 && defined(__ARMEL__) | 666 #if 3<16 && defined(__ARMEL__) |
671 vrev64.8 d3,d3 | 667 vrev64.8 d3,d3 |
672 #endif | 668 #endif |
673 » veor» d25,d24 | 669 » veor» » d25,d24 |
674 » vbsl» d29,d18,d19» » @ Ch(e,f,g) | 670 » vbsl» » d29,d18,d19» » @ Ch(e,f,g) |
675 vshr.u64 d24,d21,#28 | 671 vshr.u64 d24,d21,#28 |
676 » veor» d26,d25»» » @ Sigma1(e) | 672 » veor» » d26,d25»» » @ Sigma1(e) |
677 vadd.i64 d27,d29,d20 | 673 vadd.i64 d27,d29,d20 |
678 vshr.u64 d25,d21,#34 | 674 vshr.u64 d25,d21,#34 |
679 » vsli.64»d24,d21,#36 | 675 » vsli.64»» d24,d21,#36 |
680 vadd.i64 d27,d26 | 676 vadd.i64 d27,d26 |
681 vshr.u64 d26,d21,#39 | 677 vshr.u64 d26,d21,#39 |
682 vadd.i64 d28,d3 | 678 vadd.i64 d28,d3 |
683 » vsli.64»d25,d21,#30 | 679 » vsli.64»» d25,d21,#30 |
684 » veor» d30,d21,d22 | 680 » veor» » d30,d21,d22 |
685 » vsli.64»d26,d21,#25 | 681 » vsli.64»» d26,d21,#25 |
686 » veor» d20,d24,d25 | 682 » veor» » d20,d24,d25 |
687 » vadd.i64» d27,d28 | 683 » vadd.i64» d27,d28 |
688 » vbsl» d30,d23,d22» » @ Maj(a,b,c) | 684 » vbsl» » d30,d23,d22» » @ Maj(a,b,c) |
689 » veor» d20,d26»» » @ Sigma0(a) | 685 » veor» » d20,d26»» » @ Sigma0(a) |
690 vadd.i64 d16,d27 | 686 vadd.i64 d16,d27 |
691 vadd.i64 d30,d27 | 687 vadd.i64 d30,d27 |
692 @ vadd.i64 d20,d30 | 688 @ vadd.i64 d20,d30 |
693 vshr.u64 d24,d16,#14 @ 4 | 689 vshr.u64 d24,d16,#14 @ 4 |
694 #if 4<16 | 690 #if 4<16 |
695 » vld1.64»{d4},[r1]!» @ handles unaligned | 691 » vld1.64»» {d4},[r1]!» @ handles unaligned |
696 #endif | 692 #endif |
697 vshr.u64 d25,d16,#18 | 693 vshr.u64 d25,d16,#18 |
698 #if 4>0 | 694 #if 4>0 |
699 » vadd.i64» d20,d30»» » @ h+=Maj from the past | 695 » vadd.i64» d20,d30»» » @ h+=Maj from the past |
700 #endif | 696 #endif |
701 vshr.u64 d26,d16,#41 | 697 vshr.u64 d26,d16,#41 |
702 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 698 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
703 » vsli.64»d24,d16,#50 | 699 » vsli.64»» d24,d16,#50 |
704 » vsli.64»d25,d16,#46 | 700 » vsli.64»» d25,d16,#46 |
705 » vmov» d29,d16 | 701 » vmov» » d29,d16 |
706 » vsli.64»d26,d16,#23 | 702 » vsli.64»» d26,d16,#23 |
707 #if 4<16 && defined(__ARMEL__) | 703 #if 4<16 && defined(__ARMEL__) |
708 vrev64.8 d4,d4 | 704 vrev64.8 d4,d4 |
709 #endif | 705 #endif |
710 » veor» d25,d24 | 706 » veor» » d25,d24 |
711 » vbsl» d29,d17,d18» » @ Ch(e,f,g) | 707 » vbsl» » d29,d17,d18» » @ Ch(e,f,g) |
712 vshr.u64 d24,d20,#28 | 708 vshr.u64 d24,d20,#28 |
713 » veor» d26,d25»» » @ Sigma1(e) | 709 » veor» » d26,d25»» » @ Sigma1(e) |
714 vadd.i64 d27,d29,d19 | 710 vadd.i64 d27,d29,d19 |
715 vshr.u64 d25,d20,#34 | 711 vshr.u64 d25,d20,#34 |
716 » vsli.64»d24,d20,#36 | 712 » vsli.64»» d24,d20,#36 |
717 vadd.i64 d27,d26 | 713 vadd.i64 d27,d26 |
718 vshr.u64 d26,d20,#39 | 714 vshr.u64 d26,d20,#39 |
719 vadd.i64 d28,d4 | 715 vadd.i64 d28,d4 |
720 » vsli.64»d25,d20,#30 | 716 » vsli.64»» d25,d20,#30 |
721 » veor» d30,d20,d21 | 717 » veor» » d30,d20,d21 |
722 » vsli.64»d26,d20,#25 | 718 » vsli.64»» d26,d20,#25 |
723 » veor» d19,d24,d25 | 719 » veor» » d19,d24,d25 |
724 » vadd.i64» d27,d28 | 720 » vadd.i64» d27,d28 |
725 » vbsl» d30,d22,d21» » @ Maj(a,b,c) | 721 » vbsl» » d30,d22,d21» » @ Maj(a,b,c) |
726 » veor» d19,d26»» » @ Sigma0(a) | 722 » veor» » d19,d26»» » @ Sigma0(a) |
727 vadd.i64 d23,d27 | 723 vadd.i64 d23,d27 |
728 vadd.i64 d30,d27 | 724 vadd.i64 d30,d27 |
729 @ vadd.i64 d19,d30 | 725 @ vadd.i64 d19,d30 |
730 vshr.u64 d24,d23,#14 @ 5 | 726 vshr.u64 d24,d23,#14 @ 5 |
731 #if 5<16 | 727 #if 5<16 |
732 » vld1.64»{d5},[r1]!» @ handles unaligned | 728 » vld1.64»» {d5},[r1]!» @ handles unaligned |
733 #endif | 729 #endif |
734 vshr.u64 d25,d23,#18 | 730 vshr.u64 d25,d23,#18 |
735 #if 5>0 | 731 #if 5>0 |
736 » vadd.i64» d19,d30»» » @ h+=Maj from the past | 732 » vadd.i64» d19,d30»» » @ h+=Maj from the past |
737 #endif | 733 #endif |
738 vshr.u64 d26,d23,#41 | 734 vshr.u64 d26,d23,#41 |
739 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 735 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
740 » vsli.64»d24,d23,#50 | 736 » vsli.64»» d24,d23,#50 |
741 » vsli.64»d25,d23,#46 | 737 » vsli.64»» d25,d23,#46 |
742 » vmov» d29,d23 | 738 » vmov» » d29,d23 |
743 » vsli.64»d26,d23,#23 | 739 » vsli.64»» d26,d23,#23 |
744 #if 5<16 && defined(__ARMEL__) | 740 #if 5<16 && defined(__ARMEL__) |
745 vrev64.8 d5,d5 | 741 vrev64.8 d5,d5 |
746 #endif | 742 #endif |
747 » veor» d25,d24 | 743 » veor» » d25,d24 |
748 » vbsl» d29,d16,d17» » @ Ch(e,f,g) | 744 » vbsl» » d29,d16,d17» » @ Ch(e,f,g) |
749 vshr.u64 d24,d19,#28 | 745 vshr.u64 d24,d19,#28 |
750 » veor» d26,d25»» » @ Sigma1(e) | 746 » veor» » d26,d25»» » @ Sigma1(e) |
751 vadd.i64 d27,d29,d18 | 747 vadd.i64 d27,d29,d18 |
752 vshr.u64 d25,d19,#34 | 748 vshr.u64 d25,d19,#34 |
753 » vsli.64»d24,d19,#36 | 749 » vsli.64»» d24,d19,#36 |
754 vadd.i64 d27,d26 | 750 vadd.i64 d27,d26 |
755 vshr.u64 d26,d19,#39 | 751 vshr.u64 d26,d19,#39 |
756 vadd.i64 d28,d5 | 752 vadd.i64 d28,d5 |
757 » vsli.64»d25,d19,#30 | 753 » vsli.64»» d25,d19,#30 |
758 » veor» d30,d19,d20 | 754 » veor» » d30,d19,d20 |
759 » vsli.64»d26,d19,#25 | 755 » vsli.64»» d26,d19,#25 |
760 » veor» d18,d24,d25 | 756 » veor» » d18,d24,d25 |
761 » vadd.i64» d27,d28 | 757 » vadd.i64» d27,d28 |
762 » vbsl» d30,d21,d20» » @ Maj(a,b,c) | 758 » vbsl» » d30,d21,d20» » @ Maj(a,b,c) |
763 » veor» d18,d26»» » @ Sigma0(a) | 759 » veor» » d18,d26»» » @ Sigma0(a) |
764 vadd.i64 d22,d27 | 760 vadd.i64 d22,d27 |
765 vadd.i64 d30,d27 | 761 vadd.i64 d30,d27 |
766 @ vadd.i64 d18,d30 | 762 @ vadd.i64 d18,d30 |
767 vshr.u64 d24,d22,#14 @ 6 | 763 vshr.u64 d24,d22,#14 @ 6 |
768 #if 6<16 | 764 #if 6<16 |
769 » vld1.64»{d6},[r1]!» @ handles unaligned | 765 » vld1.64»» {d6},[r1]!» @ handles unaligned |
770 #endif | 766 #endif |
771 vshr.u64 d25,d22,#18 | 767 vshr.u64 d25,d22,#18 |
772 #if 6>0 | 768 #if 6>0 |
773 » vadd.i64» d18,d30»» » @ h+=Maj from the past | 769 » vadd.i64» d18,d30»» » @ h+=Maj from the past |
774 #endif | 770 #endif |
775 vshr.u64 d26,d22,#41 | 771 vshr.u64 d26,d22,#41 |
776 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 772 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
777 » vsli.64»d24,d22,#50 | 773 » vsli.64»» d24,d22,#50 |
778 » vsli.64»d25,d22,#46 | 774 » vsli.64»» d25,d22,#46 |
779 » vmov» d29,d22 | 775 » vmov» » d29,d22 |
780 » vsli.64»d26,d22,#23 | 776 » vsli.64»» d26,d22,#23 |
781 #if 6<16 && defined(__ARMEL__) | 777 #if 6<16 && defined(__ARMEL__) |
782 vrev64.8 d6,d6 | 778 vrev64.8 d6,d6 |
783 #endif | 779 #endif |
784 » veor» d25,d24 | 780 » veor» » d25,d24 |
785 » vbsl» d29,d23,d16» » @ Ch(e,f,g) | 781 » vbsl» » d29,d23,d16» » @ Ch(e,f,g) |
786 vshr.u64 d24,d18,#28 | 782 vshr.u64 d24,d18,#28 |
787 » veor» d26,d25»» » @ Sigma1(e) | 783 » veor» » d26,d25»» » @ Sigma1(e) |
788 vadd.i64 d27,d29,d17 | 784 vadd.i64 d27,d29,d17 |
789 vshr.u64 d25,d18,#34 | 785 vshr.u64 d25,d18,#34 |
790 » vsli.64»d24,d18,#36 | 786 » vsli.64»» d24,d18,#36 |
791 vadd.i64 d27,d26 | 787 vadd.i64 d27,d26 |
792 vshr.u64 d26,d18,#39 | 788 vshr.u64 d26,d18,#39 |
793 vadd.i64 d28,d6 | 789 vadd.i64 d28,d6 |
794 » vsli.64»d25,d18,#30 | 790 » vsli.64»» d25,d18,#30 |
795 » veor» d30,d18,d19 | 791 » veor» » d30,d18,d19 |
796 » vsli.64»d26,d18,#25 | 792 » vsli.64»» d26,d18,#25 |
797 » veor» d17,d24,d25 | 793 » veor» » d17,d24,d25 |
798 » vadd.i64» d27,d28 | 794 » vadd.i64» d27,d28 |
799 » vbsl» d30,d20,d19» » @ Maj(a,b,c) | 795 » vbsl» » d30,d20,d19» » @ Maj(a,b,c) |
800 » veor» d17,d26»» » @ Sigma0(a) | 796 » veor» » d17,d26»» » @ Sigma0(a) |
801 vadd.i64 d21,d27 | 797 vadd.i64 d21,d27 |
802 vadd.i64 d30,d27 | 798 vadd.i64 d30,d27 |
803 @ vadd.i64 d17,d30 | 799 @ vadd.i64 d17,d30 |
804 vshr.u64 d24,d21,#14 @ 7 | 800 vshr.u64 d24,d21,#14 @ 7 |
805 #if 7<16 | 801 #if 7<16 |
806 » vld1.64»{d7},[r1]!» @ handles unaligned | 802 » vld1.64»» {d7},[r1]!» @ handles unaligned |
807 #endif | 803 #endif |
808 vshr.u64 d25,d21,#18 | 804 vshr.u64 d25,d21,#18 |
809 #if 7>0 | 805 #if 7>0 |
810 » vadd.i64» d17,d30»» » @ h+=Maj from the past | 806 » vadd.i64» d17,d30»» » @ h+=Maj from the past |
811 #endif | 807 #endif |
812 vshr.u64 d26,d21,#41 | 808 vshr.u64 d26,d21,#41 |
813 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 809 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
814 » vsli.64»d24,d21,#50 | 810 » vsli.64»» d24,d21,#50 |
815 » vsli.64»d25,d21,#46 | 811 » vsli.64»» d25,d21,#46 |
816 » vmov» d29,d21 | 812 » vmov» » d29,d21 |
817 » vsli.64»d26,d21,#23 | 813 » vsli.64»» d26,d21,#23 |
818 #if 7<16 && defined(__ARMEL__) | 814 #if 7<16 && defined(__ARMEL__) |
819 vrev64.8 d7,d7 | 815 vrev64.8 d7,d7 |
820 #endif | 816 #endif |
821 » veor» d25,d24 | 817 » veor» » d25,d24 |
822 » vbsl» d29,d22,d23» » @ Ch(e,f,g) | 818 » vbsl» » d29,d22,d23» » @ Ch(e,f,g) |
823 vshr.u64 d24,d17,#28 | 819 vshr.u64 d24,d17,#28 |
824 » veor» d26,d25»» » @ Sigma1(e) | 820 » veor» » d26,d25»» » @ Sigma1(e) |
825 vadd.i64 d27,d29,d16 | 821 vadd.i64 d27,d29,d16 |
826 vshr.u64 d25,d17,#34 | 822 vshr.u64 d25,d17,#34 |
827 » vsli.64»d24,d17,#36 | 823 » vsli.64»» d24,d17,#36 |
828 vadd.i64 d27,d26 | 824 vadd.i64 d27,d26 |
829 vshr.u64 d26,d17,#39 | 825 vshr.u64 d26,d17,#39 |
830 vadd.i64 d28,d7 | 826 vadd.i64 d28,d7 |
831 » vsli.64»d25,d17,#30 | 827 » vsli.64»» d25,d17,#30 |
832 » veor» d30,d17,d18 | 828 » veor» » d30,d17,d18 |
833 » vsli.64»d26,d17,#25 | 829 » vsli.64»» d26,d17,#25 |
834 » veor» d16,d24,d25 | 830 » veor» » d16,d24,d25 |
835 » vadd.i64» d27,d28 | 831 » vadd.i64» d27,d28 |
836 » vbsl» d30,d19,d18» » @ Maj(a,b,c) | 832 » vbsl» » d30,d19,d18» » @ Maj(a,b,c) |
837 » veor» d16,d26»» » @ Sigma0(a) | 833 » veor» » d16,d26»» » @ Sigma0(a) |
838 vadd.i64 d20,d27 | 834 vadd.i64 d20,d27 |
839 vadd.i64 d30,d27 | 835 vadd.i64 d30,d27 |
840 @ vadd.i64 d16,d30 | 836 @ vadd.i64 d16,d30 |
841 vshr.u64 d24,d20,#14 @ 8 | 837 vshr.u64 d24,d20,#14 @ 8 |
842 #if 8<16 | 838 #if 8<16 |
843 » vld1.64»{d8},[r1]!» @ handles unaligned | 839 » vld1.64»» {d8},[r1]!» @ handles unaligned |
844 #endif | 840 #endif |
845 vshr.u64 d25,d20,#18 | 841 vshr.u64 d25,d20,#18 |
846 #if 8>0 | 842 #if 8>0 |
847 » vadd.i64» d16,d30»» » @ h+=Maj from the past | 843 » vadd.i64» d16,d30»» » @ h+=Maj from the past |
848 #endif | 844 #endif |
849 vshr.u64 d26,d20,#41 | 845 vshr.u64 d26,d20,#41 |
850 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 846 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
851 » vsli.64»d24,d20,#50 | 847 » vsli.64»» d24,d20,#50 |
852 » vsli.64»d25,d20,#46 | 848 » vsli.64»» d25,d20,#46 |
853 » vmov» d29,d20 | 849 » vmov» » d29,d20 |
854 » vsli.64»d26,d20,#23 | 850 » vsli.64»» d26,d20,#23 |
855 #if 8<16 && defined(__ARMEL__) | 851 #if 8<16 && defined(__ARMEL__) |
856 vrev64.8 d8,d8 | 852 vrev64.8 d8,d8 |
857 #endif | 853 #endif |
858 » veor» d25,d24 | 854 » veor» » d25,d24 |
859 » vbsl» d29,d21,d22» » @ Ch(e,f,g) | 855 » vbsl» » d29,d21,d22» » @ Ch(e,f,g) |
860 vshr.u64 d24,d16,#28 | 856 vshr.u64 d24,d16,#28 |
861 » veor» d26,d25»» » @ Sigma1(e) | 857 » veor» » d26,d25»» » @ Sigma1(e) |
862 vadd.i64 d27,d29,d23 | 858 vadd.i64 d27,d29,d23 |
863 vshr.u64 d25,d16,#34 | 859 vshr.u64 d25,d16,#34 |
864 » vsli.64»d24,d16,#36 | 860 » vsli.64»» d24,d16,#36 |
865 vadd.i64 d27,d26 | 861 vadd.i64 d27,d26 |
866 vshr.u64 d26,d16,#39 | 862 vshr.u64 d26,d16,#39 |
867 vadd.i64 d28,d8 | 863 vadd.i64 d28,d8 |
868 » vsli.64»d25,d16,#30 | 864 » vsli.64»» d25,d16,#30 |
869 » veor» d30,d16,d17 | 865 » veor» » d30,d16,d17 |
870 » vsli.64»d26,d16,#25 | 866 » vsli.64»» d26,d16,#25 |
871 » veor» d23,d24,d25 | 867 » veor» » d23,d24,d25 |
872 » vadd.i64» d27,d28 | 868 » vadd.i64» d27,d28 |
873 » vbsl» d30,d18,d17» » @ Maj(a,b,c) | 869 » vbsl» » d30,d18,d17» » @ Maj(a,b,c) |
874 » veor» d23,d26»» » @ Sigma0(a) | 870 » veor» » d23,d26»» » @ Sigma0(a) |
875 vadd.i64 d19,d27 | 871 vadd.i64 d19,d27 |
876 vadd.i64 d30,d27 | 872 vadd.i64 d30,d27 |
877 @ vadd.i64 d23,d30 | 873 @ vadd.i64 d23,d30 |
878 vshr.u64 d24,d19,#14 @ 9 | 874 vshr.u64 d24,d19,#14 @ 9 |
879 #if 9<16 | 875 #if 9<16 |
880 » vld1.64»{d9},[r1]!» @ handles unaligned | 876 » vld1.64»» {d9},[r1]!» @ handles unaligned |
881 #endif | 877 #endif |
882 vshr.u64 d25,d19,#18 | 878 vshr.u64 d25,d19,#18 |
883 #if 9>0 | 879 #if 9>0 |
884 » vadd.i64» d23,d30»» » @ h+=Maj from the past | 880 » vadd.i64» d23,d30»» » @ h+=Maj from the past |
885 #endif | 881 #endif |
886 vshr.u64 d26,d19,#41 | 882 vshr.u64 d26,d19,#41 |
887 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 883 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
888 » vsli.64»d24,d19,#50 | 884 » vsli.64»» d24,d19,#50 |
889 » vsli.64»d25,d19,#46 | 885 » vsli.64»» d25,d19,#46 |
890 » vmov» d29,d19 | 886 » vmov» » d29,d19 |
891 » vsli.64»d26,d19,#23 | 887 » vsli.64»» d26,d19,#23 |
892 #if 9<16 && defined(__ARMEL__) | 888 #if 9<16 && defined(__ARMEL__) |
893 vrev64.8 d9,d9 | 889 vrev64.8 d9,d9 |
894 #endif | 890 #endif |
895 » veor» d25,d24 | 891 » veor» » d25,d24 |
896 » vbsl» d29,d20,d21» » @ Ch(e,f,g) | 892 » vbsl» » d29,d20,d21» » @ Ch(e,f,g) |
897 vshr.u64 d24,d23,#28 | 893 vshr.u64 d24,d23,#28 |
898 » veor» d26,d25»» » @ Sigma1(e) | 894 » veor» » d26,d25»» » @ Sigma1(e) |
899 vadd.i64 d27,d29,d22 | 895 vadd.i64 d27,d29,d22 |
900 vshr.u64 d25,d23,#34 | 896 vshr.u64 d25,d23,#34 |
901 » vsli.64»d24,d23,#36 | 897 » vsli.64»» d24,d23,#36 |
902 vadd.i64 d27,d26 | 898 vadd.i64 d27,d26 |
903 vshr.u64 d26,d23,#39 | 899 vshr.u64 d26,d23,#39 |
904 vadd.i64 d28,d9 | 900 vadd.i64 d28,d9 |
905 » vsli.64»d25,d23,#30 | 901 » vsli.64»» d25,d23,#30 |
906 » veor» d30,d23,d16 | 902 » veor» » d30,d23,d16 |
907 » vsli.64»d26,d23,#25 | 903 » vsli.64»» d26,d23,#25 |
908 » veor» d22,d24,d25 | 904 » veor» » d22,d24,d25 |
909 » vadd.i64» d27,d28 | 905 » vadd.i64» d27,d28 |
910 » vbsl» d30,d17,d16» » @ Maj(a,b,c) | 906 » vbsl» » d30,d17,d16» » @ Maj(a,b,c) |
911 » veor» d22,d26»» » @ Sigma0(a) | 907 » veor» » d22,d26»» » @ Sigma0(a) |
912 vadd.i64 d18,d27 | 908 vadd.i64 d18,d27 |
913 vadd.i64 d30,d27 | 909 vadd.i64 d30,d27 |
914 @ vadd.i64 d22,d30 | 910 @ vadd.i64 d22,d30 |
915 vshr.u64 d24,d18,#14 @ 10 | 911 vshr.u64 d24,d18,#14 @ 10 |
916 #if 10<16 | 912 #if 10<16 |
917 » vld1.64»{d10},[r1]!» @ handles unaligned | 913 » vld1.64»» {d10},[r1]!» @ handles unaligned |
918 #endif | 914 #endif |
919 vshr.u64 d25,d18,#18 | 915 vshr.u64 d25,d18,#18 |
920 #if 10>0 | 916 #if 10>0 |
921 » vadd.i64» d22,d30»» » @ h+=Maj from the past | 917 » vadd.i64» d22,d30»» » @ h+=Maj from the past |
922 #endif | 918 #endif |
923 vshr.u64 d26,d18,#41 | 919 vshr.u64 d26,d18,#41 |
924 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 920 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
925 » vsli.64»d24,d18,#50 | 921 » vsli.64»» d24,d18,#50 |
926 » vsli.64»d25,d18,#46 | 922 » vsli.64»» d25,d18,#46 |
927 » vmov» d29,d18 | 923 » vmov» » d29,d18 |
928 » vsli.64»d26,d18,#23 | 924 » vsli.64»» d26,d18,#23 |
929 #if 10<16 && defined(__ARMEL__) | 925 #if 10<16 && defined(__ARMEL__) |
930 vrev64.8 d10,d10 | 926 vrev64.8 d10,d10 |
931 #endif | 927 #endif |
932 » veor» d25,d24 | 928 » veor» » d25,d24 |
933 » vbsl» d29,d19,d20» » @ Ch(e,f,g) | 929 » vbsl» » d29,d19,d20» » @ Ch(e,f,g) |
934 vshr.u64 d24,d22,#28 | 930 vshr.u64 d24,d22,#28 |
935 » veor» d26,d25»» » @ Sigma1(e) | 931 » veor» » d26,d25»» » @ Sigma1(e) |
936 vadd.i64 d27,d29,d21 | 932 vadd.i64 d27,d29,d21 |
937 vshr.u64 d25,d22,#34 | 933 vshr.u64 d25,d22,#34 |
938 » vsli.64»d24,d22,#36 | 934 » vsli.64»» d24,d22,#36 |
939 vadd.i64 d27,d26 | 935 vadd.i64 d27,d26 |
940 vshr.u64 d26,d22,#39 | 936 vshr.u64 d26,d22,#39 |
941 vadd.i64 d28,d10 | 937 vadd.i64 d28,d10 |
942 » vsli.64»d25,d22,#30 | 938 » vsli.64»» d25,d22,#30 |
943 » veor» d30,d22,d23 | 939 » veor» » d30,d22,d23 |
944 » vsli.64»d26,d22,#25 | 940 » vsli.64»» d26,d22,#25 |
945 » veor» d21,d24,d25 | 941 » veor» » d21,d24,d25 |
946 » vadd.i64» d27,d28 | 942 » vadd.i64» d27,d28 |
947 » vbsl» d30,d16,d23» » @ Maj(a,b,c) | 943 » vbsl» » d30,d16,d23» » @ Maj(a,b,c) |
948 » veor» d21,d26»» » @ Sigma0(a) | 944 » veor» » d21,d26»» » @ Sigma0(a) |
949 vadd.i64 d17,d27 | 945 vadd.i64 d17,d27 |
950 vadd.i64 d30,d27 | 946 vadd.i64 d30,d27 |
951 @ vadd.i64 d21,d30 | 947 @ vadd.i64 d21,d30 |
952 vshr.u64 d24,d17,#14 @ 11 | 948 vshr.u64 d24,d17,#14 @ 11 |
953 #if 11<16 | 949 #if 11<16 |
954 » vld1.64»{d11},[r1]!» @ handles unaligned | 950 » vld1.64»» {d11},[r1]!» @ handles unaligned |
955 #endif | 951 #endif |
956 vshr.u64 d25,d17,#18 | 952 vshr.u64 d25,d17,#18 |
957 #if 11>0 | 953 #if 11>0 |
958 » vadd.i64» d21,d30»» » @ h+=Maj from the past | 954 » vadd.i64» d21,d30»» » @ h+=Maj from the past |
959 #endif | 955 #endif |
960 vshr.u64 d26,d17,#41 | 956 vshr.u64 d26,d17,#41 |
961 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 957 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
962 » vsli.64»d24,d17,#50 | 958 » vsli.64»» d24,d17,#50 |
963 » vsli.64»d25,d17,#46 | 959 » vsli.64»» d25,d17,#46 |
964 » vmov» d29,d17 | 960 » vmov» » d29,d17 |
965 » vsli.64»d26,d17,#23 | 961 » vsli.64»» d26,d17,#23 |
966 #if 11<16 && defined(__ARMEL__) | 962 #if 11<16 && defined(__ARMEL__) |
967 vrev64.8 d11,d11 | 963 vrev64.8 d11,d11 |
968 #endif | 964 #endif |
969 » veor» d25,d24 | 965 » veor» » d25,d24 |
970 » vbsl» d29,d18,d19» » @ Ch(e,f,g) | 966 » vbsl» » d29,d18,d19» » @ Ch(e,f,g) |
971 vshr.u64 d24,d21,#28 | 967 vshr.u64 d24,d21,#28 |
972 » veor» d26,d25»» » @ Sigma1(e) | 968 » veor» » d26,d25»» » @ Sigma1(e) |
973 vadd.i64 d27,d29,d20 | 969 vadd.i64 d27,d29,d20 |
974 vshr.u64 d25,d21,#34 | 970 vshr.u64 d25,d21,#34 |
975 » vsli.64»d24,d21,#36 | 971 » vsli.64»» d24,d21,#36 |
976 vadd.i64 d27,d26 | 972 vadd.i64 d27,d26 |
977 vshr.u64 d26,d21,#39 | 973 vshr.u64 d26,d21,#39 |
978 vadd.i64 d28,d11 | 974 vadd.i64 d28,d11 |
979 » vsli.64»d25,d21,#30 | 975 » vsli.64»» d25,d21,#30 |
980 » veor» d30,d21,d22 | 976 » veor» » d30,d21,d22 |
981 » vsli.64»d26,d21,#25 | 977 » vsli.64»» d26,d21,#25 |
982 » veor» d20,d24,d25 | 978 » veor» » d20,d24,d25 |
983 » vadd.i64» d27,d28 | 979 » vadd.i64» d27,d28 |
984 » vbsl» d30,d23,d22» » @ Maj(a,b,c) | 980 » vbsl» » d30,d23,d22» » @ Maj(a,b,c) |
985 » veor» d20,d26»» » @ Sigma0(a) | 981 » veor» » d20,d26»» » @ Sigma0(a) |
986 vadd.i64 d16,d27 | 982 vadd.i64 d16,d27 |
987 vadd.i64 d30,d27 | 983 vadd.i64 d30,d27 |
988 @ vadd.i64 d20,d30 | 984 @ vadd.i64 d20,d30 |
989 vshr.u64 d24,d16,#14 @ 12 | 985 vshr.u64 d24,d16,#14 @ 12 |
990 #if 12<16 | 986 #if 12<16 |
991 » vld1.64»{d12},[r1]!» @ handles unaligned | 987 » vld1.64»» {d12},[r1]!» @ handles unaligned |
992 #endif | 988 #endif |
993 vshr.u64 d25,d16,#18 | 989 vshr.u64 d25,d16,#18 |
994 #if 12>0 | 990 #if 12>0 |
995 » vadd.i64» d20,d30»» » @ h+=Maj from the past | 991 » vadd.i64» d20,d30»» » @ h+=Maj from the past |
996 #endif | 992 #endif |
997 vshr.u64 d26,d16,#41 | 993 vshr.u64 d26,d16,#41 |
998 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 994 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
999 » vsli.64»d24,d16,#50 | 995 » vsli.64»» d24,d16,#50 |
1000 » vsli.64»d25,d16,#46 | 996 » vsli.64»» d25,d16,#46 |
1001 » vmov» d29,d16 | 997 » vmov» » d29,d16 |
1002 » vsli.64»d26,d16,#23 | 998 » vsli.64»» d26,d16,#23 |
1003 #if 12<16 && defined(__ARMEL__) | 999 #if 12<16 && defined(__ARMEL__) |
1004 vrev64.8 d12,d12 | 1000 vrev64.8 d12,d12 |
1005 #endif | 1001 #endif |
1006 » veor» d25,d24 | 1002 » veor» » d25,d24 |
1007 » vbsl» d29,d17,d18» » @ Ch(e,f,g) | 1003 » vbsl» » d29,d17,d18» » @ Ch(e,f,g) |
1008 vshr.u64 d24,d20,#28 | 1004 vshr.u64 d24,d20,#28 |
1009 » veor» d26,d25»» » @ Sigma1(e) | 1005 » veor» » d26,d25»» » @ Sigma1(e) |
1010 vadd.i64 d27,d29,d19 | 1006 vadd.i64 d27,d29,d19 |
1011 vshr.u64 d25,d20,#34 | 1007 vshr.u64 d25,d20,#34 |
1012 » vsli.64»d24,d20,#36 | 1008 » vsli.64»» d24,d20,#36 |
1013 vadd.i64 d27,d26 | 1009 vadd.i64 d27,d26 |
1014 vshr.u64 d26,d20,#39 | 1010 vshr.u64 d26,d20,#39 |
1015 vadd.i64 d28,d12 | 1011 vadd.i64 d28,d12 |
1016 » vsli.64»d25,d20,#30 | 1012 » vsli.64»» d25,d20,#30 |
1017 » veor» d30,d20,d21 | 1013 » veor» » d30,d20,d21 |
1018 » vsli.64»d26,d20,#25 | 1014 » vsli.64»» d26,d20,#25 |
1019 » veor» d19,d24,d25 | 1015 » veor» » d19,d24,d25 |
1020 » vadd.i64» d27,d28 | 1016 » vadd.i64» d27,d28 |
1021 » vbsl» d30,d22,d21» » @ Maj(a,b,c) | 1017 » vbsl» » d30,d22,d21» » @ Maj(a,b,c) |
1022 » veor» d19,d26»» » @ Sigma0(a) | 1018 » veor» » d19,d26»» » @ Sigma0(a) |
1023 vadd.i64 d23,d27 | 1019 vadd.i64 d23,d27 |
1024 vadd.i64 d30,d27 | 1020 vadd.i64 d30,d27 |
1025 @ vadd.i64 d19,d30 | 1021 @ vadd.i64 d19,d30 |
1026 vshr.u64 d24,d23,#14 @ 13 | 1022 vshr.u64 d24,d23,#14 @ 13 |
1027 #if 13<16 | 1023 #if 13<16 |
1028 » vld1.64»{d13},[r1]!» @ handles unaligned | 1024 » vld1.64»» {d13},[r1]!» @ handles unaligned |
1029 #endif | 1025 #endif |
1030 vshr.u64 d25,d23,#18 | 1026 vshr.u64 d25,d23,#18 |
1031 #if 13>0 | 1027 #if 13>0 |
1032 » vadd.i64» d19,d30»» » @ h+=Maj from the past | 1028 » vadd.i64» d19,d30»» » @ h+=Maj from the past |
1033 #endif | 1029 #endif |
1034 vshr.u64 d26,d23,#41 | 1030 vshr.u64 d26,d23,#41 |
1035 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1031 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1036 » vsli.64»d24,d23,#50 | 1032 » vsli.64»» d24,d23,#50 |
1037 » vsli.64»d25,d23,#46 | 1033 » vsli.64»» d25,d23,#46 |
1038 » vmov» d29,d23 | 1034 » vmov» » d29,d23 |
1039 » vsli.64»d26,d23,#23 | 1035 » vsli.64»» d26,d23,#23 |
1040 #if 13<16 && defined(__ARMEL__) | 1036 #if 13<16 && defined(__ARMEL__) |
1041 vrev64.8 d13,d13 | 1037 vrev64.8 d13,d13 |
1042 #endif | 1038 #endif |
1043 » veor» d25,d24 | 1039 » veor» » d25,d24 |
1044 » vbsl» d29,d16,d17» » @ Ch(e,f,g) | 1040 » vbsl» » d29,d16,d17» » @ Ch(e,f,g) |
1045 vshr.u64 d24,d19,#28 | 1041 vshr.u64 d24,d19,#28 |
1046 » veor» d26,d25»» » @ Sigma1(e) | 1042 » veor» » d26,d25»» » @ Sigma1(e) |
1047 vadd.i64 d27,d29,d18 | 1043 vadd.i64 d27,d29,d18 |
1048 vshr.u64 d25,d19,#34 | 1044 vshr.u64 d25,d19,#34 |
1049 » vsli.64»d24,d19,#36 | 1045 » vsli.64»» d24,d19,#36 |
1050 vadd.i64 d27,d26 | 1046 vadd.i64 d27,d26 |
1051 vshr.u64 d26,d19,#39 | 1047 vshr.u64 d26,d19,#39 |
1052 vadd.i64 d28,d13 | 1048 vadd.i64 d28,d13 |
1053 » vsli.64»d25,d19,#30 | 1049 » vsli.64»» d25,d19,#30 |
1054 » veor» d30,d19,d20 | 1050 » veor» » d30,d19,d20 |
1055 » vsli.64»d26,d19,#25 | 1051 » vsli.64»» d26,d19,#25 |
1056 » veor» d18,d24,d25 | 1052 » veor» » d18,d24,d25 |
1057 » vadd.i64» d27,d28 | 1053 » vadd.i64» d27,d28 |
1058 » vbsl» d30,d21,d20» » @ Maj(a,b,c) | 1054 » vbsl» » d30,d21,d20» » @ Maj(a,b,c) |
1059 » veor» d18,d26»» » @ Sigma0(a) | 1055 » veor» » d18,d26»» » @ Sigma0(a) |
1060 vadd.i64 d22,d27 | 1056 vadd.i64 d22,d27 |
1061 vadd.i64 d30,d27 | 1057 vadd.i64 d30,d27 |
1062 @ vadd.i64 d18,d30 | 1058 @ vadd.i64 d18,d30 |
1063 vshr.u64 d24,d22,#14 @ 14 | 1059 vshr.u64 d24,d22,#14 @ 14 |
1064 #if 14<16 | 1060 #if 14<16 |
1065 » vld1.64»{d14},[r1]!» @ handles unaligned | 1061 » vld1.64»» {d14},[r1]!» @ handles unaligned |
1066 #endif | 1062 #endif |
1067 vshr.u64 d25,d22,#18 | 1063 vshr.u64 d25,d22,#18 |
1068 #if 14>0 | 1064 #if 14>0 |
1069 » vadd.i64» d18,d30»» » @ h+=Maj from the past | 1065 » vadd.i64» d18,d30»» » @ h+=Maj from the past |
1070 #endif | 1066 #endif |
1071 vshr.u64 d26,d22,#41 | 1067 vshr.u64 d26,d22,#41 |
1072 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1068 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1073 » vsli.64»d24,d22,#50 | 1069 » vsli.64»» d24,d22,#50 |
1074 » vsli.64»d25,d22,#46 | 1070 » vsli.64»» d25,d22,#46 |
1075 » vmov» d29,d22 | 1071 » vmov» » d29,d22 |
1076 » vsli.64»d26,d22,#23 | 1072 » vsli.64»» d26,d22,#23 |
1077 #if 14<16 && defined(__ARMEL__) | 1073 #if 14<16 && defined(__ARMEL__) |
1078 vrev64.8 d14,d14 | 1074 vrev64.8 d14,d14 |
1079 #endif | 1075 #endif |
1080 » veor» d25,d24 | 1076 » veor» » d25,d24 |
1081 » vbsl» d29,d23,d16» » @ Ch(e,f,g) | 1077 » vbsl» » d29,d23,d16» » @ Ch(e,f,g) |
1082 vshr.u64 d24,d18,#28 | 1078 vshr.u64 d24,d18,#28 |
1083 » veor» d26,d25»» » @ Sigma1(e) | 1079 » veor» » d26,d25»» » @ Sigma1(e) |
1084 vadd.i64 d27,d29,d17 | 1080 vadd.i64 d27,d29,d17 |
1085 vshr.u64 d25,d18,#34 | 1081 vshr.u64 d25,d18,#34 |
1086 » vsli.64»d24,d18,#36 | 1082 » vsli.64»» d24,d18,#36 |
1087 vadd.i64 d27,d26 | 1083 vadd.i64 d27,d26 |
1088 vshr.u64 d26,d18,#39 | 1084 vshr.u64 d26,d18,#39 |
1089 vadd.i64 d28,d14 | 1085 vadd.i64 d28,d14 |
1090 » vsli.64»d25,d18,#30 | 1086 » vsli.64»» d25,d18,#30 |
1091 » veor» d30,d18,d19 | 1087 » veor» » d30,d18,d19 |
1092 » vsli.64»d26,d18,#25 | 1088 » vsli.64»» d26,d18,#25 |
1093 » veor» d17,d24,d25 | 1089 » veor» » d17,d24,d25 |
1094 » vadd.i64» d27,d28 | 1090 » vadd.i64» d27,d28 |
1095 » vbsl» d30,d20,d19» » @ Maj(a,b,c) | 1091 » vbsl» » d30,d20,d19» » @ Maj(a,b,c) |
1096 » veor» d17,d26»» » @ Sigma0(a) | 1092 » veor» » d17,d26»» » @ Sigma0(a) |
1097 vadd.i64 d21,d27 | 1093 vadd.i64 d21,d27 |
1098 vadd.i64 d30,d27 | 1094 vadd.i64 d30,d27 |
1099 @ vadd.i64 d17,d30 | 1095 @ vadd.i64 d17,d30 |
1100 vshr.u64 d24,d21,#14 @ 15 | 1096 vshr.u64 d24,d21,#14 @ 15 |
1101 #if 15<16 | 1097 #if 15<16 |
1102 » vld1.64»{d15},[r1]!» @ handles unaligned | 1098 » vld1.64»» {d15},[r1]!» @ handles unaligned |
1103 #endif | 1099 #endif |
1104 vshr.u64 d25,d21,#18 | 1100 vshr.u64 d25,d21,#18 |
1105 #if 15>0 | 1101 #if 15>0 |
1106 » vadd.i64» d17,d30»» » @ h+=Maj from the past | 1102 » vadd.i64» d17,d30»» » @ h+=Maj from the past |
1107 #endif | 1103 #endif |
1108 vshr.u64 d26,d21,#41 | 1104 vshr.u64 d26,d21,#41 |
1109 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1105 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1110 » vsli.64»d24,d21,#50 | 1106 » vsli.64»» d24,d21,#50 |
1111 » vsli.64»d25,d21,#46 | 1107 » vsli.64»» d25,d21,#46 |
1112 » vmov» d29,d21 | 1108 » vmov» » d29,d21 |
1113 » vsli.64»d26,d21,#23 | 1109 » vsli.64»» d26,d21,#23 |
1114 #if 15<16 && defined(__ARMEL__) | 1110 #if 15<16 && defined(__ARMEL__) |
1115 vrev64.8 d15,d15 | 1111 vrev64.8 d15,d15 |
1116 #endif | 1112 #endif |
1117 » veor» d25,d24 | 1113 » veor» » d25,d24 |
1118 » vbsl» d29,d22,d23» » @ Ch(e,f,g) | 1114 » vbsl» » d29,d22,d23» » @ Ch(e,f,g) |
1119 vshr.u64 d24,d17,#28 | 1115 vshr.u64 d24,d17,#28 |
1120 » veor» d26,d25»» » @ Sigma1(e) | 1116 » veor» » d26,d25»» » @ Sigma1(e) |
1121 vadd.i64 d27,d29,d16 | 1117 vadd.i64 d27,d29,d16 |
1122 vshr.u64 d25,d17,#34 | 1118 vshr.u64 d25,d17,#34 |
1123 » vsli.64»d24,d17,#36 | 1119 » vsli.64»» d24,d17,#36 |
1124 vadd.i64 d27,d26 | 1120 vadd.i64 d27,d26 |
1125 vshr.u64 d26,d17,#39 | 1121 vshr.u64 d26,d17,#39 |
1126 vadd.i64 d28,d15 | 1122 vadd.i64 d28,d15 |
1127 » vsli.64»d25,d17,#30 | 1123 » vsli.64»» d25,d17,#30 |
1128 » veor» d30,d17,d18 | 1124 » veor» » d30,d17,d18 |
1129 » vsli.64»d26,d17,#25 | 1125 » vsli.64»» d26,d17,#25 |
1130 » veor» d16,d24,d25 | 1126 » veor» » d16,d24,d25 |
1131 » vadd.i64» d27,d28 | 1127 » vadd.i64» d27,d28 |
1132 » vbsl» d30,d19,d18» » @ Maj(a,b,c) | 1128 » vbsl» » d30,d19,d18» » @ Maj(a,b,c) |
1133 » veor» d16,d26»» » @ Sigma0(a) | 1129 » veor» » d16,d26»» » @ Sigma0(a) |
1134 vadd.i64 d20,d27 | 1130 vadd.i64 d20,d27 |
1135 vadd.i64 d30,d27 | 1131 vadd.i64 d30,d27 |
1136 @ vadd.i64 d16,d30 | 1132 @ vadd.i64 d16,d30 |
1137 » mov» r12,#4 | 1133 » mov» » r12,#4 |
1138 .L16_79_neon: | 1134 .L16_79_neon: |
1139 » subs» r12,#1 | 1135 » subs» » r12,#1 |
1140 vshr.u64 q12,q7,#19 | 1136 vshr.u64 q12,q7,#19 |
1141 vshr.u64 q13,q7,#61 | 1137 vshr.u64 q13,q7,#61 |
1142 » vadd.i64» d16,d30»» » @ h+=Maj from the past | 1138 » vadd.i64» d16,d30»» » @ h+=Maj from the past |
1143 vshr.u64 q15,q7,#6 | 1139 vshr.u64 q15,q7,#6 |
1144 » vsli.64»q12,q7,#45 | 1140 » vsli.64»» q12,q7,#45 |
1145 » vext.8» q14,q0,q1,#8» @ X[i+1] | 1141 » vext.8» » q14,q0,q1,#8» @ X[i+1] |
1146 » vsli.64»q13,q7,#3 | 1142 » vsli.64»» q13,q7,#3 |
1147 » veor» q15,q12 | 1143 » veor» » q15,q12 |
1148 vshr.u64 q12,q14,#1 | 1144 vshr.u64 q12,q14,#1 |
1149 » veor» q15,q13»» » » @ sigma1(X[i+14]) | 1145 » veor» » q15,q13»» » » @ sigma1(X[i+14]) |
1150 vshr.u64 q13,q14,#8 | 1146 vshr.u64 q13,q14,#8 |
1151 vadd.i64 q0,q15 | 1147 vadd.i64 q0,q15 |
1152 vshr.u64 q15,q14,#7 | 1148 vshr.u64 q15,q14,#7 |
1153 » vsli.64»q12,q14,#63 | 1149 » vsli.64»» q12,q14,#63 |
1154 » vsli.64»q13,q14,#56 | 1150 » vsli.64»» q13,q14,#56 |
1155 » vext.8» q14,q4,q5,#8» @ X[i+9] | 1151 » vext.8» » q14,q4,q5,#8» @ X[i+9] |
1156 » veor» q15,q12 | 1152 » veor» » q15,q12 |
1157 vshr.u64 d24,d20,#14 @ from NEON_00_15 | 1153 vshr.u64 d24,d20,#14 @ from NEON_00_15 |
1158 vadd.i64 q0,q14 | 1154 vadd.i64 q0,q14 |
1159 vshr.u64 d25,d20,#18 @ from NEON_00_15 | 1155 vshr.u64 d25,d20,#18 @ from NEON_00_15 |
1160 » veor» q15,q13»» » » @ sigma0(X[i+1]) | 1156 » veor» » q15,q13»» » » @ sigma0(X[i+1]) |
1161 vshr.u64 d26,d20,#41 @ from NEON_00_15 | 1157 vshr.u64 d26,d20,#41 @ from NEON_00_15 |
1162 vadd.i64 q0,q15 | 1158 vadd.i64 q0,q15 |
1163 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1159 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1164 » vsli.64»d24,d20,#50 | 1160 » vsli.64»» d24,d20,#50 |
1165 » vsli.64»d25,d20,#46 | 1161 » vsli.64»» d25,d20,#46 |
1166 » vmov» d29,d20 | 1162 » vmov» » d29,d20 |
1167 » vsli.64»d26,d20,#23 | 1163 » vsli.64»» d26,d20,#23 |
1168 #if 16<16 && defined(__ARMEL__) | 1164 #if 16<16 && defined(__ARMEL__) |
1169 vrev64.8 , | 1165 vrev64.8 , |
1170 #endif | 1166 #endif |
1171 » veor» d25,d24 | 1167 » veor» » d25,d24 |
1172 » vbsl» d29,d21,d22» » @ Ch(e,f,g) | 1168 » vbsl» » d29,d21,d22» » @ Ch(e,f,g) |
1173 vshr.u64 d24,d16,#28 | 1169 vshr.u64 d24,d16,#28 |
1174 » veor» d26,d25»» » @ Sigma1(e) | 1170 » veor» » d26,d25»» » @ Sigma1(e) |
1175 vadd.i64 d27,d29,d23 | 1171 vadd.i64 d27,d29,d23 |
1176 vshr.u64 d25,d16,#34 | 1172 vshr.u64 d25,d16,#34 |
1177 » vsli.64»d24,d16,#36 | 1173 » vsli.64»» d24,d16,#36 |
1178 vadd.i64 d27,d26 | 1174 vadd.i64 d27,d26 |
1179 vshr.u64 d26,d16,#39 | 1175 vshr.u64 d26,d16,#39 |
1180 vadd.i64 d28,d0 | 1176 vadd.i64 d28,d0 |
1181 » vsli.64»d25,d16,#30 | 1177 » vsli.64»» d25,d16,#30 |
1182 » veor» d30,d16,d17 | 1178 » veor» » d30,d16,d17 |
1183 » vsli.64»d26,d16,#25 | 1179 » vsli.64»» d26,d16,#25 |
1184 » veor» d23,d24,d25 | 1180 » veor» » d23,d24,d25 |
1185 » vadd.i64» d27,d28 | 1181 » vadd.i64» d27,d28 |
1186 » vbsl» d30,d18,d17» » @ Maj(a,b,c) | 1182 » vbsl» » d30,d18,d17» » @ Maj(a,b,c) |
1187 » veor» d23,d26»» » @ Sigma0(a) | 1183 » veor» » d23,d26»» » @ Sigma0(a) |
1188 vadd.i64 d19,d27 | 1184 vadd.i64 d19,d27 |
1189 vadd.i64 d30,d27 | 1185 vadd.i64 d30,d27 |
1190 @ vadd.i64 d23,d30 | 1186 @ vadd.i64 d23,d30 |
1191 vshr.u64 d24,d19,#14 @ 17 | 1187 vshr.u64 d24,d19,#14 @ 17 |
1192 #if 17<16 | 1188 #if 17<16 |
1193 » vld1.64»{d1},[r1]!» @ handles unaligned | 1189 » vld1.64»» {d1},[r1]!» @ handles unaligned |
1194 #endif | 1190 #endif |
1195 vshr.u64 d25,d19,#18 | 1191 vshr.u64 d25,d19,#18 |
1196 #if 17>0 | 1192 #if 17>0 |
1197 » vadd.i64» d23,d30»» » @ h+=Maj from the past | 1193 » vadd.i64» d23,d30»» » @ h+=Maj from the past |
1198 #endif | 1194 #endif |
1199 vshr.u64 d26,d19,#41 | 1195 vshr.u64 d26,d19,#41 |
1200 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1196 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1201 » vsli.64»d24,d19,#50 | 1197 » vsli.64»» d24,d19,#50 |
1202 » vsli.64»d25,d19,#46 | 1198 » vsli.64»» d25,d19,#46 |
1203 » vmov» d29,d19 | 1199 » vmov» » d29,d19 |
1204 » vsli.64»d26,d19,#23 | 1200 » vsli.64»» d26,d19,#23 |
1205 #if 17<16 && defined(__ARMEL__) | 1201 #if 17<16 && defined(__ARMEL__) |
1206 vrev64.8 , | 1202 vrev64.8 , |
1207 #endif | 1203 #endif |
1208 » veor» d25,d24 | 1204 » veor» » d25,d24 |
1209 » vbsl» d29,d20,d21» » @ Ch(e,f,g) | 1205 » vbsl» » d29,d20,d21» » @ Ch(e,f,g) |
1210 vshr.u64 d24,d23,#28 | 1206 vshr.u64 d24,d23,#28 |
1211 » veor» d26,d25»» » @ Sigma1(e) | 1207 » veor» » d26,d25»» » @ Sigma1(e) |
1212 vadd.i64 d27,d29,d22 | 1208 vadd.i64 d27,d29,d22 |
1213 vshr.u64 d25,d23,#34 | 1209 vshr.u64 d25,d23,#34 |
1214 » vsli.64»d24,d23,#36 | 1210 » vsli.64»» d24,d23,#36 |
1215 vadd.i64 d27,d26 | 1211 vadd.i64 d27,d26 |
1216 vshr.u64 d26,d23,#39 | 1212 vshr.u64 d26,d23,#39 |
1217 vadd.i64 d28,d1 | 1213 vadd.i64 d28,d1 |
1218 » vsli.64»d25,d23,#30 | 1214 » vsli.64»» d25,d23,#30 |
1219 » veor» d30,d23,d16 | 1215 » veor» » d30,d23,d16 |
1220 » vsli.64»d26,d23,#25 | 1216 » vsli.64»» d26,d23,#25 |
1221 » veor» d22,d24,d25 | 1217 » veor» » d22,d24,d25 |
1222 » vadd.i64» d27,d28 | 1218 » vadd.i64» d27,d28 |
1223 » vbsl» d30,d17,d16» » @ Maj(a,b,c) | 1219 » vbsl» » d30,d17,d16» » @ Maj(a,b,c) |
1224 » veor» d22,d26»» » @ Sigma0(a) | 1220 » veor» » d22,d26»» » @ Sigma0(a) |
1225 vadd.i64 d18,d27 | 1221 vadd.i64 d18,d27 |
1226 vadd.i64 d30,d27 | 1222 vadd.i64 d30,d27 |
1227 @ vadd.i64 d22,d30 | 1223 @ vadd.i64 d22,d30 |
1228 vshr.u64 q12,q0,#19 | 1224 vshr.u64 q12,q0,#19 |
1229 vshr.u64 q13,q0,#61 | 1225 vshr.u64 q13,q0,#61 |
1230 » vadd.i64» d22,d30»» » @ h+=Maj from the past | 1226 » vadd.i64» d22,d30»» » @ h+=Maj from the past |
1231 vshr.u64 q15,q0,#6 | 1227 vshr.u64 q15,q0,#6 |
1232 » vsli.64»q12,q0,#45 | 1228 » vsli.64»» q12,q0,#45 |
1233 » vext.8» q14,q1,q2,#8» @ X[i+1] | 1229 » vext.8» » q14,q1,q2,#8» @ X[i+1] |
1234 » vsli.64»q13,q0,#3 | 1230 » vsli.64»» q13,q0,#3 |
1235 » veor» q15,q12 | 1231 » veor» » q15,q12 |
1236 vshr.u64 q12,q14,#1 | 1232 vshr.u64 q12,q14,#1 |
1237 » veor» q15,q13»» » » @ sigma1(X[i+14]) | 1233 » veor» » q15,q13»» » » @ sigma1(X[i+14]) |
1238 vshr.u64 q13,q14,#8 | 1234 vshr.u64 q13,q14,#8 |
1239 vadd.i64 q1,q15 | 1235 vadd.i64 q1,q15 |
1240 vshr.u64 q15,q14,#7 | 1236 vshr.u64 q15,q14,#7 |
1241 » vsli.64»q12,q14,#63 | 1237 » vsli.64»» q12,q14,#63 |
1242 » vsli.64»q13,q14,#56 | 1238 » vsli.64»» q13,q14,#56 |
1243 » vext.8» q14,q5,q6,#8» @ X[i+9] | 1239 » vext.8» » q14,q5,q6,#8» @ X[i+9] |
1244 » veor» q15,q12 | 1240 » veor» » q15,q12 |
1245 vshr.u64 d24,d18,#14 @ from NEON_00_15 | 1241 vshr.u64 d24,d18,#14 @ from NEON_00_15 |
1246 vadd.i64 q1,q14 | 1242 vadd.i64 q1,q14 |
1247 vshr.u64 d25,d18,#18 @ from NEON_00_15 | 1243 vshr.u64 d25,d18,#18 @ from NEON_00_15 |
1248 » veor» q15,q13»» » » @ sigma0(X[i+1]) | 1244 » veor» » q15,q13»» » » @ sigma0(X[i+1]) |
1249 vshr.u64 d26,d18,#41 @ from NEON_00_15 | 1245 vshr.u64 d26,d18,#41 @ from NEON_00_15 |
1250 vadd.i64 q1,q15 | 1246 vadd.i64 q1,q15 |
1251 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1247 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1252 » vsli.64»d24,d18,#50 | 1248 » vsli.64»» d24,d18,#50 |
1253 » vsli.64»d25,d18,#46 | 1249 » vsli.64»» d25,d18,#46 |
1254 » vmov» d29,d18 | 1250 » vmov» » d29,d18 |
1255 » vsli.64»d26,d18,#23 | 1251 » vsli.64»» d26,d18,#23 |
1256 #if 18<16 && defined(__ARMEL__) | 1252 #if 18<16 && defined(__ARMEL__) |
1257 vrev64.8 , | 1253 vrev64.8 , |
1258 #endif | 1254 #endif |
1259 » veor» d25,d24 | 1255 » veor» » d25,d24 |
1260 » vbsl» d29,d19,d20» » @ Ch(e,f,g) | 1256 » vbsl» » d29,d19,d20» » @ Ch(e,f,g) |
1261 vshr.u64 d24,d22,#28 | 1257 vshr.u64 d24,d22,#28 |
1262 » veor» d26,d25»» » @ Sigma1(e) | 1258 » veor» » d26,d25»» » @ Sigma1(e) |
1263 vadd.i64 d27,d29,d21 | 1259 vadd.i64 d27,d29,d21 |
1264 vshr.u64 d25,d22,#34 | 1260 vshr.u64 d25,d22,#34 |
1265 » vsli.64»d24,d22,#36 | 1261 » vsli.64»» d24,d22,#36 |
1266 vadd.i64 d27,d26 | 1262 vadd.i64 d27,d26 |
1267 vshr.u64 d26,d22,#39 | 1263 vshr.u64 d26,d22,#39 |
1268 vadd.i64 d28,d2 | 1264 vadd.i64 d28,d2 |
1269 » vsli.64»d25,d22,#30 | 1265 » vsli.64»» d25,d22,#30 |
1270 » veor» d30,d22,d23 | 1266 » veor» » d30,d22,d23 |
1271 » vsli.64»d26,d22,#25 | 1267 » vsli.64»» d26,d22,#25 |
1272 » veor» d21,d24,d25 | 1268 » veor» » d21,d24,d25 |
1273 » vadd.i64» d27,d28 | 1269 » vadd.i64» d27,d28 |
1274 » vbsl» d30,d16,d23» » @ Maj(a,b,c) | 1270 » vbsl» » d30,d16,d23» » @ Maj(a,b,c) |
1275 » veor» d21,d26»» » @ Sigma0(a) | 1271 » veor» » d21,d26»» » @ Sigma0(a) |
1276 vadd.i64 d17,d27 | 1272 vadd.i64 d17,d27 |
1277 vadd.i64 d30,d27 | 1273 vadd.i64 d30,d27 |
1278 @ vadd.i64 d21,d30 | 1274 @ vadd.i64 d21,d30 |
1279 vshr.u64 d24,d17,#14 @ 19 | 1275 vshr.u64 d24,d17,#14 @ 19 |
1280 #if 19<16 | 1276 #if 19<16 |
1281 » vld1.64»{d3},[r1]!» @ handles unaligned | 1277 » vld1.64»» {d3},[r1]!» @ handles unaligned |
1282 #endif | 1278 #endif |
1283 vshr.u64 d25,d17,#18 | 1279 vshr.u64 d25,d17,#18 |
1284 #if 19>0 | 1280 #if 19>0 |
1285 » vadd.i64» d21,d30»» » @ h+=Maj from the past | 1281 » vadd.i64» d21,d30»» » @ h+=Maj from the past |
1286 #endif | 1282 #endif |
1287 vshr.u64 d26,d17,#41 | 1283 vshr.u64 d26,d17,#41 |
1288 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1284 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1289 » vsli.64»d24,d17,#50 | 1285 » vsli.64»» d24,d17,#50 |
1290 » vsli.64»d25,d17,#46 | 1286 » vsli.64»» d25,d17,#46 |
1291 » vmov» d29,d17 | 1287 » vmov» » d29,d17 |
1292 » vsli.64»d26,d17,#23 | 1288 » vsli.64»» d26,d17,#23 |
1293 #if 19<16 && defined(__ARMEL__) | 1289 #if 19<16 && defined(__ARMEL__) |
1294 vrev64.8 , | 1290 vrev64.8 , |
1295 #endif | 1291 #endif |
1296 » veor» d25,d24 | 1292 » veor» » d25,d24 |
1297 » vbsl» d29,d18,d19» » @ Ch(e,f,g) | 1293 » vbsl» » d29,d18,d19» » @ Ch(e,f,g) |
1298 vshr.u64 d24,d21,#28 | 1294 vshr.u64 d24,d21,#28 |
1299 » veor» d26,d25»» » @ Sigma1(e) | 1295 » veor» » d26,d25»» » @ Sigma1(e) |
1300 vadd.i64 d27,d29,d20 | 1296 vadd.i64 d27,d29,d20 |
1301 vshr.u64 d25,d21,#34 | 1297 vshr.u64 d25,d21,#34 |
1302 » vsli.64»d24,d21,#36 | 1298 » vsli.64»» d24,d21,#36 |
1303 vadd.i64 d27,d26 | 1299 vadd.i64 d27,d26 |
1304 vshr.u64 d26,d21,#39 | 1300 vshr.u64 d26,d21,#39 |
1305 vadd.i64 d28,d3 | 1301 vadd.i64 d28,d3 |
1306 » vsli.64»d25,d21,#30 | 1302 » vsli.64»» d25,d21,#30 |
1307 » veor» d30,d21,d22 | 1303 » veor» » d30,d21,d22 |
1308 » vsli.64»d26,d21,#25 | 1304 » vsli.64»» d26,d21,#25 |
1309 » veor» d20,d24,d25 | 1305 » veor» » d20,d24,d25 |
1310 » vadd.i64» d27,d28 | 1306 » vadd.i64» d27,d28 |
1311 » vbsl» d30,d23,d22» » @ Maj(a,b,c) | 1307 » vbsl» » d30,d23,d22» » @ Maj(a,b,c) |
1312 » veor» d20,d26»» » @ Sigma0(a) | 1308 » veor» » d20,d26»» » @ Sigma0(a) |
1313 vadd.i64 d16,d27 | 1309 vadd.i64 d16,d27 |
1314 vadd.i64 d30,d27 | 1310 vadd.i64 d30,d27 |
1315 @ vadd.i64 d20,d30 | 1311 @ vadd.i64 d20,d30 |
1316 vshr.u64 q12,q1,#19 | 1312 vshr.u64 q12,q1,#19 |
1317 vshr.u64 q13,q1,#61 | 1313 vshr.u64 q13,q1,#61 |
1318 » vadd.i64» d20,d30»» » @ h+=Maj from the past | 1314 » vadd.i64» d20,d30»» » @ h+=Maj from the past |
1319 vshr.u64 q15,q1,#6 | 1315 vshr.u64 q15,q1,#6 |
1320 » vsli.64»q12,q1,#45 | 1316 » vsli.64»» q12,q1,#45 |
1321 » vext.8» q14,q2,q3,#8» @ X[i+1] | 1317 » vext.8» » q14,q2,q3,#8» @ X[i+1] |
1322 » vsli.64»q13,q1,#3 | 1318 » vsli.64»» q13,q1,#3 |
1323 » veor» q15,q12 | 1319 » veor» » q15,q12 |
1324 vshr.u64 q12,q14,#1 | 1320 vshr.u64 q12,q14,#1 |
1325 » veor» q15,q13»» » » @ sigma1(X[i+14]) | 1321 » veor» » q15,q13»» » » @ sigma1(X[i+14]) |
1326 vshr.u64 q13,q14,#8 | 1322 vshr.u64 q13,q14,#8 |
1327 vadd.i64 q2,q15 | 1323 vadd.i64 q2,q15 |
1328 vshr.u64 q15,q14,#7 | 1324 vshr.u64 q15,q14,#7 |
1329 » vsli.64»q12,q14,#63 | 1325 » vsli.64»» q12,q14,#63 |
1330 » vsli.64»q13,q14,#56 | 1326 » vsli.64»» q13,q14,#56 |
1331 » vext.8» q14,q6,q7,#8» @ X[i+9] | 1327 » vext.8» » q14,q6,q7,#8» @ X[i+9] |
1332 » veor» q15,q12 | 1328 » veor» » q15,q12 |
1333 vshr.u64 d24,d16,#14 @ from NEON_00_15 | 1329 vshr.u64 d24,d16,#14 @ from NEON_00_15 |
1334 vadd.i64 q2,q14 | 1330 vadd.i64 q2,q14 |
1335 vshr.u64 d25,d16,#18 @ from NEON_00_15 | 1331 vshr.u64 d25,d16,#18 @ from NEON_00_15 |
1336 » veor» q15,q13»» » » @ sigma0(X[i+1]) | 1332 » veor» » q15,q13»» » » @ sigma0(X[i+1]) |
1337 vshr.u64 d26,d16,#41 @ from NEON_00_15 | 1333 vshr.u64 d26,d16,#41 @ from NEON_00_15 |
1338 vadd.i64 q2,q15 | 1334 vadd.i64 q2,q15 |
1339 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1335 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1340 » vsli.64»d24,d16,#50 | 1336 » vsli.64»» d24,d16,#50 |
1341 » vsli.64»d25,d16,#46 | 1337 » vsli.64»» d25,d16,#46 |
1342 » vmov» d29,d16 | 1338 » vmov» » d29,d16 |
1343 » vsli.64»d26,d16,#23 | 1339 » vsli.64»» d26,d16,#23 |
1344 #if 20<16 && defined(__ARMEL__) | 1340 #if 20<16 && defined(__ARMEL__) |
1345 vrev64.8 , | 1341 vrev64.8 , |
1346 #endif | 1342 #endif |
1347 » veor» d25,d24 | 1343 » veor» » d25,d24 |
1348 » vbsl» d29,d17,d18» » @ Ch(e,f,g) | 1344 » vbsl» » d29,d17,d18» » @ Ch(e,f,g) |
1349 vshr.u64 d24,d20,#28 | 1345 vshr.u64 d24,d20,#28 |
1350 » veor» d26,d25»» » @ Sigma1(e) | 1346 » veor» » d26,d25»» » @ Sigma1(e) |
1351 vadd.i64 d27,d29,d19 | 1347 vadd.i64 d27,d29,d19 |
1352 vshr.u64 d25,d20,#34 | 1348 vshr.u64 d25,d20,#34 |
1353 » vsli.64»d24,d20,#36 | 1349 » vsli.64»» d24,d20,#36 |
1354 vadd.i64 d27,d26 | 1350 vadd.i64 d27,d26 |
1355 vshr.u64 d26,d20,#39 | 1351 vshr.u64 d26,d20,#39 |
1356 vadd.i64 d28,d4 | 1352 vadd.i64 d28,d4 |
1357 » vsli.64»d25,d20,#30 | 1353 » vsli.64»» d25,d20,#30 |
1358 » veor» d30,d20,d21 | 1354 » veor» » d30,d20,d21 |
1359 » vsli.64»d26,d20,#25 | 1355 » vsli.64»» d26,d20,#25 |
1360 » veor» d19,d24,d25 | 1356 » veor» » d19,d24,d25 |
1361 » vadd.i64» d27,d28 | 1357 » vadd.i64» d27,d28 |
1362 » vbsl» d30,d22,d21» » @ Maj(a,b,c) | 1358 » vbsl» » d30,d22,d21» » @ Maj(a,b,c) |
1363 » veor» d19,d26»» » @ Sigma0(a) | 1359 » veor» » d19,d26»» » @ Sigma0(a) |
1364 vadd.i64 d23,d27 | 1360 vadd.i64 d23,d27 |
1365 vadd.i64 d30,d27 | 1361 vadd.i64 d30,d27 |
1366 @ vadd.i64 d19,d30 | 1362 @ vadd.i64 d19,d30 |
1367 vshr.u64 d24,d23,#14 @ 21 | 1363 vshr.u64 d24,d23,#14 @ 21 |
1368 #if 21<16 | 1364 #if 21<16 |
1369 » vld1.64»{d5},[r1]!» @ handles unaligned | 1365 » vld1.64»» {d5},[r1]!» @ handles unaligned |
1370 #endif | 1366 #endif |
1371 vshr.u64 d25,d23,#18 | 1367 vshr.u64 d25,d23,#18 |
1372 #if 21>0 | 1368 #if 21>0 |
1373 » vadd.i64» d19,d30»» » @ h+=Maj from the past | 1369 » vadd.i64» d19,d30»» » @ h+=Maj from the past |
1374 #endif | 1370 #endif |
1375 vshr.u64 d26,d23,#41 | 1371 vshr.u64 d26,d23,#41 |
1376 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1372 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1377 » vsli.64»d24,d23,#50 | 1373 » vsli.64»» d24,d23,#50 |
1378 » vsli.64»d25,d23,#46 | 1374 » vsli.64»» d25,d23,#46 |
1379 » vmov» d29,d23 | 1375 » vmov» » d29,d23 |
1380 » vsli.64»d26,d23,#23 | 1376 » vsli.64»» d26,d23,#23 |
1381 #if 21<16 && defined(__ARMEL__) | 1377 #if 21<16 && defined(__ARMEL__) |
1382 vrev64.8 , | 1378 vrev64.8 , |
1383 #endif | 1379 #endif |
1384 » veor» d25,d24 | 1380 » veor» » d25,d24 |
1385 » vbsl» d29,d16,d17» » @ Ch(e,f,g) | 1381 » vbsl» » d29,d16,d17» » @ Ch(e,f,g) |
1386 vshr.u64 d24,d19,#28 | 1382 vshr.u64 d24,d19,#28 |
1387 » veor» d26,d25»» » @ Sigma1(e) | 1383 » veor» » d26,d25»» » @ Sigma1(e) |
1388 vadd.i64 d27,d29,d18 | 1384 vadd.i64 d27,d29,d18 |
1389 vshr.u64 d25,d19,#34 | 1385 vshr.u64 d25,d19,#34 |
1390 » vsli.64»d24,d19,#36 | 1386 » vsli.64»» d24,d19,#36 |
1391 vadd.i64 d27,d26 | 1387 vadd.i64 d27,d26 |
1392 vshr.u64 d26,d19,#39 | 1388 vshr.u64 d26,d19,#39 |
1393 vadd.i64 d28,d5 | 1389 vadd.i64 d28,d5 |
1394 » vsli.64»d25,d19,#30 | 1390 » vsli.64»» d25,d19,#30 |
1395 » veor» d30,d19,d20 | 1391 » veor» » d30,d19,d20 |
1396 » vsli.64»d26,d19,#25 | 1392 » vsli.64»» d26,d19,#25 |
1397 » veor» d18,d24,d25 | 1393 » veor» » d18,d24,d25 |
1398 » vadd.i64» d27,d28 | 1394 » vadd.i64» d27,d28 |
1399 » vbsl» d30,d21,d20» » @ Maj(a,b,c) | 1395 » vbsl» » d30,d21,d20» » @ Maj(a,b,c) |
1400 » veor» d18,d26»» » @ Sigma0(a) | 1396 » veor» » d18,d26»» » @ Sigma0(a) |
1401 vadd.i64 d22,d27 | 1397 vadd.i64 d22,d27 |
1402 vadd.i64 d30,d27 | 1398 vadd.i64 d30,d27 |
1403 @ vadd.i64 d18,d30 | 1399 @ vadd.i64 d18,d30 |
1404 vshr.u64 q12,q2,#19 | 1400 vshr.u64 q12,q2,#19 |
1405 vshr.u64 q13,q2,#61 | 1401 vshr.u64 q13,q2,#61 |
1406 » vadd.i64» d18,d30»» » @ h+=Maj from the past | 1402 » vadd.i64» d18,d30»» » @ h+=Maj from the past |
1407 vshr.u64 q15,q2,#6 | 1403 vshr.u64 q15,q2,#6 |
1408 » vsli.64»q12,q2,#45 | 1404 » vsli.64»» q12,q2,#45 |
1409 » vext.8» q14,q3,q4,#8» @ X[i+1] | 1405 » vext.8» » q14,q3,q4,#8» @ X[i+1] |
1410 » vsli.64»q13,q2,#3 | 1406 » vsli.64»» q13,q2,#3 |
1411 » veor» q15,q12 | 1407 » veor» » q15,q12 |
1412 vshr.u64 q12,q14,#1 | 1408 vshr.u64 q12,q14,#1 |
1413 » veor» q15,q13»» » » @ sigma1(X[i+14]) | 1409 » veor» » q15,q13»» » » @ sigma1(X[i+14]) |
1414 vshr.u64 q13,q14,#8 | 1410 vshr.u64 q13,q14,#8 |
1415 vadd.i64 q3,q15 | 1411 vadd.i64 q3,q15 |
1416 vshr.u64 q15,q14,#7 | 1412 vshr.u64 q15,q14,#7 |
1417 » vsli.64»q12,q14,#63 | 1413 » vsli.64»» q12,q14,#63 |
1418 » vsli.64»q13,q14,#56 | 1414 » vsli.64»» q13,q14,#56 |
1419 » vext.8» q14,q7,q0,#8» @ X[i+9] | 1415 » vext.8» » q14,q7,q0,#8» @ X[i+9] |
1420 » veor» q15,q12 | 1416 » veor» » q15,q12 |
1421 vshr.u64 d24,d22,#14 @ from NEON_00_15 | 1417 vshr.u64 d24,d22,#14 @ from NEON_00_15 |
1422 vadd.i64 q3,q14 | 1418 vadd.i64 q3,q14 |
1423 vshr.u64 d25,d22,#18 @ from NEON_00_15 | 1419 vshr.u64 d25,d22,#18 @ from NEON_00_15 |
1424 » veor» q15,q13»» » » @ sigma0(X[i+1]) | 1420 » veor» » q15,q13»» » » @ sigma0(X[i+1]) |
1425 vshr.u64 d26,d22,#41 @ from NEON_00_15 | 1421 vshr.u64 d26,d22,#41 @ from NEON_00_15 |
1426 vadd.i64 q3,q15 | 1422 vadd.i64 q3,q15 |
1427 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1423 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1428 » vsli.64»d24,d22,#50 | 1424 » vsli.64»» d24,d22,#50 |
1429 » vsli.64»d25,d22,#46 | 1425 » vsli.64»» d25,d22,#46 |
1430 » vmov» d29,d22 | 1426 » vmov» » d29,d22 |
1431 » vsli.64»d26,d22,#23 | 1427 » vsli.64»» d26,d22,#23 |
1432 #if 22<16 && defined(__ARMEL__) | 1428 #if 22<16 && defined(__ARMEL__) |
1433 vrev64.8 , | 1429 vrev64.8 , |
1434 #endif | 1430 #endif |
1435 » veor» d25,d24 | 1431 » veor» » d25,d24 |
1436 » vbsl» d29,d23,d16» » @ Ch(e,f,g) | 1432 » vbsl» » d29,d23,d16» » @ Ch(e,f,g) |
1437 vshr.u64 d24,d18,#28 | 1433 vshr.u64 d24,d18,#28 |
1438 » veor» d26,d25»» » @ Sigma1(e) | 1434 » veor» » d26,d25»» » @ Sigma1(e) |
1439 vadd.i64 d27,d29,d17 | 1435 vadd.i64 d27,d29,d17 |
1440 vshr.u64 d25,d18,#34 | 1436 vshr.u64 d25,d18,#34 |
1441 » vsli.64»d24,d18,#36 | 1437 » vsli.64»» d24,d18,#36 |
1442 vadd.i64 d27,d26 | 1438 vadd.i64 d27,d26 |
1443 vshr.u64 d26,d18,#39 | 1439 vshr.u64 d26,d18,#39 |
1444 vadd.i64 d28,d6 | 1440 vadd.i64 d28,d6 |
1445 » vsli.64»d25,d18,#30 | 1441 » vsli.64»» d25,d18,#30 |
1446 » veor» d30,d18,d19 | 1442 » veor» » d30,d18,d19 |
1447 » vsli.64»d26,d18,#25 | 1443 » vsli.64»» d26,d18,#25 |
1448 » veor» d17,d24,d25 | 1444 » veor» » d17,d24,d25 |
1449 » vadd.i64» d27,d28 | 1445 » vadd.i64» d27,d28 |
1450 » vbsl» d30,d20,d19» » @ Maj(a,b,c) | 1446 » vbsl» » d30,d20,d19» » @ Maj(a,b,c) |
1451 » veor» d17,d26»» » @ Sigma0(a) | 1447 » veor» » d17,d26»» » @ Sigma0(a) |
1452 vadd.i64 d21,d27 | 1448 vadd.i64 d21,d27 |
1453 vadd.i64 d30,d27 | 1449 vadd.i64 d30,d27 |
1454 @ vadd.i64 d17,d30 | 1450 @ vadd.i64 d17,d30 |
1455 vshr.u64 d24,d21,#14 @ 23 | 1451 vshr.u64 d24,d21,#14 @ 23 |
1456 #if 23<16 | 1452 #if 23<16 |
1457 » vld1.64»{d7},[r1]!» @ handles unaligned | 1453 » vld1.64»» {d7},[r1]!» @ handles unaligned |
1458 #endif | 1454 #endif |
1459 vshr.u64 d25,d21,#18 | 1455 vshr.u64 d25,d21,#18 |
1460 #if 23>0 | 1456 #if 23>0 |
1461 » vadd.i64» d17,d30»» » @ h+=Maj from the past | 1457 » vadd.i64» d17,d30»» » @ h+=Maj from the past |
1462 #endif | 1458 #endif |
1463 vshr.u64 d26,d21,#41 | 1459 vshr.u64 d26,d21,#41 |
1464 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1460 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1465 » vsli.64»d24,d21,#50 | 1461 » vsli.64»» d24,d21,#50 |
1466 » vsli.64»d25,d21,#46 | 1462 » vsli.64»» d25,d21,#46 |
1467 » vmov» d29,d21 | 1463 » vmov» » d29,d21 |
1468 » vsli.64»d26,d21,#23 | 1464 » vsli.64»» d26,d21,#23 |
1469 #if 23<16 && defined(__ARMEL__) | 1465 #if 23<16 && defined(__ARMEL__) |
1470 vrev64.8 , | 1466 vrev64.8 , |
1471 #endif | 1467 #endif |
1472 » veor» d25,d24 | 1468 » veor» » d25,d24 |
1473 » vbsl» d29,d22,d23» » @ Ch(e,f,g) | 1469 » vbsl» » d29,d22,d23» » @ Ch(e,f,g) |
1474 vshr.u64 d24,d17,#28 | 1470 vshr.u64 d24,d17,#28 |
1475 » veor» d26,d25»» » @ Sigma1(e) | 1471 » veor» » d26,d25»» » @ Sigma1(e) |
1476 vadd.i64 d27,d29,d16 | 1472 vadd.i64 d27,d29,d16 |
1477 vshr.u64 d25,d17,#34 | 1473 vshr.u64 d25,d17,#34 |
1478 » vsli.64»d24,d17,#36 | 1474 » vsli.64»» d24,d17,#36 |
1479 vadd.i64 d27,d26 | 1475 vadd.i64 d27,d26 |
1480 vshr.u64 d26,d17,#39 | 1476 vshr.u64 d26,d17,#39 |
1481 vadd.i64 d28,d7 | 1477 vadd.i64 d28,d7 |
1482 » vsli.64»d25,d17,#30 | 1478 » vsli.64»» d25,d17,#30 |
1483 » veor» d30,d17,d18 | 1479 » veor» » d30,d17,d18 |
1484 » vsli.64»d26,d17,#25 | 1480 » vsli.64»» d26,d17,#25 |
1485 » veor» d16,d24,d25 | 1481 » veor» » d16,d24,d25 |
1486 » vadd.i64» d27,d28 | 1482 » vadd.i64» d27,d28 |
1487 » vbsl» d30,d19,d18» » @ Maj(a,b,c) | 1483 » vbsl» » d30,d19,d18» » @ Maj(a,b,c) |
1488 » veor» d16,d26»» » @ Sigma0(a) | 1484 » veor» » d16,d26»» » @ Sigma0(a) |
1489 vadd.i64 d20,d27 | 1485 vadd.i64 d20,d27 |
1490 vadd.i64 d30,d27 | 1486 vadd.i64 d30,d27 |
1491 @ vadd.i64 d16,d30 | 1487 @ vadd.i64 d16,d30 |
1492 vshr.u64 q12,q3,#19 | 1488 vshr.u64 q12,q3,#19 |
1493 vshr.u64 q13,q3,#61 | 1489 vshr.u64 q13,q3,#61 |
1494 » vadd.i64» d16,d30»» » @ h+=Maj from the past | 1490 » vadd.i64» d16,d30»» » @ h+=Maj from the past |
1495 vshr.u64 q15,q3,#6 | 1491 vshr.u64 q15,q3,#6 |
1496 » vsli.64»q12,q3,#45 | 1492 » vsli.64»» q12,q3,#45 |
1497 » vext.8» q14,q4,q5,#8» @ X[i+1] | 1493 » vext.8» » q14,q4,q5,#8» @ X[i+1] |
1498 » vsli.64»q13,q3,#3 | 1494 » vsli.64»» q13,q3,#3 |
1499 » veor» q15,q12 | 1495 » veor» » q15,q12 |
1500 vshr.u64 q12,q14,#1 | 1496 vshr.u64 q12,q14,#1 |
1501 » veor» q15,q13»» » » @ sigma1(X[i+14]) | 1497 » veor» » q15,q13»» » » @ sigma1(X[i+14]) |
1502 vshr.u64 q13,q14,#8 | 1498 vshr.u64 q13,q14,#8 |
1503 vadd.i64 q4,q15 | 1499 vadd.i64 q4,q15 |
1504 vshr.u64 q15,q14,#7 | 1500 vshr.u64 q15,q14,#7 |
1505 » vsli.64»q12,q14,#63 | 1501 » vsli.64»» q12,q14,#63 |
1506 » vsli.64»q13,q14,#56 | 1502 » vsli.64»» q13,q14,#56 |
1507 » vext.8» q14,q0,q1,#8» @ X[i+9] | 1503 » vext.8» » q14,q0,q1,#8» @ X[i+9] |
1508 » veor» q15,q12 | 1504 » veor» » q15,q12 |
1509 vshr.u64 d24,d20,#14 @ from NEON_00_15 | 1505 vshr.u64 d24,d20,#14 @ from NEON_00_15 |
1510 vadd.i64 q4,q14 | 1506 vadd.i64 q4,q14 |
1511 vshr.u64 d25,d20,#18 @ from NEON_00_15 | 1507 vshr.u64 d25,d20,#18 @ from NEON_00_15 |
1512 » veor» q15,q13»» » » @ sigma0(X[i+1]) | 1508 » veor» » q15,q13»» » » @ sigma0(X[i+1]) |
1513 vshr.u64 d26,d20,#41 @ from NEON_00_15 | 1509 vshr.u64 d26,d20,#41 @ from NEON_00_15 |
1514 vadd.i64 q4,q15 | 1510 vadd.i64 q4,q15 |
1515 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1511 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1516 » vsli.64»d24,d20,#50 | 1512 » vsli.64»» d24,d20,#50 |
1517 » vsli.64»d25,d20,#46 | 1513 » vsli.64»» d25,d20,#46 |
1518 » vmov» d29,d20 | 1514 » vmov» » d29,d20 |
1519 » vsli.64»d26,d20,#23 | 1515 » vsli.64»» d26,d20,#23 |
1520 #if 24<16 && defined(__ARMEL__) | 1516 #if 24<16 && defined(__ARMEL__) |
1521 vrev64.8 , | 1517 vrev64.8 , |
1522 #endif | 1518 #endif |
1523 » veor» d25,d24 | 1519 » veor» » d25,d24 |
1524 » vbsl» d29,d21,d22» » @ Ch(e,f,g) | 1520 » vbsl» » d29,d21,d22» » @ Ch(e,f,g) |
1525 vshr.u64 d24,d16,#28 | 1521 vshr.u64 d24,d16,#28 |
1526 » veor» d26,d25»» » @ Sigma1(e) | 1522 » veor» » d26,d25»» » @ Sigma1(e) |
1527 vadd.i64 d27,d29,d23 | 1523 vadd.i64 d27,d29,d23 |
1528 vshr.u64 d25,d16,#34 | 1524 vshr.u64 d25,d16,#34 |
1529 » vsli.64»d24,d16,#36 | 1525 » vsli.64»» d24,d16,#36 |
1530 vadd.i64 d27,d26 | 1526 vadd.i64 d27,d26 |
1531 vshr.u64 d26,d16,#39 | 1527 vshr.u64 d26,d16,#39 |
1532 vadd.i64 d28,d8 | 1528 vadd.i64 d28,d8 |
1533 » vsli.64»d25,d16,#30 | 1529 » vsli.64»» d25,d16,#30 |
1534 » veor» d30,d16,d17 | 1530 » veor» » d30,d16,d17 |
1535 » vsli.64»d26,d16,#25 | 1531 » vsli.64»» d26,d16,#25 |
1536 » veor» d23,d24,d25 | 1532 » veor» » d23,d24,d25 |
1537 » vadd.i64» d27,d28 | 1533 » vadd.i64» d27,d28 |
1538 » vbsl» d30,d18,d17» » @ Maj(a,b,c) | 1534 » vbsl» » d30,d18,d17» » @ Maj(a,b,c) |
1539 » veor» d23,d26»» » @ Sigma0(a) | 1535 » veor» » d23,d26»» » @ Sigma0(a) |
1540 vadd.i64 d19,d27 | 1536 vadd.i64 d19,d27 |
1541 vadd.i64 d30,d27 | 1537 vadd.i64 d30,d27 |
1542 @ vadd.i64 d23,d30 | 1538 @ vadd.i64 d23,d30 |
1543 vshr.u64 d24,d19,#14 @ 25 | 1539 vshr.u64 d24,d19,#14 @ 25 |
1544 #if 25<16 | 1540 #if 25<16 |
1545 » vld1.64»{d9},[r1]!» @ handles unaligned | 1541 » vld1.64»» {d9},[r1]!» @ handles unaligned |
1546 #endif | 1542 #endif |
1547 vshr.u64 d25,d19,#18 | 1543 vshr.u64 d25,d19,#18 |
1548 #if 25>0 | 1544 #if 25>0 |
1549 » vadd.i64» d23,d30»» » @ h+=Maj from the past | 1545 » vadd.i64» d23,d30»» » @ h+=Maj from the past |
1550 #endif | 1546 #endif |
1551 vshr.u64 d26,d19,#41 | 1547 vshr.u64 d26,d19,#41 |
1552 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1548 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1553 » vsli.64»d24,d19,#50 | 1549 » vsli.64»» d24,d19,#50 |
1554 » vsli.64»d25,d19,#46 | 1550 » vsli.64»» d25,d19,#46 |
1555 » vmov» d29,d19 | 1551 » vmov» » d29,d19 |
1556 » vsli.64»d26,d19,#23 | 1552 » vsli.64»» d26,d19,#23 |
1557 #if 25<16 && defined(__ARMEL__) | 1553 #if 25<16 && defined(__ARMEL__) |
1558 vrev64.8 , | 1554 vrev64.8 , |
1559 #endif | 1555 #endif |
1560 » veor» d25,d24 | 1556 » veor» » d25,d24 |
1561 » vbsl» d29,d20,d21» » @ Ch(e,f,g) | 1557 » vbsl» » d29,d20,d21» » @ Ch(e,f,g) |
1562 vshr.u64 d24,d23,#28 | 1558 vshr.u64 d24,d23,#28 |
1563 » veor» d26,d25»» » @ Sigma1(e) | 1559 » veor» » d26,d25»» » @ Sigma1(e) |
1564 vadd.i64 d27,d29,d22 | 1560 vadd.i64 d27,d29,d22 |
1565 vshr.u64 d25,d23,#34 | 1561 vshr.u64 d25,d23,#34 |
1566 » vsli.64»d24,d23,#36 | 1562 » vsli.64»» d24,d23,#36 |
1567 vadd.i64 d27,d26 | 1563 vadd.i64 d27,d26 |
1568 vshr.u64 d26,d23,#39 | 1564 vshr.u64 d26,d23,#39 |
1569 vadd.i64 d28,d9 | 1565 vadd.i64 d28,d9 |
1570 » vsli.64»d25,d23,#30 | 1566 » vsli.64»» d25,d23,#30 |
1571 » veor» d30,d23,d16 | 1567 » veor» » d30,d23,d16 |
1572 » vsli.64»d26,d23,#25 | 1568 » vsli.64»» d26,d23,#25 |
1573 » veor» d22,d24,d25 | 1569 » veor» » d22,d24,d25 |
1574 » vadd.i64» d27,d28 | 1570 » vadd.i64» d27,d28 |
1575 » vbsl» d30,d17,d16» » @ Maj(a,b,c) | 1571 » vbsl» » d30,d17,d16» » @ Maj(a,b,c) |
1576 » veor» d22,d26»» » @ Sigma0(a) | 1572 » veor» » d22,d26»» » @ Sigma0(a) |
1577 vadd.i64 d18,d27 | 1573 vadd.i64 d18,d27 |
1578 vadd.i64 d30,d27 | 1574 vadd.i64 d30,d27 |
1579 @ vadd.i64 d22,d30 | 1575 @ vadd.i64 d22,d30 |
1580 vshr.u64 q12,q4,#19 | 1576 vshr.u64 q12,q4,#19 |
1581 vshr.u64 q13,q4,#61 | 1577 vshr.u64 q13,q4,#61 |
1582 » vadd.i64» d22,d30»» » @ h+=Maj from the past | 1578 » vadd.i64» d22,d30»» » @ h+=Maj from the past |
1583 vshr.u64 q15,q4,#6 | 1579 vshr.u64 q15,q4,#6 |
1584 » vsli.64»q12,q4,#45 | 1580 » vsli.64»» q12,q4,#45 |
1585 » vext.8» q14,q5,q6,#8» @ X[i+1] | 1581 » vext.8» » q14,q5,q6,#8» @ X[i+1] |
1586 » vsli.64»q13,q4,#3 | 1582 » vsli.64»» q13,q4,#3 |
1587 » veor» q15,q12 | 1583 » veor» » q15,q12 |
1588 vshr.u64 q12,q14,#1 | 1584 vshr.u64 q12,q14,#1 |
1589 » veor» q15,q13»» » » @ sigma1(X[i+14]) | 1585 » veor» » q15,q13»» » » @ sigma1(X[i+14]) |
1590 vshr.u64 q13,q14,#8 | 1586 vshr.u64 q13,q14,#8 |
1591 vadd.i64 q5,q15 | 1587 vadd.i64 q5,q15 |
1592 vshr.u64 q15,q14,#7 | 1588 vshr.u64 q15,q14,#7 |
1593 » vsli.64»q12,q14,#63 | 1589 » vsli.64»» q12,q14,#63 |
1594 » vsli.64»q13,q14,#56 | 1590 » vsli.64»» q13,q14,#56 |
1595 » vext.8» q14,q1,q2,#8» @ X[i+9] | 1591 » vext.8» » q14,q1,q2,#8» @ X[i+9] |
1596 » veor» q15,q12 | 1592 » veor» » q15,q12 |
1597 vshr.u64 d24,d18,#14 @ from NEON_00_15 | 1593 vshr.u64 d24,d18,#14 @ from NEON_00_15 |
1598 vadd.i64 q5,q14 | 1594 vadd.i64 q5,q14 |
1599 vshr.u64 d25,d18,#18 @ from NEON_00_15 | 1595 vshr.u64 d25,d18,#18 @ from NEON_00_15 |
1600 » veor» q15,q13»» » » @ sigma0(X[i+1]) | 1596 » veor» » q15,q13»» » » @ sigma0(X[i+1]) |
1601 vshr.u64 d26,d18,#41 @ from NEON_00_15 | 1597 vshr.u64 d26,d18,#41 @ from NEON_00_15 |
1602 vadd.i64 q5,q15 | 1598 vadd.i64 q5,q15 |
1603 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1599 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1604 » vsli.64»d24,d18,#50 | 1600 » vsli.64»» d24,d18,#50 |
1605 » vsli.64»d25,d18,#46 | 1601 » vsli.64»» d25,d18,#46 |
1606 » vmov» d29,d18 | 1602 » vmov» » d29,d18 |
1607 » vsli.64»d26,d18,#23 | 1603 » vsli.64»» d26,d18,#23 |
1608 #if 26<16 && defined(__ARMEL__) | 1604 #if 26<16 && defined(__ARMEL__) |
1609 vrev64.8 , | 1605 vrev64.8 , |
1610 #endif | 1606 #endif |
1611 » veor» d25,d24 | 1607 » veor» » d25,d24 |
1612 » vbsl» d29,d19,d20» » @ Ch(e,f,g) | 1608 » vbsl» » d29,d19,d20» » @ Ch(e,f,g) |
1613 vshr.u64 d24,d22,#28 | 1609 vshr.u64 d24,d22,#28 |
1614 » veor» d26,d25»» » @ Sigma1(e) | 1610 » veor» » d26,d25»» » @ Sigma1(e) |
1615 vadd.i64 d27,d29,d21 | 1611 vadd.i64 d27,d29,d21 |
1616 vshr.u64 d25,d22,#34 | 1612 vshr.u64 d25,d22,#34 |
1617 » vsli.64»d24,d22,#36 | 1613 » vsli.64»» d24,d22,#36 |
1618 vadd.i64 d27,d26 | 1614 vadd.i64 d27,d26 |
1619 vshr.u64 d26,d22,#39 | 1615 vshr.u64 d26,d22,#39 |
1620 vadd.i64 d28,d10 | 1616 vadd.i64 d28,d10 |
1621 » vsli.64»d25,d22,#30 | 1617 » vsli.64»» d25,d22,#30 |
1622 » veor» d30,d22,d23 | 1618 » veor» » d30,d22,d23 |
1623 » vsli.64»d26,d22,#25 | 1619 » vsli.64»» d26,d22,#25 |
1624 » veor» d21,d24,d25 | 1620 » veor» » d21,d24,d25 |
1625 » vadd.i64» d27,d28 | 1621 » vadd.i64» d27,d28 |
1626 » vbsl» d30,d16,d23» » @ Maj(a,b,c) | 1622 » vbsl» » d30,d16,d23» » @ Maj(a,b,c) |
1627 » veor» d21,d26»» » @ Sigma0(a) | 1623 » veor» » d21,d26»» » @ Sigma0(a) |
1628 vadd.i64 d17,d27 | 1624 vadd.i64 d17,d27 |
1629 vadd.i64 d30,d27 | 1625 vadd.i64 d30,d27 |
1630 @ vadd.i64 d21,d30 | 1626 @ vadd.i64 d21,d30 |
1631 vshr.u64 d24,d17,#14 @ 27 | 1627 vshr.u64 d24,d17,#14 @ 27 |
1632 #if 27<16 | 1628 #if 27<16 |
1633 » vld1.64»{d11},[r1]!» @ handles unaligned | 1629 » vld1.64»» {d11},[r1]!» @ handles unaligned |
1634 #endif | 1630 #endif |
1635 vshr.u64 d25,d17,#18 | 1631 vshr.u64 d25,d17,#18 |
1636 #if 27>0 | 1632 #if 27>0 |
1637 » vadd.i64» d21,d30»» » @ h+=Maj from the past | 1633 » vadd.i64» d21,d30»» » @ h+=Maj from the past |
1638 #endif | 1634 #endif |
1639 vshr.u64 d26,d17,#41 | 1635 vshr.u64 d26,d17,#41 |
1640 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1636 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1641 » vsli.64»d24,d17,#50 | 1637 » vsli.64»» d24,d17,#50 |
1642 » vsli.64»d25,d17,#46 | 1638 » vsli.64»» d25,d17,#46 |
1643 » vmov» d29,d17 | 1639 » vmov» » d29,d17 |
1644 » vsli.64»d26,d17,#23 | 1640 » vsli.64»» d26,d17,#23 |
1645 #if 27<16 && defined(__ARMEL__) | 1641 #if 27<16 && defined(__ARMEL__) |
1646 vrev64.8 , | 1642 vrev64.8 , |
1647 #endif | 1643 #endif |
1648 » veor» d25,d24 | 1644 » veor» » d25,d24 |
1649 » vbsl» d29,d18,d19» » @ Ch(e,f,g) | 1645 » vbsl» » d29,d18,d19» » @ Ch(e,f,g) |
1650 vshr.u64 d24,d21,#28 | 1646 vshr.u64 d24,d21,#28 |
1651 » veor» d26,d25»» » @ Sigma1(e) | 1647 » veor» » d26,d25»» » @ Sigma1(e) |
1652 vadd.i64 d27,d29,d20 | 1648 vadd.i64 d27,d29,d20 |
1653 vshr.u64 d25,d21,#34 | 1649 vshr.u64 d25,d21,#34 |
1654 » vsli.64»d24,d21,#36 | 1650 » vsli.64»» d24,d21,#36 |
1655 vadd.i64 d27,d26 | 1651 vadd.i64 d27,d26 |
1656 vshr.u64 d26,d21,#39 | 1652 vshr.u64 d26,d21,#39 |
1657 vadd.i64 d28,d11 | 1653 vadd.i64 d28,d11 |
1658 » vsli.64»d25,d21,#30 | 1654 » vsli.64»» d25,d21,#30 |
1659 » veor» d30,d21,d22 | 1655 » veor» » d30,d21,d22 |
1660 » vsli.64»d26,d21,#25 | 1656 » vsli.64»» d26,d21,#25 |
1661 » veor» d20,d24,d25 | 1657 » veor» » d20,d24,d25 |
1662 » vadd.i64» d27,d28 | 1658 » vadd.i64» d27,d28 |
1663 » vbsl» d30,d23,d22» » @ Maj(a,b,c) | 1659 » vbsl» » d30,d23,d22» » @ Maj(a,b,c) |
1664 » veor» d20,d26»» » @ Sigma0(a) | 1660 » veor» » d20,d26»» » @ Sigma0(a) |
1665 vadd.i64 d16,d27 | 1661 vadd.i64 d16,d27 |
1666 vadd.i64 d30,d27 | 1662 vadd.i64 d30,d27 |
1667 @ vadd.i64 d20,d30 | 1663 @ vadd.i64 d20,d30 |
1668 vshr.u64 q12,q5,#19 | 1664 vshr.u64 q12,q5,#19 |
1669 vshr.u64 q13,q5,#61 | 1665 vshr.u64 q13,q5,#61 |
1670 » vadd.i64» d20,d30»» » @ h+=Maj from the past | 1666 » vadd.i64» d20,d30»» » @ h+=Maj from the past |
1671 vshr.u64 q15,q5,#6 | 1667 vshr.u64 q15,q5,#6 |
1672 » vsli.64»q12,q5,#45 | 1668 » vsli.64»» q12,q5,#45 |
1673 » vext.8» q14,q6,q7,#8» @ X[i+1] | 1669 » vext.8» » q14,q6,q7,#8» @ X[i+1] |
1674 » vsli.64»q13,q5,#3 | 1670 » vsli.64»» q13,q5,#3 |
1675 » veor» q15,q12 | 1671 » veor» » q15,q12 |
1676 vshr.u64 q12,q14,#1 | 1672 vshr.u64 q12,q14,#1 |
1677 » veor» q15,q13»» » » @ sigma1(X[i+14]) | 1673 » veor» » q15,q13»» » » @ sigma1(X[i+14]) |
1678 vshr.u64 q13,q14,#8 | 1674 vshr.u64 q13,q14,#8 |
1679 vadd.i64 q6,q15 | 1675 vadd.i64 q6,q15 |
1680 vshr.u64 q15,q14,#7 | 1676 vshr.u64 q15,q14,#7 |
1681 » vsli.64»q12,q14,#63 | 1677 » vsli.64»» q12,q14,#63 |
1682 » vsli.64»q13,q14,#56 | 1678 » vsli.64»» q13,q14,#56 |
1683 » vext.8» q14,q2,q3,#8» @ X[i+9] | 1679 » vext.8» » q14,q2,q3,#8» @ X[i+9] |
1684 » veor» q15,q12 | 1680 » veor» » q15,q12 |
1685 vshr.u64 d24,d16,#14 @ from NEON_00_15 | 1681 vshr.u64 d24,d16,#14 @ from NEON_00_15 |
1686 vadd.i64 q6,q14 | 1682 vadd.i64 q6,q14 |
1687 vshr.u64 d25,d16,#18 @ from NEON_00_15 | 1683 vshr.u64 d25,d16,#18 @ from NEON_00_15 |
1688 » veor» q15,q13»» » » @ sigma0(X[i+1]) | 1684 » veor» » q15,q13»» » » @ sigma0(X[i+1]) |
1689 vshr.u64 d26,d16,#41 @ from NEON_00_15 | 1685 vshr.u64 d26,d16,#41 @ from NEON_00_15 |
1690 vadd.i64 q6,q15 | 1686 vadd.i64 q6,q15 |
1691 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1687 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1692 » vsli.64»d24,d16,#50 | 1688 » vsli.64»» d24,d16,#50 |
1693 » vsli.64»d25,d16,#46 | 1689 » vsli.64»» d25,d16,#46 |
1694 » vmov» d29,d16 | 1690 » vmov» » d29,d16 |
1695 » vsli.64»d26,d16,#23 | 1691 » vsli.64»» d26,d16,#23 |
1696 #if 28<16 && defined(__ARMEL__) | 1692 #if 28<16 && defined(__ARMEL__) |
1697 vrev64.8 , | 1693 vrev64.8 , |
1698 #endif | 1694 #endif |
1699 » veor» d25,d24 | 1695 » veor» » d25,d24 |
1700 » vbsl» d29,d17,d18» » @ Ch(e,f,g) | 1696 » vbsl» » d29,d17,d18» » @ Ch(e,f,g) |
1701 vshr.u64 d24,d20,#28 | 1697 vshr.u64 d24,d20,#28 |
1702 » veor» d26,d25»» » @ Sigma1(e) | 1698 » veor» » d26,d25»» » @ Sigma1(e) |
1703 vadd.i64 d27,d29,d19 | 1699 vadd.i64 d27,d29,d19 |
1704 vshr.u64 d25,d20,#34 | 1700 vshr.u64 d25,d20,#34 |
1705 » vsli.64»d24,d20,#36 | 1701 » vsli.64»» d24,d20,#36 |
1706 vadd.i64 d27,d26 | 1702 vadd.i64 d27,d26 |
1707 vshr.u64 d26,d20,#39 | 1703 vshr.u64 d26,d20,#39 |
1708 vadd.i64 d28,d12 | 1704 vadd.i64 d28,d12 |
1709 » vsli.64»d25,d20,#30 | 1705 » vsli.64»» d25,d20,#30 |
1710 » veor» d30,d20,d21 | 1706 » veor» » d30,d20,d21 |
1711 » vsli.64»d26,d20,#25 | 1707 » vsli.64»» d26,d20,#25 |
1712 » veor» d19,d24,d25 | 1708 » veor» » d19,d24,d25 |
1713 » vadd.i64» d27,d28 | 1709 » vadd.i64» d27,d28 |
1714 » vbsl» d30,d22,d21» » @ Maj(a,b,c) | 1710 » vbsl» » d30,d22,d21» » @ Maj(a,b,c) |
1715 » veor» d19,d26»» » @ Sigma0(a) | 1711 » veor» » d19,d26»» » @ Sigma0(a) |
1716 vadd.i64 d23,d27 | 1712 vadd.i64 d23,d27 |
1717 vadd.i64 d30,d27 | 1713 vadd.i64 d30,d27 |
1718 @ vadd.i64 d19,d30 | 1714 @ vadd.i64 d19,d30 |
1719 vshr.u64 d24,d23,#14 @ 29 | 1715 vshr.u64 d24,d23,#14 @ 29 |
1720 #if 29<16 | 1716 #if 29<16 |
1721 » vld1.64»{d13},[r1]!» @ handles unaligned | 1717 » vld1.64»» {d13},[r1]!» @ handles unaligned |
1722 #endif | 1718 #endif |
1723 vshr.u64 d25,d23,#18 | 1719 vshr.u64 d25,d23,#18 |
1724 #if 29>0 | 1720 #if 29>0 |
1725 » vadd.i64» d19,d30»» » @ h+=Maj from the past | 1721 » vadd.i64» d19,d30»» » @ h+=Maj from the past |
1726 #endif | 1722 #endif |
1727 vshr.u64 d26,d23,#41 | 1723 vshr.u64 d26,d23,#41 |
1728 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1724 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1729 » vsli.64»d24,d23,#50 | 1725 » vsli.64»» d24,d23,#50 |
1730 » vsli.64»d25,d23,#46 | 1726 » vsli.64»» d25,d23,#46 |
1731 » vmov» d29,d23 | 1727 » vmov» » d29,d23 |
1732 » vsli.64»d26,d23,#23 | 1728 » vsli.64»» d26,d23,#23 |
1733 #if 29<16 && defined(__ARMEL__) | 1729 #if 29<16 && defined(__ARMEL__) |
1734 vrev64.8 , | 1730 vrev64.8 , |
1735 #endif | 1731 #endif |
1736 » veor» d25,d24 | 1732 » veor» » d25,d24 |
1737 » vbsl» d29,d16,d17» » @ Ch(e,f,g) | 1733 » vbsl» » d29,d16,d17» » @ Ch(e,f,g) |
1738 vshr.u64 d24,d19,#28 | 1734 vshr.u64 d24,d19,#28 |
1739 » veor» d26,d25»» » @ Sigma1(e) | 1735 » veor» » d26,d25»» » @ Sigma1(e) |
1740 vadd.i64 d27,d29,d18 | 1736 vadd.i64 d27,d29,d18 |
1741 vshr.u64 d25,d19,#34 | 1737 vshr.u64 d25,d19,#34 |
1742 » vsli.64»d24,d19,#36 | 1738 » vsli.64»» d24,d19,#36 |
1743 vadd.i64 d27,d26 | 1739 vadd.i64 d27,d26 |
1744 vshr.u64 d26,d19,#39 | 1740 vshr.u64 d26,d19,#39 |
1745 vadd.i64 d28,d13 | 1741 vadd.i64 d28,d13 |
1746 » vsli.64»d25,d19,#30 | 1742 » vsli.64»» d25,d19,#30 |
1747 » veor» d30,d19,d20 | 1743 » veor» » d30,d19,d20 |
1748 » vsli.64»d26,d19,#25 | 1744 » vsli.64»» d26,d19,#25 |
1749 » veor» d18,d24,d25 | 1745 » veor» » d18,d24,d25 |
1750 » vadd.i64» d27,d28 | 1746 » vadd.i64» d27,d28 |
1751 » vbsl» d30,d21,d20» » @ Maj(a,b,c) | 1747 » vbsl» » d30,d21,d20» » @ Maj(a,b,c) |
1752 » veor» d18,d26»» » @ Sigma0(a) | 1748 » veor» » d18,d26»» » @ Sigma0(a) |
1753 vadd.i64 d22,d27 | 1749 vadd.i64 d22,d27 |
1754 vadd.i64 d30,d27 | 1750 vadd.i64 d30,d27 |
1755 @ vadd.i64 d18,d30 | 1751 @ vadd.i64 d18,d30 |
1756 vshr.u64 q12,q6,#19 | 1752 vshr.u64 q12,q6,#19 |
1757 vshr.u64 q13,q6,#61 | 1753 vshr.u64 q13,q6,#61 |
1758 » vadd.i64» d18,d30»» » @ h+=Maj from the past | 1754 » vadd.i64» d18,d30»» » @ h+=Maj from the past |
1759 vshr.u64 q15,q6,#6 | 1755 vshr.u64 q15,q6,#6 |
1760 » vsli.64»q12,q6,#45 | 1756 » vsli.64»» q12,q6,#45 |
1761 » vext.8» q14,q7,q0,#8» @ X[i+1] | 1757 » vext.8» » q14,q7,q0,#8» @ X[i+1] |
1762 » vsli.64»q13,q6,#3 | 1758 » vsli.64»» q13,q6,#3 |
1763 » veor» q15,q12 | 1759 » veor» » q15,q12 |
1764 vshr.u64 q12,q14,#1 | 1760 vshr.u64 q12,q14,#1 |
1765 » veor» q15,q13»» » » @ sigma1(X[i+14]) | 1761 » veor» » q15,q13»» » » @ sigma1(X[i+14]) |
1766 vshr.u64 q13,q14,#8 | 1762 vshr.u64 q13,q14,#8 |
1767 vadd.i64 q7,q15 | 1763 vadd.i64 q7,q15 |
1768 vshr.u64 q15,q14,#7 | 1764 vshr.u64 q15,q14,#7 |
1769 » vsli.64»q12,q14,#63 | 1765 » vsli.64»» q12,q14,#63 |
1770 » vsli.64»q13,q14,#56 | 1766 » vsli.64»» q13,q14,#56 |
1771 » vext.8» q14,q3,q4,#8» @ X[i+9] | 1767 » vext.8» » q14,q3,q4,#8» @ X[i+9] |
1772 » veor» q15,q12 | 1768 » veor» » q15,q12 |
1773 vshr.u64 d24,d22,#14 @ from NEON_00_15 | 1769 vshr.u64 d24,d22,#14 @ from NEON_00_15 |
1774 vadd.i64 q7,q14 | 1770 vadd.i64 q7,q14 |
1775 vshr.u64 d25,d22,#18 @ from NEON_00_15 | 1771 vshr.u64 d25,d22,#18 @ from NEON_00_15 |
1776 » veor» q15,q13»» » » @ sigma0(X[i+1]) | 1772 » veor» » q15,q13»» » » @ sigma0(X[i+1]) |
1777 vshr.u64 d26,d22,#41 @ from NEON_00_15 | 1773 vshr.u64 d26,d22,#41 @ from NEON_00_15 |
1778 vadd.i64 q7,q15 | 1774 vadd.i64 q7,q15 |
1779 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1775 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1780 » vsli.64»d24,d22,#50 | 1776 » vsli.64»» d24,d22,#50 |
1781 » vsli.64»d25,d22,#46 | 1777 » vsli.64»» d25,d22,#46 |
1782 » vmov» d29,d22 | 1778 » vmov» » d29,d22 |
1783 » vsli.64»d26,d22,#23 | 1779 » vsli.64»» d26,d22,#23 |
1784 #if 30<16 && defined(__ARMEL__) | 1780 #if 30<16 && defined(__ARMEL__) |
1785 vrev64.8 , | 1781 vrev64.8 , |
1786 #endif | 1782 #endif |
1787 » veor» d25,d24 | 1783 » veor» » d25,d24 |
1788 » vbsl» d29,d23,d16» » @ Ch(e,f,g) | 1784 » vbsl» » d29,d23,d16» » @ Ch(e,f,g) |
1789 vshr.u64 d24,d18,#28 | 1785 vshr.u64 d24,d18,#28 |
1790 » veor» d26,d25»» » @ Sigma1(e) | 1786 » veor» » d26,d25»» » @ Sigma1(e) |
1791 vadd.i64 d27,d29,d17 | 1787 vadd.i64 d27,d29,d17 |
1792 vshr.u64 d25,d18,#34 | 1788 vshr.u64 d25,d18,#34 |
1793 » vsli.64»d24,d18,#36 | 1789 » vsli.64»» d24,d18,#36 |
1794 vadd.i64 d27,d26 | 1790 vadd.i64 d27,d26 |
1795 vshr.u64 d26,d18,#39 | 1791 vshr.u64 d26,d18,#39 |
1796 vadd.i64 d28,d14 | 1792 vadd.i64 d28,d14 |
1797 » vsli.64»d25,d18,#30 | 1793 » vsli.64»» d25,d18,#30 |
1798 » veor» d30,d18,d19 | 1794 » veor» » d30,d18,d19 |
1799 » vsli.64»d26,d18,#25 | 1795 » vsli.64»» d26,d18,#25 |
1800 » veor» d17,d24,d25 | 1796 » veor» » d17,d24,d25 |
1801 » vadd.i64» d27,d28 | 1797 » vadd.i64» d27,d28 |
1802 » vbsl» d30,d20,d19» » @ Maj(a,b,c) | 1798 » vbsl» » d30,d20,d19» » @ Maj(a,b,c) |
1803 » veor» d17,d26»» » @ Sigma0(a) | 1799 » veor» » d17,d26»» » @ Sigma0(a) |
1804 vadd.i64 d21,d27 | 1800 vadd.i64 d21,d27 |
1805 vadd.i64 d30,d27 | 1801 vadd.i64 d30,d27 |
1806 @ vadd.i64 d17,d30 | 1802 @ vadd.i64 d17,d30 |
1807 vshr.u64 d24,d21,#14 @ 31 | 1803 vshr.u64 d24,d21,#14 @ 31 |
1808 #if 31<16 | 1804 #if 31<16 |
1809 » vld1.64»{d15},[r1]!» @ handles unaligned | 1805 » vld1.64»» {d15},[r1]!» @ handles unaligned |
1810 #endif | 1806 #endif |
1811 vshr.u64 d25,d21,#18 | 1807 vshr.u64 d25,d21,#18 |
1812 #if 31>0 | 1808 #if 31>0 |
1813 » vadd.i64» d17,d30»» » @ h+=Maj from the past | 1809 » vadd.i64» d17,d30»» » @ h+=Maj from the past |
1814 #endif | 1810 #endif |
1815 vshr.u64 d26,d21,#41 | 1811 vshr.u64 d26,d21,#41 |
1816 » vld1.64»{d28},[r3,:64]!»@ K[i++] | 1812 » vld1.64»» {d28},[r3,:64]!»@ K[i++] |
1817 » vsli.64»d24,d21,#50 | 1813 » vsli.64»» d24,d21,#50 |
1818 » vsli.64»d25,d21,#46 | 1814 » vsli.64»» d25,d21,#46 |
1819 » vmov» d29,d21 | 1815 » vmov» » d29,d21 |
1820 » vsli.64»d26,d21,#23 | 1816 » vsli.64»» d26,d21,#23 |
1821 #if 31<16 && defined(__ARMEL__) | 1817 #if 31<16 && defined(__ARMEL__) |
1822 vrev64.8 , | 1818 vrev64.8 , |
1823 #endif | 1819 #endif |
1824 » veor» d25,d24 | 1820 » veor» » d25,d24 |
1825 » vbsl» d29,d22,d23» » @ Ch(e,f,g) | 1821 » vbsl» » d29,d22,d23» » @ Ch(e,f,g) |
1826 vshr.u64 d24,d17,#28 | 1822 vshr.u64 d24,d17,#28 |
1827 » veor» d26,d25»» » @ Sigma1(e) | 1823 » veor» » d26,d25»» » @ Sigma1(e) |
1828 vadd.i64 d27,d29,d16 | 1824 vadd.i64 d27,d29,d16 |
1829 vshr.u64 d25,d17,#34 | 1825 vshr.u64 d25,d17,#34 |
1830 » vsli.64»d24,d17,#36 | 1826 » vsli.64»» d24,d17,#36 |
1831 vadd.i64 d27,d26 | 1827 vadd.i64 d27,d26 |
1832 vshr.u64 d26,d17,#39 | 1828 vshr.u64 d26,d17,#39 |
1833 vadd.i64 d28,d15 | 1829 vadd.i64 d28,d15 |
1834 » vsli.64»d25,d17,#30 | 1830 » vsli.64»» d25,d17,#30 |
1835 » veor» d30,d17,d18 | 1831 » veor» » d30,d17,d18 |
1836 » vsli.64»d26,d17,#25 | 1832 » vsli.64»» d26,d17,#25 |
1837 » veor» d16,d24,d25 | 1833 » veor» » d16,d24,d25 |
1838 » vadd.i64» d27,d28 | 1834 » vadd.i64» d27,d28 |
1839 » vbsl» d30,d19,d18» » @ Maj(a,b,c) | 1835 » vbsl» » d30,d19,d18» » @ Maj(a,b,c) |
1840 » veor» d16,d26»» » @ Sigma0(a) | 1836 » veor» » d16,d26»» » @ Sigma0(a) |
1841 vadd.i64 d20,d27 | 1837 vadd.i64 d20,d27 |
1842 vadd.i64 d30,d27 | 1838 vadd.i64 d30,d27 |
1843 @ vadd.i64 d16,d30 | 1839 @ vadd.i64 d16,d30 |
1844 » bne» .L16_79_neon | 1840 » bne» » .L16_79_neon |
1845 | 1841 |
1846 » vadd.i64» d16,d30»» @ h+=Maj from the past | 1842 » vadd.i64» d16,d30»» @ h+=Maj from the past |
1847 » vldmia» r0,{d24,d25,d26,d27,d28,d29,d30,d31}» @ load context to temp | 1843 » vldmia» » r0,{d24-d31}» @ load context to temp |
1848 vadd.i64 q8,q12 @ vectorized accumulate | 1844 vadd.i64 q8,q12 @ vectorized accumulate |
1849 vadd.i64 q9,q13 | 1845 vadd.i64 q9,q13 |
1850 vadd.i64 q10,q14 | 1846 vadd.i64 q10,q14 |
1851 vadd.i64 q11,q15 | 1847 vadd.i64 q11,q15 |
1852 » vstmia» r0,{d16,d17,d18,d19,d20,d21,d22,d23}» @ save context | 1848 » vstmia» » r0,{d16-d23}» @ save context |
1853 » teq» r1,r2 | 1849 » teq» » r1,r2 |
1854 » sub» r3,#640»@ rewind K512 | 1850 » sub» » r3,#640»@ rewind K512 |
1855 » bne» .Loop_neon | 1851 » bne» » .Loop_neon |
1856 | 1852 |
1857 VFP_ABI_POP | 1853 VFP_ABI_POP |
1858 bx lr @ .word 0xe12fff1e | 1854 bx lr @ .word 0xe12fff1e |
1859 .size sha512_block_data_order_neon,.-sha512_block_data_order_neon | 1855 .size sha512_block_data_order_neon,.-sha512_block_data_order_neon |
1860 #endif | 1856 #endif |
1861 .byte» 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114
,109,32,102,111,114,32,65,82,77,118,52,47,78,69,79,78,44,32,67,82,89,80,84,79,71
,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,1
11,114,103,62,0 | 1857 .asciz» "SHA512 block transform for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org
>" |
1862 .align» 2 | |
1863 .align 2 | 1858 .align 2 |
1864 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) | 1859 #if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) |
1865 .comm OPENSSL_armcap_P,4,4 | 1860 .comm OPENSSL_armcap_P,4,4 |
1866 .hidden OPENSSL_armcap_P | 1861 .hidden OPENSSL_armcap_P |
1867 #endif | 1862 #endif |
OLD | NEW |