| OLD | NEW |
| 1 #if defined(__aarch64__) | 1 #if defined(__aarch64__) |
| 2 #include <openssl/arm_arch.h> | 2 #include <openssl/arm_arch.h> |
| 3 | 3 |
| 4 #if __ARM_MAX_ARCH__>=7 | 4 #if __ARM_MAX_ARCH__>=7 |
| 5 .text | 5 .text |
| 6 #if !defined(__clang__) | 6 #if !defined(__clang__) || defined(BORINGSSL_CLANG_SUPPORTS_DOT_ARCH) |
| 7 .arch armv8-a+crypto | 7 .arch armv8-a+crypto |
| 8 #endif | 8 #endif |
| 9 .align 5 | 9 .align 5 |
| 10 .Lrcon: | 10 .Lrcon: |
| 11 .long 0x01,0x01,0x01,0x01 | 11 .long 0x01,0x01,0x01,0x01 |
| 12 .long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d // rotate-n-splat | 12 .long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d // rotate-n-splat |
| 13 .long 0x1b,0x1b,0x1b,0x1b | 13 .long 0x1b,0x1b,0x1b,0x1b |
| 14 | 14 |
| 15 .globl» aes_v8_set_encrypt_key | 15 .globl» aes_hw_set_encrypt_key |
| 16 .hidden»aes_v8_set_encrypt_key | 16 .hidden»aes_hw_set_encrypt_key |
| 17 .type» aes_v8_set_encrypt_key,%function | 17 .type» aes_hw_set_encrypt_key,%function |
| 18 .align 5 | 18 .align 5 |
| 19 aes_v8_set_encrypt_key: | 19 aes_hw_set_encrypt_key: |
| 20 .Lenc_key: | 20 .Lenc_key: |
| 21 stp x29,x30,[sp,#-16]! | 21 stp x29,x30,[sp,#-16]! |
| 22 add x29,sp,#0 | 22 add x29,sp,#0 |
| 23 mov x3,#-1 | 23 mov x3,#-1 |
| 24 cmp x0,#0 | 24 cmp x0,#0 |
| 25 b.eq .Lenc_key_abort | 25 b.eq .Lenc_key_abort |
| 26 cmp x2,#0 | 26 cmp x2,#0 |
| 27 b.eq .Lenc_key_abort | 27 b.eq .Lenc_key_abort |
| 28 mov x3,#-2 | 28 mov x3,#-2 |
| 29 cmp w1,#128 | 29 cmp w1,#128 |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 b .Loop256 | 171 b .Loop256 |
| 172 | 172 |
| 173 .Ldone: | 173 .Ldone: |
| 174 str w12,[x2] | 174 str w12,[x2] |
| 175 mov x3,#0 | 175 mov x3,#0 |
| 176 | 176 |
| 177 .Lenc_key_abort: | 177 .Lenc_key_abort: |
| 178 mov x0,x3 // return value | 178 mov x0,x3 // return value |
| 179 ldr x29,[sp],#16 | 179 ldr x29,[sp],#16 |
| 180 ret | 180 ret |
| 181 .size» aes_v8_set_encrypt_key,.-aes_v8_set_encrypt_key | 181 .size» aes_hw_set_encrypt_key,.-aes_hw_set_encrypt_key |
| 182 | 182 |
| 183 .globl» aes_v8_set_decrypt_key | 183 .globl» aes_hw_set_decrypt_key |
| 184 .hidden»aes_v8_set_decrypt_key | 184 .hidden»aes_hw_set_decrypt_key |
| 185 .type» aes_v8_set_decrypt_key,%function | 185 .type» aes_hw_set_decrypt_key,%function |
| 186 .align 5 | 186 .align 5 |
| 187 aes_v8_set_decrypt_key: | 187 aes_hw_set_decrypt_key: |
| 188 stp x29,x30,[sp,#-16]! | 188 stp x29,x30,[sp,#-16]! |
| 189 add x29,sp,#0 | 189 add x29,sp,#0 |
| 190 bl .Lenc_key | 190 bl .Lenc_key |
| 191 | 191 |
| 192 cmp x0,#0 | 192 cmp x0,#0 |
| 193 b.ne .Ldec_key_abort | 193 b.ne .Ldec_key_abort |
| 194 | 194 |
| 195 sub x2,x2,#240 // restore original x2 | 195 sub x2,x2,#240 // restore original x2 |
| 196 mov x4,#-16 | 196 mov x4,#-16 |
| 197 add x0,x2,x12,lsl#4 // end of key schedule | 197 add x0,x2,x12,lsl#4 // end of key schedule |
| (...skipping 14 matching lines...) Expand all Loading... |
| 212 b.hi .Loop_imc | 212 b.hi .Loop_imc |
| 213 | 213 |
| 214 ld1 {v0.4s},[x2] | 214 ld1 {v0.4s},[x2] |
| 215 aesimc v0.16b,v0.16b | 215 aesimc v0.16b,v0.16b |
| 216 st1 {v0.4s},[x0] | 216 st1 {v0.4s},[x0] |
| 217 | 217 |
| 218 eor x0,x0,x0 // return value | 218 eor x0,x0,x0 // return value |
| 219 .Ldec_key_abort: | 219 .Ldec_key_abort: |
| 220 ldp x29,x30,[sp],#16 | 220 ldp x29,x30,[sp],#16 |
| 221 ret | 221 ret |
| 222 .size» aes_v8_set_decrypt_key,.-aes_v8_set_decrypt_key | 222 .size» aes_hw_set_decrypt_key,.-aes_hw_set_decrypt_key |
| 223 .globl» aes_v8_encrypt | 223 .globl» aes_hw_encrypt |
| 224 .hidden»aes_v8_encrypt | 224 .hidden»aes_hw_encrypt |
| 225 .type» aes_v8_encrypt,%function | 225 .type» aes_hw_encrypt,%function |
| 226 .align 5 | 226 .align 5 |
| 227 aes_v8_encrypt: | 227 aes_hw_encrypt: |
| 228 ldr w3,[x2,#240] | 228 ldr w3,[x2,#240] |
| 229 ld1 {v0.4s},[x2],#16 | 229 ld1 {v0.4s},[x2],#16 |
| 230 ld1 {v2.16b},[x0] | 230 ld1 {v2.16b},[x0] |
| 231 sub w3,w3,#2 | 231 sub w3,w3,#2 |
| 232 ld1 {v1.4s},[x2],#16 | 232 ld1 {v1.4s},[x2],#16 |
| 233 | 233 |
| 234 .Loop_enc: | 234 .Loop_enc: |
| 235 aese v2.16b,v0.16b | 235 aese v2.16b,v0.16b |
| 236 aesmc v2.16b,v2.16b | 236 aesmc v2.16b,v2.16b |
| 237 ld1 {v0.4s},[x2],#16 | 237 ld1 {v0.4s},[x2],#16 |
| 238 subs w3,w3,#2 | 238 subs w3,w3,#2 |
| 239 aese v2.16b,v1.16b | 239 aese v2.16b,v1.16b |
| 240 aesmc v2.16b,v2.16b | 240 aesmc v2.16b,v2.16b |
| 241 ld1 {v1.4s},[x2],#16 | 241 ld1 {v1.4s},[x2],#16 |
| 242 b.gt .Loop_enc | 242 b.gt .Loop_enc |
| 243 | 243 |
| 244 aese v2.16b,v0.16b | 244 aese v2.16b,v0.16b |
| 245 aesmc v2.16b,v2.16b | 245 aesmc v2.16b,v2.16b |
| 246 ld1 {v0.4s},[x2] | 246 ld1 {v0.4s},[x2] |
| 247 aese v2.16b,v1.16b | 247 aese v2.16b,v1.16b |
| 248 eor v2.16b,v2.16b,v0.16b | 248 eor v2.16b,v2.16b,v0.16b |
| 249 | 249 |
| 250 st1 {v2.16b},[x1] | 250 st1 {v2.16b},[x1] |
| 251 ret | 251 ret |
| 252 .size» aes_v8_encrypt,.-aes_v8_encrypt | 252 .size» aes_hw_encrypt,.-aes_hw_encrypt |
| 253 .globl» aes_v8_decrypt | 253 .globl» aes_hw_decrypt |
| 254 .hidden»aes_v8_decrypt | 254 .hidden»aes_hw_decrypt |
| 255 .type» aes_v8_decrypt,%function | 255 .type» aes_hw_decrypt,%function |
| 256 .align 5 | 256 .align 5 |
| 257 aes_v8_decrypt: | 257 aes_hw_decrypt: |
| 258 ldr w3,[x2,#240] | 258 ldr w3,[x2,#240] |
| 259 ld1 {v0.4s},[x2],#16 | 259 ld1 {v0.4s},[x2],#16 |
| 260 ld1 {v2.16b},[x0] | 260 ld1 {v2.16b},[x0] |
| 261 sub w3,w3,#2 | 261 sub w3,w3,#2 |
| 262 ld1 {v1.4s},[x2],#16 | 262 ld1 {v1.4s},[x2],#16 |
| 263 | 263 |
| 264 .Loop_dec: | 264 .Loop_dec: |
| 265 aesd v2.16b,v0.16b | 265 aesd v2.16b,v0.16b |
| 266 aesimc v2.16b,v2.16b | 266 aesimc v2.16b,v2.16b |
| 267 ld1 {v0.4s},[x2],#16 | 267 ld1 {v0.4s},[x2],#16 |
| 268 subs w3,w3,#2 | 268 subs w3,w3,#2 |
| 269 aesd v2.16b,v1.16b | 269 aesd v2.16b,v1.16b |
| 270 aesimc v2.16b,v2.16b | 270 aesimc v2.16b,v2.16b |
| 271 ld1 {v1.4s},[x2],#16 | 271 ld1 {v1.4s},[x2],#16 |
| 272 b.gt .Loop_dec | 272 b.gt .Loop_dec |
| 273 | 273 |
| 274 aesd v2.16b,v0.16b | 274 aesd v2.16b,v0.16b |
| 275 aesimc v2.16b,v2.16b | 275 aesimc v2.16b,v2.16b |
| 276 ld1 {v0.4s},[x2] | 276 ld1 {v0.4s},[x2] |
| 277 aesd v2.16b,v1.16b | 277 aesd v2.16b,v1.16b |
| 278 eor v2.16b,v2.16b,v0.16b | 278 eor v2.16b,v2.16b,v0.16b |
| 279 | 279 |
| 280 st1 {v2.16b},[x1] | 280 st1 {v2.16b},[x1] |
| 281 ret | 281 ret |
| 282 .size» aes_v8_decrypt,.-aes_v8_decrypt | 282 .size» aes_hw_decrypt,.-aes_hw_decrypt |
| 283 .globl» aes_v8_cbc_encrypt | 283 .globl» aes_hw_cbc_encrypt |
| 284 .hidden»aes_v8_cbc_encrypt | 284 .hidden»aes_hw_cbc_encrypt |
| 285 .type» aes_v8_cbc_encrypt,%function | 285 .type» aes_hw_cbc_encrypt,%function |
| 286 .align 5 | 286 .align 5 |
| 287 aes_v8_cbc_encrypt: | 287 aes_hw_cbc_encrypt: |
| 288 stp x29,x30,[sp,#-16]! | 288 stp x29,x30,[sp,#-16]! |
| 289 add x29,sp,#0 | 289 add x29,sp,#0 |
| 290 subs x2,x2,#16 | 290 subs x2,x2,#16 |
| 291 mov x8,#16 | 291 mov x8,#16 |
| 292 b.lo .Lcbc_abort | 292 b.lo .Lcbc_abort |
| 293 csel x8,xzr,x8,eq | 293 csel x8,xzr,x8,eq |
| 294 | 294 |
| 295 cmp w5,#0 // en- or decrypting? | 295 cmp w5,#0 // en- or decrypting? |
| 296 ldr w5,[x3,#240] | 296 ldr w5,[x3,#240] |
| 297 and x2,x2,#-16 | 297 and x2,x2,#-16 |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 .Lcbc_dec_one: | 563 .Lcbc_dec_one: |
| 564 eor v5.16b,v5.16b,v18.16b | 564 eor v5.16b,v5.16b,v18.16b |
| 565 orr v6.16b,v19.16b,v19.16b | 565 orr v6.16b,v19.16b,v19.16b |
| 566 st1 {v5.16b},[x1],#16 | 566 st1 {v5.16b},[x1],#16 |
| 567 | 567 |
| 568 .Lcbc_done: | 568 .Lcbc_done: |
| 569 st1 {v6.16b},[x4] | 569 st1 {v6.16b},[x4] |
| 570 .Lcbc_abort: | 570 .Lcbc_abort: |
| 571 ldr x29,[sp],#16 | 571 ldr x29,[sp],#16 |
| 572 ret | 572 ret |
| 573 .size» aes_v8_cbc_encrypt,.-aes_v8_cbc_encrypt | 573 .size» aes_hw_cbc_encrypt,.-aes_hw_cbc_encrypt |
| 574 .globl» aes_v8_ctr32_encrypt_blocks | 574 .globl» aes_hw_ctr32_encrypt_blocks |
| 575 .hidden»aes_v8_ctr32_encrypt_blocks | 575 .hidden»aes_hw_ctr32_encrypt_blocks |
| 576 .type» aes_v8_ctr32_encrypt_blocks,%function | 576 .type» aes_hw_ctr32_encrypt_blocks,%function |
| 577 .align 5 | 577 .align 5 |
| 578 aes_v8_ctr32_encrypt_blocks: | 578 aes_hw_ctr32_encrypt_blocks: |
| 579 stp x29,x30,[sp,#-16]! | 579 stp x29,x30,[sp,#-16]! |
| 580 add x29,sp,#0 | 580 add x29,sp,#0 |
| 581 ldr w5,[x3,#240] | 581 ldr w5,[x3,#240] |
| 582 | 582 |
| 583 ldr w8, [x4, #12] | 583 ldr w8, [x4, #12] |
| 584 ld1 {v0.4s},[x4] | 584 ld1 {v0.4s},[x4] |
| 585 | 585 |
| 586 ld1 {v16.4s,v17.4s},[x3] // load key schedule... | 586 ld1 {v16.4s,v17.4s},[x3] // load key schedule... |
| 587 sub w5,w5,#4 | 587 sub w5,w5,#4 |
| 588 mov x12,#16 | 588 mov x12,#16 |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 745 cmp x2,#1 | 745 cmp x2,#1 |
| 746 eor v2.16b,v2.16b,v0.16b | 746 eor v2.16b,v2.16b,v0.16b |
| 747 eor v3.16b,v3.16b,v1.16b | 747 eor v3.16b,v3.16b,v1.16b |
| 748 st1 {v2.16b},[x1],#16 | 748 st1 {v2.16b},[x1],#16 |
| 749 b.eq .Lctr32_done | 749 b.eq .Lctr32_done |
| 750 st1 {v3.16b},[x1] | 750 st1 {v3.16b},[x1] |
| 751 | 751 |
| 752 .Lctr32_done: | 752 .Lctr32_done: |
| 753 ldr x29,[sp],#16 | 753 ldr x29,[sp],#16 |
| 754 ret | 754 ret |
| 755 .size» aes_v8_ctr32_encrypt_blocks,.-aes_v8_ctr32_encrypt_blocks | 755 .size» aes_hw_ctr32_encrypt_blocks,.-aes_hw_ctr32_encrypt_blocks |
| 756 #endif | 756 #endif |
| 757 #endif | 757 #endif |
| OLD | NEW |