Robert Sloan | 726e9d1 | 2018-09-11 11:45:04 -0700 | [diff] [blame^] | 1 | #if defined(__has_feature) |
| 2 | #if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) |
| 3 | #define OPENSSL_NO_ASM |
| 4 | #endif |
| 5 | #endif |
| 6 | |
| 7 | #if !defined(OPENSSL_NO_ASM) |
Kenny Root | b849459 | 2015-09-25 02:29:14 +0000 | [diff] [blame] | 8 | #if defined(__aarch64__) |
Robert Sloan | 726e9d1 | 2018-09-11 11:45:04 -0700 | [diff] [blame^] | 9 | #if defined(BORINGSSL_PREFIX) |
| 10 | #include <boringssl_prefix_symbols_asm.h> |
| 11 | #endif |
Kenny Root | b849459 | 2015-09-25 02:29:14 +0000 | [diff] [blame] | 12 | #include <openssl/arm_arch.h> |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 13 | |
| 14 | .text |
| 15 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 16 | |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 17 | .globl sha1_block_data_order |
David Benjamin | 4969cc9 | 2016-04-22 15:02:23 -0400 | [diff] [blame] | 18 | .hidden sha1_block_data_order |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 19 | .type sha1_block_data_order,%function |
| 20 | .align 6 |
| 21 | sha1_block_data_order: |
Robert Sloan | 8ff0355 | 2017-06-14 12:40:58 -0700 | [diff] [blame] | 22 | #ifdef __ILP32__ |
| 23 | ldrsw x16,.LOPENSSL_armcap_P |
| 24 | #else |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 25 | ldr x16,.LOPENSSL_armcap_P |
Robert Sloan | 8ff0355 | 2017-06-14 12:40:58 -0700 | [diff] [blame] | 26 | #endif |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 27 | adr x17,.LOPENSSL_armcap_P |
| 28 | add x16,x16,x17 |
| 29 | ldr w16,[x16] |
| 30 | tst w16,#ARMV8_SHA1 |
| 31 | b.ne .Lv8_entry |
| 32 | |
| 33 | stp x29,x30,[sp,#-96]! |
| 34 | add x29,sp,#0 |
| 35 | stp x19,x20,[sp,#16] |
| 36 | stp x21,x22,[sp,#32] |
| 37 | stp x23,x24,[sp,#48] |
| 38 | stp x25,x26,[sp,#64] |
| 39 | stp x27,x28,[sp,#80] |
| 40 | |
| 41 | ldp w20,w21,[x0] |
| 42 | ldp w22,w23,[x0,#8] |
| 43 | ldr w24,[x0,#16] |
| 44 | |
| 45 | .Loop: |
| 46 | ldr x3,[x1],#64 |
| 47 | movz w28,#0x7999 |
| 48 | sub x2,x2,#1 |
| 49 | movk w28,#0x5a82,lsl#16 |
| 50 | #ifdef __ARMEB__ |
| 51 | ror x3,x3,#32 |
| 52 | #else |
| 53 | rev32 x3,x3 |
| 54 | #endif |
| 55 | add w24,w24,w28 // warm it up |
| 56 | add w24,w24,w3 |
| 57 | lsr x4,x3,#32 |
| 58 | ldr x5,[x1,#-56] |
| 59 | bic w25,w23,w21 |
| 60 | and w26,w22,w21 |
| 61 | ror w27,w20,#27 |
| 62 | add w23,w23,w28 // future e+=K |
| 63 | orr w25,w25,w26 |
| 64 | add w24,w24,w27 // e+=rot(a,5) |
| 65 | ror w21,w21,#2 |
| 66 | add w23,w23,w4 // future e+=X[i] |
| 67 | add w24,w24,w25 // e+=F(b,c,d) |
| 68 | #ifdef __ARMEB__ |
| 69 | ror x5,x5,#32 |
| 70 | #else |
| 71 | rev32 x5,x5 |
| 72 | #endif |
| 73 | bic w25,w22,w20 |
| 74 | and w26,w21,w20 |
| 75 | ror w27,w24,#27 |
| 76 | add w22,w22,w28 // future e+=K |
| 77 | orr w25,w25,w26 |
| 78 | add w23,w23,w27 // e+=rot(a,5) |
| 79 | ror w20,w20,#2 |
| 80 | add w22,w22,w5 // future e+=X[i] |
| 81 | add w23,w23,w25 // e+=F(b,c,d) |
| 82 | lsr x6,x5,#32 |
| 83 | ldr x7,[x1,#-48] |
| 84 | bic w25,w21,w24 |
| 85 | and w26,w20,w24 |
| 86 | ror w27,w23,#27 |
| 87 | add w21,w21,w28 // future e+=K |
| 88 | orr w25,w25,w26 |
| 89 | add w22,w22,w27 // e+=rot(a,5) |
| 90 | ror w24,w24,#2 |
| 91 | add w21,w21,w6 // future e+=X[i] |
| 92 | add w22,w22,w25 // e+=F(b,c,d) |
| 93 | #ifdef __ARMEB__ |
| 94 | ror x7,x7,#32 |
| 95 | #else |
| 96 | rev32 x7,x7 |
| 97 | #endif |
| 98 | bic w25,w20,w23 |
| 99 | and w26,w24,w23 |
| 100 | ror w27,w22,#27 |
| 101 | add w20,w20,w28 // future e+=K |
| 102 | orr w25,w25,w26 |
| 103 | add w21,w21,w27 // e+=rot(a,5) |
| 104 | ror w23,w23,#2 |
| 105 | add w20,w20,w7 // future e+=X[i] |
| 106 | add w21,w21,w25 // e+=F(b,c,d) |
| 107 | lsr x8,x7,#32 |
| 108 | ldr x9,[x1,#-40] |
| 109 | bic w25,w24,w22 |
| 110 | and w26,w23,w22 |
| 111 | ror w27,w21,#27 |
| 112 | add w24,w24,w28 // future e+=K |
| 113 | orr w25,w25,w26 |
| 114 | add w20,w20,w27 // e+=rot(a,5) |
| 115 | ror w22,w22,#2 |
| 116 | add w24,w24,w8 // future e+=X[i] |
| 117 | add w20,w20,w25 // e+=F(b,c,d) |
| 118 | #ifdef __ARMEB__ |
| 119 | ror x9,x9,#32 |
| 120 | #else |
| 121 | rev32 x9,x9 |
| 122 | #endif |
| 123 | bic w25,w23,w21 |
| 124 | and w26,w22,w21 |
| 125 | ror w27,w20,#27 |
| 126 | add w23,w23,w28 // future e+=K |
| 127 | orr w25,w25,w26 |
| 128 | add w24,w24,w27 // e+=rot(a,5) |
| 129 | ror w21,w21,#2 |
| 130 | add w23,w23,w9 // future e+=X[i] |
| 131 | add w24,w24,w25 // e+=F(b,c,d) |
| 132 | lsr x10,x9,#32 |
| 133 | ldr x11,[x1,#-32] |
| 134 | bic w25,w22,w20 |
| 135 | and w26,w21,w20 |
| 136 | ror w27,w24,#27 |
| 137 | add w22,w22,w28 // future e+=K |
| 138 | orr w25,w25,w26 |
| 139 | add w23,w23,w27 // e+=rot(a,5) |
| 140 | ror w20,w20,#2 |
| 141 | add w22,w22,w10 // future e+=X[i] |
| 142 | add w23,w23,w25 // e+=F(b,c,d) |
| 143 | #ifdef __ARMEB__ |
| 144 | ror x11,x11,#32 |
| 145 | #else |
| 146 | rev32 x11,x11 |
| 147 | #endif |
| 148 | bic w25,w21,w24 |
| 149 | and w26,w20,w24 |
| 150 | ror w27,w23,#27 |
| 151 | add w21,w21,w28 // future e+=K |
| 152 | orr w25,w25,w26 |
| 153 | add w22,w22,w27 // e+=rot(a,5) |
| 154 | ror w24,w24,#2 |
| 155 | add w21,w21,w11 // future e+=X[i] |
| 156 | add w22,w22,w25 // e+=F(b,c,d) |
| 157 | lsr x12,x11,#32 |
| 158 | ldr x13,[x1,#-24] |
| 159 | bic w25,w20,w23 |
| 160 | and w26,w24,w23 |
| 161 | ror w27,w22,#27 |
| 162 | add w20,w20,w28 // future e+=K |
| 163 | orr w25,w25,w26 |
| 164 | add w21,w21,w27 // e+=rot(a,5) |
| 165 | ror w23,w23,#2 |
| 166 | add w20,w20,w12 // future e+=X[i] |
| 167 | add w21,w21,w25 // e+=F(b,c,d) |
| 168 | #ifdef __ARMEB__ |
| 169 | ror x13,x13,#32 |
| 170 | #else |
| 171 | rev32 x13,x13 |
| 172 | #endif |
| 173 | bic w25,w24,w22 |
| 174 | and w26,w23,w22 |
| 175 | ror w27,w21,#27 |
| 176 | add w24,w24,w28 // future e+=K |
| 177 | orr w25,w25,w26 |
| 178 | add w20,w20,w27 // e+=rot(a,5) |
| 179 | ror w22,w22,#2 |
| 180 | add w24,w24,w13 // future e+=X[i] |
| 181 | add w20,w20,w25 // e+=F(b,c,d) |
| 182 | lsr x14,x13,#32 |
| 183 | ldr x15,[x1,#-16] |
| 184 | bic w25,w23,w21 |
| 185 | and w26,w22,w21 |
| 186 | ror w27,w20,#27 |
| 187 | add w23,w23,w28 // future e+=K |
| 188 | orr w25,w25,w26 |
| 189 | add w24,w24,w27 // e+=rot(a,5) |
| 190 | ror w21,w21,#2 |
| 191 | add w23,w23,w14 // future e+=X[i] |
| 192 | add w24,w24,w25 // e+=F(b,c,d) |
| 193 | #ifdef __ARMEB__ |
| 194 | ror x15,x15,#32 |
| 195 | #else |
| 196 | rev32 x15,x15 |
| 197 | #endif |
| 198 | bic w25,w22,w20 |
| 199 | and w26,w21,w20 |
| 200 | ror w27,w24,#27 |
| 201 | add w22,w22,w28 // future e+=K |
| 202 | orr w25,w25,w26 |
| 203 | add w23,w23,w27 // e+=rot(a,5) |
| 204 | ror w20,w20,#2 |
| 205 | add w22,w22,w15 // future e+=X[i] |
| 206 | add w23,w23,w25 // e+=F(b,c,d) |
| 207 | lsr x16,x15,#32 |
| 208 | ldr x17,[x1,#-8] |
| 209 | bic w25,w21,w24 |
| 210 | and w26,w20,w24 |
| 211 | ror w27,w23,#27 |
| 212 | add w21,w21,w28 // future e+=K |
| 213 | orr w25,w25,w26 |
| 214 | add w22,w22,w27 // e+=rot(a,5) |
| 215 | ror w24,w24,#2 |
| 216 | add w21,w21,w16 // future e+=X[i] |
| 217 | add w22,w22,w25 // e+=F(b,c,d) |
| 218 | #ifdef __ARMEB__ |
| 219 | ror x17,x17,#32 |
| 220 | #else |
| 221 | rev32 x17,x17 |
| 222 | #endif |
| 223 | bic w25,w20,w23 |
| 224 | and w26,w24,w23 |
| 225 | ror w27,w22,#27 |
| 226 | add w20,w20,w28 // future e+=K |
| 227 | orr w25,w25,w26 |
| 228 | add w21,w21,w27 // e+=rot(a,5) |
| 229 | ror w23,w23,#2 |
| 230 | add w20,w20,w17 // future e+=X[i] |
| 231 | add w21,w21,w25 // e+=F(b,c,d) |
| 232 | lsr x19,x17,#32 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 233 | eor w3,w3,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 234 | bic w25,w24,w22 |
| 235 | and w26,w23,w22 |
| 236 | ror w27,w21,#27 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 237 | eor w3,w3,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 238 | add w24,w24,w28 // future e+=K |
| 239 | orr w25,w25,w26 |
| 240 | add w20,w20,w27 // e+=rot(a,5) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 241 | eor w3,w3,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 242 | ror w22,w22,#2 |
| 243 | add w24,w24,w19 // future e+=X[i] |
| 244 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 245 | ror w3,w3,#31 |
| 246 | eor w4,w4,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 247 | bic w25,w23,w21 |
| 248 | and w26,w22,w21 |
| 249 | ror w27,w20,#27 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 250 | eor w4,w4,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 251 | add w23,w23,w28 // future e+=K |
| 252 | orr w25,w25,w26 |
| 253 | add w24,w24,w27 // e+=rot(a,5) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 254 | eor w4,w4,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 255 | ror w21,w21,#2 |
| 256 | add w23,w23,w3 // future e+=X[i] |
| 257 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 258 | ror w4,w4,#31 |
| 259 | eor w5,w5,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 260 | bic w25,w22,w20 |
| 261 | and w26,w21,w20 |
| 262 | ror w27,w24,#27 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 263 | eor w5,w5,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 264 | add w22,w22,w28 // future e+=K |
| 265 | orr w25,w25,w26 |
| 266 | add w23,w23,w27 // e+=rot(a,5) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 267 | eor w5,w5,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 268 | ror w20,w20,#2 |
| 269 | add w22,w22,w4 // future e+=X[i] |
| 270 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 271 | ror w5,w5,#31 |
| 272 | eor w6,w6,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 273 | bic w25,w21,w24 |
| 274 | and w26,w20,w24 |
| 275 | ror w27,w23,#27 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 276 | eor w6,w6,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 277 | add w21,w21,w28 // future e+=K |
| 278 | orr w25,w25,w26 |
| 279 | add w22,w22,w27 // e+=rot(a,5) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 280 | eor w6,w6,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 281 | ror w24,w24,#2 |
| 282 | add w21,w21,w5 // future e+=X[i] |
| 283 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 284 | ror w6,w6,#31 |
| 285 | eor w7,w7,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 286 | bic w25,w20,w23 |
| 287 | and w26,w24,w23 |
| 288 | ror w27,w22,#27 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 289 | eor w7,w7,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 290 | add w20,w20,w28 // future e+=K |
| 291 | orr w25,w25,w26 |
| 292 | add w21,w21,w27 // e+=rot(a,5) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 293 | eor w7,w7,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 294 | ror w23,w23,#2 |
| 295 | add w20,w20,w6 // future e+=X[i] |
| 296 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 297 | ror w7,w7,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 298 | movz w28,#0xeba1 |
| 299 | movk w28,#0x6ed9,lsl#16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 300 | eor w8,w8,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 301 | bic w25,w24,w22 |
| 302 | and w26,w23,w22 |
| 303 | ror w27,w21,#27 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 304 | eor w8,w8,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 305 | add w24,w24,w28 // future e+=K |
| 306 | orr w25,w25,w26 |
| 307 | add w20,w20,w27 // e+=rot(a,5) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 308 | eor w8,w8,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 309 | ror w22,w22,#2 |
| 310 | add w24,w24,w7 // future e+=X[i] |
| 311 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 312 | ror w8,w8,#31 |
| 313 | eor w9,w9,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 314 | eor w25,w23,w21 |
| 315 | ror w27,w20,#27 |
| 316 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 317 | eor w9,w9,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 318 | eor w25,w25,w22 |
| 319 | add w24,w24,w27 // e+=rot(a,5) |
| 320 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 321 | eor w9,w9,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 322 | add w23,w23,w8 // future e+=X[i] |
| 323 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 324 | ror w9,w9,#31 |
| 325 | eor w10,w10,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 326 | eor w25,w22,w20 |
| 327 | ror w27,w24,#27 |
| 328 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 329 | eor w10,w10,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 330 | eor w25,w25,w21 |
| 331 | add w23,w23,w27 // e+=rot(a,5) |
| 332 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 333 | eor w10,w10,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 334 | add w22,w22,w9 // future e+=X[i] |
| 335 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 336 | ror w10,w10,#31 |
| 337 | eor w11,w11,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 338 | eor w25,w21,w24 |
| 339 | ror w27,w23,#27 |
| 340 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 341 | eor w11,w11,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 342 | eor w25,w25,w20 |
| 343 | add w22,w22,w27 // e+=rot(a,5) |
| 344 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 345 | eor w11,w11,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 346 | add w21,w21,w10 // future e+=X[i] |
| 347 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 348 | ror w11,w11,#31 |
| 349 | eor w12,w12,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 350 | eor w25,w20,w23 |
| 351 | ror w27,w22,#27 |
| 352 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 353 | eor w12,w12,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 354 | eor w25,w25,w24 |
| 355 | add w21,w21,w27 // e+=rot(a,5) |
| 356 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 357 | eor w12,w12,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 358 | add w20,w20,w11 // future e+=X[i] |
| 359 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 360 | ror w12,w12,#31 |
| 361 | eor w13,w13,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 362 | eor w25,w24,w22 |
| 363 | ror w27,w21,#27 |
| 364 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 365 | eor w13,w13,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 366 | eor w25,w25,w23 |
| 367 | add w20,w20,w27 // e+=rot(a,5) |
| 368 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 369 | eor w13,w13,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 370 | add w24,w24,w12 // future e+=X[i] |
| 371 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 372 | ror w13,w13,#31 |
| 373 | eor w14,w14,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 374 | eor w25,w23,w21 |
| 375 | ror w27,w20,#27 |
| 376 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 377 | eor w14,w14,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 378 | eor w25,w25,w22 |
| 379 | add w24,w24,w27 // e+=rot(a,5) |
| 380 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 381 | eor w14,w14,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 382 | add w23,w23,w13 // future e+=X[i] |
| 383 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 384 | ror w14,w14,#31 |
| 385 | eor w15,w15,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 386 | eor w25,w22,w20 |
| 387 | ror w27,w24,#27 |
| 388 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 389 | eor w15,w15,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 390 | eor w25,w25,w21 |
| 391 | add w23,w23,w27 // e+=rot(a,5) |
| 392 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 393 | eor w15,w15,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 394 | add w22,w22,w14 // future e+=X[i] |
| 395 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 396 | ror w15,w15,#31 |
| 397 | eor w16,w16,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 398 | eor w25,w21,w24 |
| 399 | ror w27,w23,#27 |
| 400 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 401 | eor w16,w16,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 402 | eor w25,w25,w20 |
| 403 | add w22,w22,w27 // e+=rot(a,5) |
| 404 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 405 | eor w16,w16,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 406 | add w21,w21,w15 // future e+=X[i] |
| 407 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 408 | ror w16,w16,#31 |
| 409 | eor w17,w17,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 410 | eor w25,w20,w23 |
| 411 | ror w27,w22,#27 |
| 412 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 413 | eor w17,w17,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 414 | eor w25,w25,w24 |
| 415 | add w21,w21,w27 // e+=rot(a,5) |
| 416 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 417 | eor w17,w17,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 418 | add w20,w20,w16 // future e+=X[i] |
| 419 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 420 | ror w17,w17,#31 |
| 421 | eor w19,w19,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 422 | eor w25,w24,w22 |
| 423 | ror w27,w21,#27 |
| 424 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 425 | eor w19,w19,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 426 | eor w25,w25,w23 |
| 427 | add w20,w20,w27 // e+=rot(a,5) |
| 428 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 429 | eor w19,w19,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 430 | add w24,w24,w17 // future e+=X[i] |
| 431 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 432 | ror w19,w19,#31 |
| 433 | eor w3,w3,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 434 | eor w25,w23,w21 |
| 435 | ror w27,w20,#27 |
| 436 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 437 | eor w3,w3,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 438 | eor w25,w25,w22 |
| 439 | add w24,w24,w27 // e+=rot(a,5) |
| 440 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 441 | eor w3,w3,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 442 | add w23,w23,w19 // future e+=X[i] |
| 443 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 444 | ror w3,w3,#31 |
| 445 | eor w4,w4,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 446 | eor w25,w22,w20 |
| 447 | ror w27,w24,#27 |
| 448 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 449 | eor w4,w4,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 450 | eor w25,w25,w21 |
| 451 | add w23,w23,w27 // e+=rot(a,5) |
| 452 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 453 | eor w4,w4,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 454 | add w22,w22,w3 // future e+=X[i] |
| 455 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 456 | ror w4,w4,#31 |
| 457 | eor w5,w5,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 458 | eor w25,w21,w24 |
| 459 | ror w27,w23,#27 |
| 460 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 461 | eor w5,w5,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 462 | eor w25,w25,w20 |
| 463 | add w22,w22,w27 // e+=rot(a,5) |
| 464 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 465 | eor w5,w5,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 466 | add w21,w21,w4 // future e+=X[i] |
| 467 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 468 | ror w5,w5,#31 |
| 469 | eor w6,w6,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 470 | eor w25,w20,w23 |
| 471 | ror w27,w22,#27 |
| 472 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 473 | eor w6,w6,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 474 | eor w25,w25,w24 |
| 475 | add w21,w21,w27 // e+=rot(a,5) |
| 476 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 477 | eor w6,w6,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 478 | add w20,w20,w5 // future e+=X[i] |
| 479 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 480 | ror w6,w6,#31 |
| 481 | eor w7,w7,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 482 | eor w25,w24,w22 |
| 483 | ror w27,w21,#27 |
| 484 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 485 | eor w7,w7,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 486 | eor w25,w25,w23 |
| 487 | add w20,w20,w27 // e+=rot(a,5) |
| 488 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 489 | eor w7,w7,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 490 | add w24,w24,w6 // future e+=X[i] |
| 491 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 492 | ror w7,w7,#31 |
| 493 | eor w8,w8,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 494 | eor w25,w23,w21 |
| 495 | ror w27,w20,#27 |
| 496 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 497 | eor w8,w8,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 498 | eor w25,w25,w22 |
| 499 | add w24,w24,w27 // e+=rot(a,5) |
| 500 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 501 | eor w8,w8,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 502 | add w23,w23,w7 // future e+=X[i] |
| 503 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 504 | ror w8,w8,#31 |
| 505 | eor w9,w9,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 506 | eor w25,w22,w20 |
| 507 | ror w27,w24,#27 |
| 508 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 509 | eor w9,w9,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 510 | eor w25,w25,w21 |
| 511 | add w23,w23,w27 // e+=rot(a,5) |
| 512 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 513 | eor w9,w9,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 514 | add w22,w22,w8 // future e+=X[i] |
| 515 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 516 | ror w9,w9,#31 |
| 517 | eor w10,w10,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 518 | eor w25,w21,w24 |
| 519 | ror w27,w23,#27 |
| 520 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 521 | eor w10,w10,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 522 | eor w25,w25,w20 |
| 523 | add w22,w22,w27 // e+=rot(a,5) |
| 524 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 525 | eor w10,w10,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 526 | add w21,w21,w9 // future e+=X[i] |
| 527 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 528 | ror w10,w10,#31 |
| 529 | eor w11,w11,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 530 | eor w25,w20,w23 |
| 531 | ror w27,w22,#27 |
| 532 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 533 | eor w11,w11,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 534 | eor w25,w25,w24 |
| 535 | add w21,w21,w27 // e+=rot(a,5) |
| 536 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 537 | eor w11,w11,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 538 | add w20,w20,w10 // future e+=X[i] |
| 539 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 540 | ror w11,w11,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 541 | movz w28,#0xbcdc |
| 542 | movk w28,#0x8f1b,lsl#16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 543 | eor w12,w12,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 544 | eor w25,w24,w22 |
| 545 | ror w27,w21,#27 |
| 546 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 547 | eor w12,w12,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 548 | eor w25,w25,w23 |
| 549 | add w20,w20,w27 // e+=rot(a,5) |
| 550 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 551 | eor w12,w12,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 552 | add w24,w24,w11 // future e+=X[i] |
| 553 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 554 | ror w12,w12,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 555 | orr w25,w21,w22 |
| 556 | and w26,w21,w22 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 557 | eor w13,w13,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 558 | ror w27,w20,#27 |
| 559 | and w25,w25,w23 |
| 560 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 561 | eor w13,w13,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 562 | add w24,w24,w27 // e+=rot(a,5) |
| 563 | orr w25,w25,w26 |
| 564 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 565 | eor w13,w13,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 566 | add w23,w23,w12 // future e+=X[i] |
| 567 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 568 | ror w13,w13,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 569 | orr w25,w20,w21 |
| 570 | and w26,w20,w21 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 571 | eor w14,w14,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 572 | ror w27,w24,#27 |
| 573 | and w25,w25,w22 |
| 574 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 575 | eor w14,w14,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 576 | add w23,w23,w27 // e+=rot(a,5) |
| 577 | orr w25,w25,w26 |
| 578 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 579 | eor w14,w14,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 580 | add w22,w22,w13 // future e+=X[i] |
| 581 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 582 | ror w14,w14,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 583 | orr w25,w24,w20 |
| 584 | and w26,w24,w20 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 585 | eor w15,w15,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 586 | ror w27,w23,#27 |
| 587 | and w25,w25,w21 |
| 588 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 589 | eor w15,w15,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 590 | add w22,w22,w27 // e+=rot(a,5) |
| 591 | orr w25,w25,w26 |
| 592 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 593 | eor w15,w15,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 594 | add w21,w21,w14 // future e+=X[i] |
| 595 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 596 | ror w15,w15,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 597 | orr w25,w23,w24 |
| 598 | and w26,w23,w24 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 599 | eor w16,w16,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 600 | ror w27,w22,#27 |
| 601 | and w25,w25,w20 |
| 602 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 603 | eor w16,w16,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 604 | add w21,w21,w27 // e+=rot(a,5) |
| 605 | orr w25,w25,w26 |
| 606 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 607 | eor w16,w16,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 608 | add w20,w20,w15 // future e+=X[i] |
| 609 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 610 | ror w16,w16,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 611 | orr w25,w22,w23 |
| 612 | and w26,w22,w23 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 613 | eor w17,w17,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 614 | ror w27,w21,#27 |
| 615 | and w25,w25,w24 |
| 616 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 617 | eor w17,w17,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 618 | add w20,w20,w27 // e+=rot(a,5) |
| 619 | orr w25,w25,w26 |
| 620 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 621 | eor w17,w17,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 622 | add w24,w24,w16 // future e+=X[i] |
| 623 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 624 | ror w17,w17,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 625 | orr w25,w21,w22 |
| 626 | and w26,w21,w22 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 627 | eor w19,w19,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 628 | ror w27,w20,#27 |
| 629 | and w25,w25,w23 |
| 630 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 631 | eor w19,w19,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 632 | add w24,w24,w27 // e+=rot(a,5) |
| 633 | orr w25,w25,w26 |
| 634 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 635 | eor w19,w19,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 636 | add w23,w23,w17 // future e+=X[i] |
| 637 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 638 | ror w19,w19,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 639 | orr w25,w20,w21 |
| 640 | and w26,w20,w21 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 641 | eor w3,w3,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 642 | ror w27,w24,#27 |
| 643 | and w25,w25,w22 |
| 644 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 645 | eor w3,w3,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 646 | add w23,w23,w27 // e+=rot(a,5) |
| 647 | orr w25,w25,w26 |
| 648 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 649 | eor w3,w3,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 650 | add w22,w22,w19 // future e+=X[i] |
| 651 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 652 | ror w3,w3,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 653 | orr w25,w24,w20 |
| 654 | and w26,w24,w20 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 655 | eor w4,w4,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 656 | ror w27,w23,#27 |
| 657 | and w25,w25,w21 |
| 658 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 659 | eor w4,w4,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 660 | add w22,w22,w27 // e+=rot(a,5) |
| 661 | orr w25,w25,w26 |
| 662 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 663 | eor w4,w4,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 664 | add w21,w21,w3 // future e+=X[i] |
| 665 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 666 | ror w4,w4,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 667 | orr w25,w23,w24 |
| 668 | and w26,w23,w24 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 669 | eor w5,w5,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 670 | ror w27,w22,#27 |
| 671 | and w25,w25,w20 |
| 672 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 673 | eor w5,w5,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 674 | add w21,w21,w27 // e+=rot(a,5) |
| 675 | orr w25,w25,w26 |
| 676 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 677 | eor w5,w5,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 678 | add w20,w20,w4 // future e+=X[i] |
| 679 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 680 | ror w5,w5,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 681 | orr w25,w22,w23 |
| 682 | and w26,w22,w23 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 683 | eor w6,w6,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 684 | ror w27,w21,#27 |
| 685 | and w25,w25,w24 |
| 686 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 687 | eor w6,w6,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 688 | add w20,w20,w27 // e+=rot(a,5) |
| 689 | orr w25,w25,w26 |
| 690 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 691 | eor w6,w6,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 692 | add w24,w24,w5 // future e+=X[i] |
| 693 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 694 | ror w6,w6,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 695 | orr w25,w21,w22 |
| 696 | and w26,w21,w22 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 697 | eor w7,w7,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 698 | ror w27,w20,#27 |
| 699 | and w25,w25,w23 |
| 700 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 701 | eor w7,w7,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 702 | add w24,w24,w27 // e+=rot(a,5) |
| 703 | orr w25,w25,w26 |
| 704 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 705 | eor w7,w7,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 706 | add w23,w23,w6 // future e+=X[i] |
| 707 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 708 | ror w7,w7,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 709 | orr w25,w20,w21 |
| 710 | and w26,w20,w21 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 711 | eor w8,w8,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 712 | ror w27,w24,#27 |
| 713 | and w25,w25,w22 |
| 714 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 715 | eor w8,w8,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 716 | add w23,w23,w27 // e+=rot(a,5) |
| 717 | orr w25,w25,w26 |
| 718 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 719 | eor w8,w8,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 720 | add w22,w22,w7 // future e+=X[i] |
| 721 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 722 | ror w8,w8,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 723 | orr w25,w24,w20 |
| 724 | and w26,w24,w20 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 725 | eor w9,w9,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 726 | ror w27,w23,#27 |
| 727 | and w25,w25,w21 |
| 728 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 729 | eor w9,w9,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 730 | add w22,w22,w27 // e+=rot(a,5) |
| 731 | orr w25,w25,w26 |
| 732 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 733 | eor w9,w9,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 734 | add w21,w21,w8 // future e+=X[i] |
| 735 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 736 | ror w9,w9,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 737 | orr w25,w23,w24 |
| 738 | and w26,w23,w24 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 739 | eor w10,w10,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 740 | ror w27,w22,#27 |
| 741 | and w25,w25,w20 |
| 742 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 743 | eor w10,w10,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 744 | add w21,w21,w27 // e+=rot(a,5) |
| 745 | orr w25,w25,w26 |
| 746 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 747 | eor w10,w10,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 748 | add w20,w20,w9 // future e+=X[i] |
| 749 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 750 | ror w10,w10,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 751 | orr w25,w22,w23 |
| 752 | and w26,w22,w23 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 753 | eor w11,w11,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 754 | ror w27,w21,#27 |
| 755 | and w25,w25,w24 |
| 756 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 757 | eor w11,w11,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 758 | add w20,w20,w27 // e+=rot(a,5) |
| 759 | orr w25,w25,w26 |
| 760 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 761 | eor w11,w11,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 762 | add w24,w24,w10 // future e+=X[i] |
| 763 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 764 | ror w11,w11,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 765 | orr w25,w21,w22 |
| 766 | and w26,w21,w22 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 767 | eor w12,w12,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 768 | ror w27,w20,#27 |
| 769 | and w25,w25,w23 |
| 770 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 771 | eor w12,w12,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 772 | add w24,w24,w27 // e+=rot(a,5) |
| 773 | orr w25,w25,w26 |
| 774 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 775 | eor w12,w12,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 776 | add w23,w23,w11 // future e+=X[i] |
| 777 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 778 | ror w12,w12,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 779 | orr w25,w20,w21 |
| 780 | and w26,w20,w21 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 781 | eor w13,w13,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 782 | ror w27,w24,#27 |
| 783 | and w25,w25,w22 |
| 784 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 785 | eor w13,w13,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 786 | add w23,w23,w27 // e+=rot(a,5) |
| 787 | orr w25,w25,w26 |
| 788 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 789 | eor w13,w13,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 790 | add w22,w22,w12 // future e+=X[i] |
| 791 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 792 | ror w13,w13,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 793 | orr w25,w24,w20 |
| 794 | and w26,w24,w20 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 795 | eor w14,w14,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 796 | ror w27,w23,#27 |
| 797 | and w25,w25,w21 |
| 798 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 799 | eor w14,w14,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 800 | add w22,w22,w27 // e+=rot(a,5) |
| 801 | orr w25,w25,w26 |
| 802 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 803 | eor w14,w14,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 804 | add w21,w21,w13 // future e+=X[i] |
| 805 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 806 | ror w14,w14,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 807 | orr w25,w23,w24 |
| 808 | and w26,w23,w24 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 809 | eor w15,w15,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 810 | ror w27,w22,#27 |
| 811 | and w25,w25,w20 |
| 812 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 813 | eor w15,w15,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 814 | add w21,w21,w27 // e+=rot(a,5) |
| 815 | orr w25,w25,w26 |
| 816 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 817 | eor w15,w15,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 818 | add w20,w20,w14 // future e+=X[i] |
| 819 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 820 | ror w15,w15,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 821 | movz w28,#0xc1d6 |
| 822 | movk w28,#0xca62,lsl#16 |
| 823 | orr w25,w22,w23 |
| 824 | and w26,w22,w23 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 825 | eor w16,w16,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 826 | ror w27,w21,#27 |
| 827 | and w25,w25,w24 |
| 828 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 829 | eor w16,w16,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 830 | add w20,w20,w27 // e+=rot(a,5) |
| 831 | orr w25,w25,w26 |
| 832 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 833 | eor w16,w16,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 834 | add w24,w24,w15 // future e+=X[i] |
| 835 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 836 | ror w16,w16,#31 |
| 837 | eor w17,w17,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 838 | eor w25,w23,w21 |
| 839 | ror w27,w20,#27 |
| 840 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 841 | eor w17,w17,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 842 | eor w25,w25,w22 |
| 843 | add w24,w24,w27 // e+=rot(a,5) |
| 844 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 845 | eor w17,w17,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 846 | add w23,w23,w16 // future e+=X[i] |
| 847 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 848 | ror w17,w17,#31 |
| 849 | eor w19,w19,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 850 | eor w25,w22,w20 |
| 851 | ror w27,w24,#27 |
| 852 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 853 | eor w19,w19,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 854 | eor w25,w25,w21 |
| 855 | add w23,w23,w27 // e+=rot(a,5) |
| 856 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 857 | eor w19,w19,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 858 | add w22,w22,w17 // future e+=X[i] |
| 859 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 860 | ror w19,w19,#31 |
| 861 | eor w3,w3,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 862 | eor w25,w21,w24 |
| 863 | ror w27,w23,#27 |
| 864 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 865 | eor w3,w3,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 866 | eor w25,w25,w20 |
| 867 | add w22,w22,w27 // e+=rot(a,5) |
| 868 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 869 | eor w3,w3,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 870 | add w21,w21,w19 // future e+=X[i] |
| 871 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 872 | ror w3,w3,#31 |
| 873 | eor w4,w4,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 874 | eor w25,w20,w23 |
| 875 | ror w27,w22,#27 |
| 876 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 877 | eor w4,w4,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 878 | eor w25,w25,w24 |
| 879 | add w21,w21,w27 // e+=rot(a,5) |
| 880 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 881 | eor w4,w4,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 882 | add w20,w20,w3 // future e+=X[i] |
| 883 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 884 | ror w4,w4,#31 |
| 885 | eor w5,w5,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 886 | eor w25,w24,w22 |
| 887 | ror w27,w21,#27 |
| 888 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 889 | eor w5,w5,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 890 | eor w25,w25,w23 |
| 891 | add w20,w20,w27 // e+=rot(a,5) |
| 892 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 893 | eor w5,w5,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 894 | add w24,w24,w4 // future e+=X[i] |
| 895 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 896 | ror w5,w5,#31 |
| 897 | eor w6,w6,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 898 | eor w25,w23,w21 |
| 899 | ror w27,w20,#27 |
| 900 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 901 | eor w6,w6,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 902 | eor w25,w25,w22 |
| 903 | add w24,w24,w27 // e+=rot(a,5) |
| 904 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 905 | eor w6,w6,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 906 | add w23,w23,w5 // future e+=X[i] |
| 907 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 908 | ror w6,w6,#31 |
| 909 | eor w7,w7,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 910 | eor w25,w22,w20 |
| 911 | ror w27,w24,#27 |
| 912 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 913 | eor w7,w7,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 914 | eor w25,w25,w21 |
| 915 | add w23,w23,w27 // e+=rot(a,5) |
| 916 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 917 | eor w7,w7,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 918 | add w22,w22,w6 // future e+=X[i] |
| 919 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 920 | ror w7,w7,#31 |
| 921 | eor w8,w8,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 922 | eor w25,w21,w24 |
| 923 | ror w27,w23,#27 |
| 924 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 925 | eor w8,w8,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 926 | eor w25,w25,w20 |
| 927 | add w22,w22,w27 // e+=rot(a,5) |
| 928 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 929 | eor w8,w8,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 930 | add w21,w21,w7 // future e+=X[i] |
| 931 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 932 | ror w8,w8,#31 |
| 933 | eor w9,w9,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 934 | eor w25,w20,w23 |
| 935 | ror w27,w22,#27 |
| 936 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 937 | eor w9,w9,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 938 | eor w25,w25,w24 |
| 939 | add w21,w21,w27 // e+=rot(a,5) |
| 940 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 941 | eor w9,w9,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 942 | add w20,w20,w8 // future e+=X[i] |
| 943 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 944 | ror w9,w9,#31 |
| 945 | eor w10,w10,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 946 | eor w25,w24,w22 |
| 947 | ror w27,w21,#27 |
| 948 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 949 | eor w10,w10,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 950 | eor w25,w25,w23 |
| 951 | add w20,w20,w27 // e+=rot(a,5) |
| 952 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 953 | eor w10,w10,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 954 | add w24,w24,w9 // future e+=X[i] |
| 955 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 956 | ror w10,w10,#31 |
| 957 | eor w11,w11,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 958 | eor w25,w23,w21 |
| 959 | ror w27,w20,#27 |
| 960 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 961 | eor w11,w11,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 962 | eor w25,w25,w22 |
| 963 | add w24,w24,w27 // e+=rot(a,5) |
| 964 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 965 | eor w11,w11,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 966 | add w23,w23,w10 // future e+=X[i] |
| 967 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 968 | ror w11,w11,#31 |
| 969 | eor w12,w12,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 970 | eor w25,w22,w20 |
| 971 | ror w27,w24,#27 |
| 972 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 973 | eor w12,w12,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 974 | eor w25,w25,w21 |
| 975 | add w23,w23,w27 // e+=rot(a,5) |
| 976 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 977 | eor w12,w12,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 978 | add w22,w22,w11 // future e+=X[i] |
| 979 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 980 | ror w12,w12,#31 |
| 981 | eor w13,w13,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 982 | eor w25,w21,w24 |
| 983 | ror w27,w23,#27 |
| 984 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 985 | eor w13,w13,w5 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 986 | eor w25,w25,w20 |
| 987 | add w22,w22,w27 // e+=rot(a,5) |
| 988 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 989 | eor w13,w13,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 990 | add w21,w21,w12 // future e+=X[i] |
| 991 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 992 | ror w13,w13,#31 |
| 993 | eor w14,w14,w16 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 994 | eor w25,w20,w23 |
| 995 | ror w27,w22,#27 |
| 996 | add w20,w20,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 997 | eor w14,w14,w6 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 998 | eor w25,w25,w24 |
| 999 | add w21,w21,w27 // e+=rot(a,5) |
| 1000 | ror w23,w23,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1001 | eor w14,w14,w11 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1002 | add w20,w20,w13 // future e+=X[i] |
| 1003 | add w21,w21,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1004 | ror w14,w14,#31 |
| 1005 | eor w15,w15,w17 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1006 | eor w25,w24,w22 |
| 1007 | ror w27,w21,#27 |
| 1008 | add w24,w24,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1009 | eor w15,w15,w7 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1010 | eor w25,w25,w23 |
| 1011 | add w20,w20,w27 // e+=rot(a,5) |
| 1012 | ror w22,w22,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1013 | eor w15,w15,w12 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1014 | add w24,w24,w14 // future e+=X[i] |
| 1015 | add w20,w20,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1016 | ror w15,w15,#31 |
| 1017 | eor w16,w16,w19 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1018 | eor w25,w23,w21 |
| 1019 | ror w27,w20,#27 |
| 1020 | add w23,w23,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1021 | eor w16,w16,w8 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1022 | eor w25,w25,w22 |
| 1023 | add w24,w24,w27 // e+=rot(a,5) |
| 1024 | ror w21,w21,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1025 | eor w16,w16,w13 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1026 | add w23,w23,w15 // future e+=X[i] |
| 1027 | add w24,w24,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1028 | ror w16,w16,#31 |
| 1029 | eor w17,w17,w3 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1030 | eor w25,w22,w20 |
| 1031 | ror w27,w24,#27 |
| 1032 | add w22,w22,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1033 | eor w17,w17,w9 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1034 | eor w25,w25,w21 |
| 1035 | add w23,w23,w27 // e+=rot(a,5) |
| 1036 | ror w20,w20,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1037 | eor w17,w17,w14 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1038 | add w22,w22,w16 // future e+=X[i] |
| 1039 | add w23,w23,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1040 | ror w17,w17,#31 |
| 1041 | eor w19,w19,w4 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1042 | eor w25,w21,w24 |
| 1043 | ror w27,w23,#27 |
| 1044 | add w21,w21,w28 // future e+=K |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1045 | eor w19,w19,w10 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1046 | eor w25,w25,w20 |
| 1047 | add w22,w22,w27 // e+=rot(a,5) |
| 1048 | ror w24,w24,#2 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1049 | eor w19,w19,w15 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1050 | add w21,w21,w17 // future e+=X[i] |
| 1051 | add w22,w22,w25 // e+=F(b,c,d) |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1052 | ror w19,w19,#31 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1053 | ldp w4,w5,[x0] |
| 1054 | eor w25,w20,w23 |
| 1055 | ror w27,w22,#27 |
| 1056 | add w20,w20,w28 // future e+=K |
| 1057 | eor w25,w25,w24 |
| 1058 | add w21,w21,w27 // e+=rot(a,5) |
| 1059 | ror w23,w23,#2 |
| 1060 | add w20,w20,w19 // future e+=X[i] |
| 1061 | add w21,w21,w25 // e+=F(b,c,d) |
| 1062 | ldp w6,w7,[x0,#8] |
| 1063 | eor w25,w24,w22 |
| 1064 | ror w27,w21,#27 |
| 1065 | eor w25,w25,w23 |
| 1066 | add w20,w20,w27 // e+=rot(a,5) |
| 1067 | ror w22,w22,#2 |
| 1068 | ldr w8,[x0,#16] |
| 1069 | add w20,w20,w25 // e+=F(b,c,d) |
| 1070 | add w21,w21,w5 |
| 1071 | add w22,w22,w6 |
| 1072 | add w20,w20,w4 |
| 1073 | add w23,w23,w7 |
| 1074 | add w24,w24,w8 |
| 1075 | stp w20,w21,[x0] |
| 1076 | stp w22,w23,[x0,#8] |
| 1077 | str w24,[x0,#16] |
| 1078 | cbnz x2,.Loop |
| 1079 | |
| 1080 | ldp x19,x20,[sp,#16] |
| 1081 | ldp x21,x22,[sp,#32] |
| 1082 | ldp x23,x24,[sp,#48] |
| 1083 | ldp x25,x26,[sp,#64] |
| 1084 | ldp x27,x28,[sp,#80] |
| 1085 | ldr x29,[sp],#96 |
| 1086 | ret |
| 1087 | .size sha1_block_data_order,.-sha1_block_data_order |
| 1088 | .type sha1_block_armv8,%function |
| 1089 | .align 6 |
| 1090 | sha1_block_armv8: |
| 1091 | .Lv8_entry: |
| 1092 | stp x29,x30,[sp,#-16]! |
| 1093 | add x29,sp,#0 |
| 1094 | |
| 1095 | adr x4,.Lconst |
| 1096 | eor v1.16b,v1.16b,v1.16b |
| 1097 | ld1 {v0.4s},[x0],#16 |
| 1098 | ld1 {v1.s}[0],[x0] |
| 1099 | sub x0,x0,#16 |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1100 | ld1 {v16.4s,v17.4s,v18.4s,v19.4s},[x4] |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1101 | |
| 1102 | .Loop_hw: |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1103 | ld1 {v4.16b,v5.16b,v6.16b,v7.16b},[x1],#64 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1104 | sub x2,x2,#1 |
| 1105 | rev32 v4.16b,v4.16b |
| 1106 | rev32 v5.16b,v5.16b |
| 1107 | |
| 1108 | add v20.4s,v16.4s,v4.4s |
| 1109 | rev32 v6.16b,v6.16b |
| 1110 | orr v22.16b,v0.16b,v0.16b // offload |
| 1111 | |
| 1112 | add v21.4s,v16.4s,v5.4s |
| 1113 | rev32 v7.16b,v7.16b |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1114 | .inst 0x5e280803 //sha1h v3.16b,v0.16b |
| 1115 | .inst 0x5e140020 //sha1c v0.16b,v1.16b,v20.4s // 0 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1116 | add v20.4s,v16.4s,v6.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1117 | .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b |
| 1118 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 1 |
| 1119 | .inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1120 | add v21.4s,v16.4s,v7.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1121 | .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b |
| 1122 | .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b |
| 1123 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 2 |
| 1124 | .inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1125 | add v20.4s,v16.4s,v4.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1126 | .inst 0x5e281885 //sha1su1 v5.16b,v4.16b |
| 1127 | .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b |
| 1128 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 3 |
| 1129 | .inst 0x5e150060 //sha1c v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1130 | add v21.4s,v17.4s,v5.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1131 | .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b |
| 1132 | .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b |
| 1133 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 4 |
| 1134 | .inst 0x5e140040 //sha1c v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1135 | add v20.4s,v17.4s,v6.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1136 | .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b |
| 1137 | .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b |
| 1138 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 5 |
| 1139 | .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1140 | add v21.4s,v17.4s,v7.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1141 | .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b |
| 1142 | .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b |
| 1143 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 6 |
| 1144 | .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1145 | add v20.4s,v17.4s,v4.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1146 | .inst 0x5e281885 //sha1su1 v5.16b,v4.16b |
| 1147 | .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b |
| 1148 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 7 |
| 1149 | .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1150 | add v21.4s,v17.4s,v5.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1151 | .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b |
| 1152 | .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b |
| 1153 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 8 |
| 1154 | .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1155 | add v20.4s,v18.4s,v6.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1156 | .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b |
| 1157 | .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b |
| 1158 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 9 |
| 1159 | .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1160 | add v21.4s,v18.4s,v7.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1161 | .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b |
| 1162 | .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b |
| 1163 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 10 |
| 1164 | .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1165 | add v20.4s,v18.4s,v4.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1166 | .inst 0x5e281885 //sha1su1 v5.16b,v4.16b |
| 1167 | .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b |
| 1168 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 11 |
| 1169 | .inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1170 | add v21.4s,v18.4s,v5.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1171 | .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b |
| 1172 | .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b |
| 1173 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 12 |
| 1174 | .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1175 | add v20.4s,v18.4s,v6.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1176 | .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b |
| 1177 | .inst 0x5e0630a4 //sha1su0 v4.16b,v5.16b,v6.16b |
| 1178 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 13 |
| 1179 | .inst 0x5e152060 //sha1m v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1180 | add v21.4s,v19.4s,v7.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1181 | .inst 0x5e2818e4 //sha1su1 v4.16b,v7.16b |
| 1182 | .inst 0x5e0730c5 //sha1su0 v5.16b,v6.16b,v7.16b |
| 1183 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 14 |
| 1184 | .inst 0x5e142040 //sha1m v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1185 | add v20.4s,v19.4s,v4.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1186 | .inst 0x5e281885 //sha1su1 v5.16b,v4.16b |
| 1187 | .inst 0x5e0430e6 //sha1su0 v6.16b,v7.16b,v4.16b |
| 1188 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 15 |
| 1189 | .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1190 | add v21.4s,v19.4s,v5.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1191 | .inst 0x5e2818a6 //sha1su1 v6.16b,v5.16b |
| 1192 | .inst 0x5e053087 //sha1su0 v7.16b,v4.16b,v5.16b |
| 1193 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 16 |
| 1194 | .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1195 | add v20.4s,v19.4s,v6.4s |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1196 | .inst 0x5e2818c7 //sha1su1 v7.16b,v6.16b |
| 1197 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 17 |
| 1198 | .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1199 | add v21.4s,v19.4s,v7.4s |
| 1200 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1201 | .inst 0x5e280803 //sha1h v3.16b,v0.16b // 18 |
| 1202 | .inst 0x5e141040 //sha1p v0.16b,v2.16b,v20.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1203 | |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1204 | .inst 0x5e280802 //sha1h v2.16b,v0.16b // 19 |
| 1205 | .inst 0x5e151060 //sha1p v0.16b,v3.16b,v21.4s |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1206 | |
| 1207 | add v1.4s,v1.4s,v2.4s |
| 1208 | add v0.4s,v0.4s,v22.4s |
| 1209 | |
| 1210 | cbnz x2,.Loop_hw |
| 1211 | |
| 1212 | st1 {v0.4s},[x0],#16 |
| 1213 | st1 {v1.s}[0],[x0] |
| 1214 | |
| 1215 | ldr x29,[sp],#16 |
| 1216 | ret |
| 1217 | .size sha1_block_armv8,.-sha1_block_armv8 |
| 1218 | .align 6 |
| 1219 | .Lconst: |
| 1220 | .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999 //K_00_19 |
| 1221 | .long 0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1 //K_20_39 |
| 1222 | .long 0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc //K_40_59 |
| 1223 | .long 0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6 //K_60_79 |
| 1224 | .LOPENSSL_armcap_P: |
Robert Sloan | 8ff0355 | 2017-06-14 12:40:58 -0700 | [diff] [blame] | 1225 | #ifdef __ILP32__ |
| 1226 | .long OPENSSL_armcap_P-. |
| 1227 | #else |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1228 | .quad OPENSSL_armcap_P-. |
Robert Sloan | 8ff0355 | 2017-06-14 12:40:58 -0700 | [diff] [blame] | 1229 | #endif |
Adam Langley | e9ada86 | 2015-05-11 17:20:37 -0700 | [diff] [blame] | 1230 | .byte 83,72,65,49,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,56,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,111,114,103,62,0 |
| 1231 | .align 2 |
Adam Langley | d9e397b | 2015-01-22 14:27:53 -0800 | [diff] [blame] | 1232 | .align 2 |
| 1233 | .comm OPENSSL_armcap_P,4,4 |
David Benjamin | 4969cc9 | 2016-04-22 15:02:23 -0400 | [diff] [blame] | 1234 | #endif |
Robert Sloan | 726e9d1 | 2018-09-11 11:45:04 -0700 | [diff] [blame^] | 1235 | #endif // !OPENSSL_NO_ASM |