Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: third_party/boringssl/linux-arm/crypto/sha/sha512-armv4.S

Issue 1128293004: Revert of Roll src/third_party/boringssl/src 68de407:de12d6c (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Thanks Rietveld, Thietveld. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « third_party/boringssl/linux-arm/crypto/sha/sha256-armv4.S ('k') | third_party/boringssl/linux-x86/crypto/aes/aesni-x86.S » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698