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

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

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