From 2bcb4efb5b6ac2551f99faaf4f7199e7d2f13ef9 Mon Sep 17 00:00:00 2001 From: Sean Parkinson Date: Sat, 4 Jul 2026 17:44:36 +1000 Subject: [PATCH] ARM64 Windows: Add assembly Add assembly generated for Windows ARM64. Add build option to project files. Add CI loops. --- wolfcrypt/src/fe_x25519_asm.asm | 18 + wolfcrypt/src/port/arm/armv8-aes-asm.asm | 85346 ++++++++-------- wolfcrypt/src/port/arm/armv8-chacha-asm.asm | 1256 +- wolfcrypt/src/port/arm/armv8-curve25519.asm | 10 +- wolfcrypt/src/port/arm/armv8-mlkem-asm.asm | 18214 ++-- wolfcrypt/src/port/arm/armv8-poly1305-asm.asm | 396 +- wolfcrypt/src/port/arm/armv8-sha256-asm.asm | 622 +- wolfcrypt/src/port/arm/armv8-sha3-asm.asm | 200 +- wolfcrypt/src/port/arm/armv8-sha512-asm.asm | 1296 +- wolfcrypt/src/wc_mldsa_asm.asm | 160 + wolfssl-VS2022.vcxproj | 2 +- wolfssl.vcxproj | 2 +- wolfssl/wolfcrypt/wc_port.h | 4 + 13 files changed, 53858 insertions(+), 53668 deletions(-) diff --git a/wolfcrypt/src/fe_x25519_asm.asm b/wolfcrypt/src/fe_x25519_asm.asm index fa3e671ba1..c5f961b8e2 100644 --- a/wolfcrypt/src/fe_x25519_asm.asm +++ b/wolfcrypt/src/fe_x25519_asm.asm @@ -4631,6 +4631,15 @@ L_curve25519_x64_bits: adc r11, r14 adc r12, r15 adc r13, rdi + mov rbp, 9223372036854775807 + mov rax, r13 + sar rax, 63 + and rax, 19 + and r13, rbp + add rcx, rax + adc r11, 0 + adc r12, 0 + adc r13, 0 ; Store mov QWORD PTR [rsp+64], rcx mov QWORD PTR [rsp+72], r11 @@ -14299,6 +14308,15 @@ L_curve25519_avx2_bits: adcx r13, rbx adox r14, rsi adcx r14, rcx + mov rcx, 9223372036854775807 + mov rdx, r14 + sar rdx, 63 + and rdx, 19 + and r14, rcx + add r11, rdx + adc r12, 0 + adc r13, 0 + adc r14, 0 ; Store mov QWORD PTR [rsp+64], r11 mov QWORD PTR [rsp+72], r12 diff --git a/wolfcrypt/src/port/arm/armv8-aes-asm.asm b/wolfcrypt/src/port/arm/armv8-aes-asm.asm index d202cded52..b6155ace79 100644 --- a/wolfcrypt/src/port/arm/armv8-aes-asm.asm +++ b/wolfcrypt/src/port/arm/armv8-aes-asm.asm @@ -41,10 +41,10 @@ AES_set_key_AARCH64 PROC lsr x5, x4, #32 lsr x7, x6, #32 lsr x9, x8, #32 - dup v1.4s, w9 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w9 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #1 eor w4, w4, w12 @@ -56,10 +56,10 @@ AES_set_key_AARCH64 PROC stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 - dup v1.4s, w9 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w9 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #2 eor w4, w4, w12 @@ -71,10 +71,10 @@ AES_set_key_AARCH64 PROC stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 - dup v1.4s, w9 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w9 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #4 eor w4, w4, w12 @@ -86,10 +86,10 @@ AES_set_key_AARCH64 PROC stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 - dup v1.4s, w9 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w9 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #8 eor w4, w4, w12 @@ -101,10 +101,10 @@ AES_set_key_AARCH64 PROC stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 - dup v1.4s, w9 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w9 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #16 eor w4, w4, w12 @@ -116,10 +116,10 @@ AES_set_key_AARCH64 PROC stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 - dup v1.4s, w9 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w9 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #32 eor w4, w4, w12 @@ -131,10 +131,10 @@ AES_set_key_AARCH64 PROC stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 - dup v1.4s, w9 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w9 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #0x40 eor w4, w4, w12 @@ -146,10 +146,10 @@ AES_set_key_AARCH64 PROC stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 - dup v1.4s, w9 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w9 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #0x80 eor w4, w4, w12 @@ -161,43 +161,43 @@ AES_set_key_AARCH64 PROC cmp x3, #0 beq L_aes_set_key_arm64_crypto_done sub x2, x2, #0xd0 - ldur q0, [x2] - ldur q1, [x2, #192] - stur q1, [x2] - stur q0, [x2, #192] - ldur q0, [x2, #16] - ldur q1, [x2, #176] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #16] - stur q0, [x2, #176] - ldur q0, [x2, #32] - ldur q1, [x2, #160] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #32] - stur q0, [x2, #160] - ldur q0, [x2, #48] - ldur q1, [x2, #144] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #48] - stur q0, [x2, #144] - ldur q0, [x2, #64] - ldur q1, [x2, #128] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #64] - stur q0, [x2, #128] - ldur q0, [x2, #80] - ldur q1, [x2, #112] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #80] - stur q0, [x2, #112] - ldur q0, [x2, #96] - aesimc v0.16b, v0.16b - stur q0, [x2, #96] + ldur Q0, [x2] + ldur Q1, [x2, #192] + stur Q1, [x2] + stur Q0, [x2, #192] + ldur Q0, [x2, #16] + ldur Q1, [x2, #176] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #16] + stur Q0, [x2, #176] + ldur Q0, [x2, #32] + ldur Q1, [x2, #160] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #32] + stur Q0, [x2, #160] + ldur Q0, [x2, #48] + ldur Q1, [x2, #144] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #48] + stur Q0, [x2, #144] + ldur Q0, [x2, #64] + ldur Q1, [x2, #128] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #64] + stur Q0, [x2, #128] + ldur Q0, [x2, #80] + ldur Q1, [x2, #112] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #80] + stur Q0, [x2, #112] + ldur Q0, [x2, #96] + aesimc V0.16B, V0.16B + stur Q0, [x2, #96] b L_aes_set_key_arm64_crypto_done L_aes_set_key_arm64_crypto_start_256 ldr x4, [x0], #8 @@ -210,20 +210,20 @@ L_aes_set_key_arm64_crypto_start_256 lsr x7, x6, #32 lsr x9, x8, #32 lsr x11, x10, #32 - dup v1.4s, w11 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w11 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #1 eor w4, w4, w12 eor w5, w5, w4 eor w6, w6, w5 eor w7, w7, w6 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] eor w8, w8, w12 eor w9, w9, w8 eor w10, w10, w9 @@ -232,20 +232,20 @@ L_aes_set_key_arm64_crypto_start_256 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 stp w10, w11, [x2], #8 - dup v1.4s, w11 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w11 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #2 eor w4, w4, w12 eor w5, w5, w4 eor w6, w6, w5 eor w7, w7, w6 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] eor w8, w8, w12 eor w9, w9, w8 eor w10, w10, w9 @@ -254,20 +254,20 @@ L_aes_set_key_arm64_crypto_start_256 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 stp w10, w11, [x2], #8 - dup v1.4s, w11 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w11 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #4 eor w4, w4, w12 eor w5, w5, w4 eor w6, w6, w5 eor w7, w7, w6 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] eor w8, w8, w12 eor w9, w9, w8 eor w10, w10, w9 @@ -276,20 +276,20 @@ L_aes_set_key_arm64_crypto_start_256 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 stp w10, w11, [x2], #8 - dup v1.4s, w11 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w11 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #8 eor w4, w4, w12 eor w5, w5, w4 eor w6, w6, w5 eor w7, w7, w6 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] eor w8, w8, w12 eor w9, w9, w8 eor w10, w10, w9 @@ -298,20 +298,20 @@ L_aes_set_key_arm64_crypto_start_256 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 stp w10, w11, [x2], #8 - dup v1.4s, w11 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w11 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #16 eor w4, w4, w12 eor w5, w5, w4 eor w6, w6, w5 eor w7, w7, w6 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] eor w8, w8, w12 eor w9, w9, w8 eor w10, w10, w9 @@ -320,20 +320,20 @@ L_aes_set_key_arm64_crypto_start_256 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 stp w10, w11, [x2], #8 - dup v1.4s, w11 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w11 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #32 eor w4, w4, w12 eor w5, w5, w4 eor w6, w6, w5 eor w7, w7, w6 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] eor w8, w8, w12 eor w9, w9, w8 eor w10, w10, w9 @@ -342,10 +342,10 @@ L_aes_set_key_arm64_crypto_start_256 stp w6, w7, [x2], #8 stp w8, w9, [x2], #8 stp w10, w11, [x2], #8 - dup v1.4s, w11 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w11 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #0x40 eor w4, w4, w12 @@ -357,49 +357,49 @@ L_aes_set_key_arm64_crypto_start_256 cmp x3, #0 beq L_aes_set_key_arm64_crypto_done sub x2, x2, #0xf0 - ldur q0, [x2] - ldur q1, [x2, #224] - stur q1, [x2] - stur q0, [x2, #224] - ldur q0, [x2, #16] - ldur q1, [x2, #208] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #16] - stur q0, [x2, #208] - ldur q0, [x2, #32] - ldur q1, [x2, #192] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #32] - stur q0, [x2, #192] - ldur q0, [x2, #48] - ldur q1, [x2, #176] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #48] - stur q0, [x2, #176] - ldur q0, [x2, #64] - ldur q1, [x2, #160] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #64] - stur q0, [x2, #160] - ldur q0, [x2, #80] - ldur q1, [x2, #144] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #80] - stur q0, [x2, #144] - ldur q0, [x2, #96] - ldur q1, [x2, #128] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #96] - stur q0, [x2, #128] - ldur q0, [x2, #112] - aesimc v0.16b, v0.16b - stur q0, [x2, #112] + ldur Q0, [x2] + ldur Q1, [x2, #224] + stur Q1, [x2] + stur Q0, [x2, #224] + ldur Q0, [x2, #16] + ldur Q1, [x2, #208] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #16] + stur Q0, [x2, #208] + ldur Q0, [x2, #32] + ldur Q1, [x2, #192] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #32] + stur Q0, [x2, #192] + ldur Q0, [x2, #48] + ldur Q1, [x2, #176] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #48] + stur Q0, [x2, #176] + ldur Q0, [x2, #64] + ldur Q1, [x2, #160] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #64] + stur Q0, [x2, #160] + ldur Q0, [x2, #80] + ldur Q1, [x2, #144] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #80] + stur Q0, [x2, #144] + ldur Q0, [x2, #96] + ldur Q1, [x2, #128] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #96] + stur Q0, [x2, #128] + ldur Q0, [x2, #112] + aesimc V0.16B, V0.16B + stur Q0, [x2, #112] b L_aes_set_key_arm64_crypto_done L_aes_set_key_arm64_crypto_start_128 ldr x4, [x0], #8 @@ -407,10 +407,10 @@ L_aes_set_key_arm64_crypto_start_128 stp x4, x6, [x2], #16 lsr x5, x4, #32 lsr x7, x6, #32 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #1 eor w4, w4, w12 @@ -419,10 +419,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #2 eor w4, w4, w12 @@ -431,10 +431,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #4 eor w4, w4, w12 @@ -443,10 +443,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #8 eor w4, w4, w12 @@ -455,10 +455,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #16 eor w4, w4, w12 @@ -467,10 +467,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #32 eor w4, w4, w12 @@ -479,10 +479,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #0x40 eor w4, w4, w12 @@ -491,10 +491,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] ror w12, w12, #8 eor w4, w4, #0x80 eor w4, w4, w12 @@ -503,10 +503,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] mov w13, #27 ror w12, w12, #8 eor w4, w4, w13 @@ -516,10 +516,10 @@ L_aes_set_key_arm64_crypto_start_128 eor w7, w7, w6 stp w4, w5, [x2], #8 stp w6, w7, [x2], #8 - dup v1.4s, w7 - movi v0.16b, #0 - aese v0.16b, v1.16b - mov w12, v0.s[0] + dup V1.4S, w7 + movi V0.16B, #0 + aese V0.16B, V1.16B + mov w12, V0.S[0] mov w13, #54 ror w12, w12, #8 eor w4, w4, w13 @@ -532,37 +532,37 @@ L_aes_set_key_arm64_crypto_start_128 cmp x3, #0 beq L_aes_set_key_arm64_crypto_done sub x2, x2, #0xb0 - ldur q0, [x2] - ldur q1, [x2, #160] - stur q1, [x2] - stur q0, [x2, #160] - ldur q0, [x2, #16] - ldur q1, [x2, #144] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #16] - stur q0, [x2, #144] - ldur q0, [x2, #32] - ldur q1, [x2, #128] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #32] - stur q0, [x2, #128] - ldur q0, [x2, #48] - ldur q1, [x2, #112] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #48] - stur q0, [x2, #112] - ldur q0, [x2, #64] - ldur q1, [x2, #96] - aesimc v0.16b, v0.16b - aesimc v1.16b, v1.16b - stur q1, [x2, #64] - stur q0, [x2, #96] - ldur q0, [x2, #80] - aesimc v0.16b, v0.16b - stur q0, [x2, #80] + ldur Q0, [x2] + ldur Q1, [x2, #160] + stur Q1, [x2] + stur Q0, [x2, #160] + ldur Q0, [x2, #16] + ldur Q1, [x2, #144] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #16] + stur Q0, [x2, #144] + ldur Q0, [x2, #32] + ldur Q1, [x2, #128] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #32] + stur Q0, [x2, #128] + ldur Q0, [x2, #48] + ldur Q1, [x2, #112] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #48] + stur Q0, [x2, #112] + ldur Q0, [x2, #64] + ldur Q1, [x2, #96] + aesimc V0.16B, V0.16B + aesimc V1.16B, V1.16B + stur Q1, [x2, #64] + stur Q0, [x2, #96] + ldur Q0, [x2, #80] + aesimc V0.16B, V0.16B + stur Q0, [x2, #80] L_aes_set_key_arm64_crypto_done ret ENDP @@ -571,47 +571,47 @@ L_aes_set_key_arm64_crypto_done ALIGN 4 EXPORT AES_encrypt_AARCH64 AES_encrypt_AARCH64 PROC - ld1 {v0.16b}, [x0] - ld1 {v1.2d, v2.2d, v3.2d, v4.2d}, [x2], #0x40 - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b - aesmc v0.16b, v0.16b - aese v0.16b, v3.16b - aesmc v0.16b, v0.16b - aese v0.16b, v4.16b - aesmc v0.16b, v0.16b - ld1 {v1.2d, v2.2d, v3.2d, v4.2d}, [x2], #0x40 - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b - aesmc v0.16b, v0.16b - aese v0.16b, v3.16b - aesmc v0.16b, v0.16b - aese v0.16b, v4.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B}, [x0] + ld1 {V1.2D, V2.2D, V3.2D, V4.2D}, [x2], #0x40 + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B + aesmc V0.16B, V0.16B + aese V0.16B, V3.16B + aesmc V0.16B, V0.16B + aese V0.16B, V4.16B + aesmc V0.16B, V0.16B + ld1 {V1.2D, V2.2D, V3.2D, V4.2D}, [x2], #0x40 + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B + aesmc V0.16B, V0.16B + aese V0.16B, V3.16B + aesmc V0.16B, V0.16B + aese V0.16B, V4.16B + aesmc V0.16B, V0.16B subs w3, w3, #10 - ld1 {v1.2d, v2.2d}, [x2], #32 - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b + ld1 {V1.2D, V2.2D}, [x2], #32 + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B beq L_aes_encrypt_arm64_crypto_round_done - ld1 {v1.2d, v2.2d}, [x2], #32 + ld1 {V1.2D, V2.2D}, [x2], #32 subs w3, w3, #2 - aesmc v0.16b, v0.16b - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b + aesmc V0.16B, V0.16B + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B beq L_aes_encrypt_arm64_crypto_round_done - ld1 {v1.2d, v2.2d}, [x2], #32 - aesmc v0.16b, v0.16b - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b + ld1 {V1.2D, V2.2D}, [x2], #32 + aesmc V0.16B, V0.16B + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B L_aes_encrypt_arm64_crypto_round_done - ld1 {v1.2d}, [x2] - eor v0.16b, v0.16b, v1.16b - st1 {v0.16b}, [x1] + ld1 {V1.2D}, [x2] + eor V0.16B, V0.16B, V1.16B + st1 {V0.16B}, [x1] ret ENDP ENDIF @@ -621,47 +621,47 @@ L_aes_encrypt_arm64_crypto_round_done ALIGN 4 EXPORT AES_decrypt_AARCH64 AES_decrypt_AARCH64 PROC - ld1 {v0.16b}, [x0] - ld1 {v1.2d, v2.2d, v3.2d, v4.2d}, [x2], #0x40 - aesd v0.16b, v1.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v2.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v3.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v4.16b - aesimc v0.16b, v0.16b - ld1 {v1.2d, v2.2d, v3.2d, v4.2d}, [x2], #0x40 - aesd v0.16b, v1.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v2.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v3.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v4.16b - aesimc v0.16b, v0.16b - ld1 {v1.2d, v2.2d}, [x2], #32 - aesd v0.16b, v1.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v2.16b + ld1 {V0.16B}, [x0] + ld1 {V1.2D, V2.2D, V3.2D, V4.2D}, [x2], #0x40 + aesd V0.16B, V1.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V2.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V3.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V4.16B + aesimc V0.16B, V0.16B + ld1 {V1.2D, V2.2D, V3.2D, V4.2D}, [x2], #0x40 + aesd V0.16B, V1.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V2.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V3.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V4.16B + aesimc V0.16B, V0.16B + ld1 {V1.2D, V2.2D}, [x2], #32 + aesd V0.16B, V1.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V2.16B subs w3, w3, #10 beq L_aes_decrypt_arm64_crypto_round_done - ld1 {v1.2d, v2.2d}, [x2], #32 - aesimc v0.16b, v0.16b - aesd v0.16b, v1.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v2.16b + ld1 {V1.2D, V2.2D}, [x2], #32 + aesimc V0.16B, V0.16B + aesd V0.16B, V1.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V2.16B subs w3, w3, #2 beq L_aes_decrypt_arm64_crypto_round_done - ld1 {v1.2d, v2.2d}, [x2], #32 - aesimc v0.16b, v0.16b - aesd v0.16b, v1.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v2.16b + ld1 {V1.2D, V2.2D}, [x2], #32 + aesimc V0.16B, V0.16B + aesd V0.16B, V1.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V2.16B L_aes_decrypt_arm64_crypto_round_done - ld1 {v1.2d}, [x2] - eor v0.16b, v0.16b, v1.16b - st1 {v0.16b}, [x1] + ld1 {V1.2D}, [x2] + eor V0.16B, V0.16B, V1.16B + st1 {V0.16B}, [x1] ret ENDP ENDIF @@ -673,859 +673,859 @@ L_aes_decrypt_arm64_crypto_round_done AES_encrypt_blocks_AARCH64 PROC stp x29, x30, [sp, #-32]! add x29, sp, #0 - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x3], #0x40 - ld1 {v24.2d, v25.2d, v26.2d}, [x3], #48 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x3], #0x40 + ld1 {V24.2D, V25.2D, V26.2D}, [x3], #48 lsr w2, w2, #4 cmp w4, #12 blt L_aes_encrypt_blocks_arm64_crypto_start_128 bgt L_aes_encrypt_blocks_arm64_crypto_start_256 ; AES_ECB_192 IF :LNOT::DEF:NO_AES_192 - ld1 {v27.2d, v28.2d}, [x3], #32 + ld1 {V27.2D, V28.2D}, [x3], #32 cmp w2, #1 beq L_aes_encrypt_blocks_arm64_crypto_192_start_1 cmp w2, #8 blt L_aes_encrypt_blocks_arm64_crypto_192_start_4 L_aes_encrypt_blocks_arm64_crypto_192_start_8 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v5.16b, v16.16b - aesmc v5.16b, v5.16b - aese v6.16b, v16.16b - aesmc v6.16b, v6.16b - aese v7.16b, v16.16b - aesmc v7.16b, v7.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v5.16b, v17.16b - aesmc v5.16b, v5.16b - aese v6.16b, v17.16b - aesmc v6.16b, v6.16b - aese v7.16b, v17.16b - aesmc v7.16b, v7.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v5.16b, v18.16b - aesmc v5.16b, v5.16b - aese v6.16b, v18.16b - aesmc v6.16b, v6.16b - aese v7.16b, v18.16b - aesmc v7.16b, v7.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v5.16b, v19.16b - aesmc v5.16b, v5.16b - aese v6.16b, v19.16b - aesmc v6.16b, v6.16b - aese v7.16b, v19.16b - aesmc v7.16b, v7.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v5.16b, v20.16b - aesmc v5.16b, v5.16b - aese v6.16b, v20.16b - aesmc v6.16b, v6.16b - aese v7.16b, v20.16b - aesmc v7.16b, v7.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v5.16b, v21.16b - aesmc v5.16b, v5.16b - aese v6.16b, v21.16b - aesmc v6.16b, v6.16b - aese v7.16b, v21.16b - aesmc v7.16b, v7.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v5.16b, v22.16b - aesmc v5.16b, v5.16b - aese v6.16b, v22.16b - aesmc v6.16b, v6.16b - aese v7.16b, v22.16b - aesmc v7.16b, v7.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v5.16b, v23.16b - aesmc v5.16b, v5.16b - aese v6.16b, v23.16b - aesmc v6.16b, v6.16b - aese v7.16b, v23.16b - aesmc v7.16b, v7.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v5.16b, v24.16b - aesmc v5.16b, v5.16b - aese v6.16b, v24.16b - aesmc v6.16b, v6.16b - aese v7.16b, v24.16b - aesmc v7.16b, v7.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v2.16b, v25.16b - aesmc v2.16b, v2.16b - aese v3.16b, v25.16b - aesmc v3.16b, v3.16b - aese v4.16b, v25.16b - aesmc v4.16b, v4.16b - aese v5.16b, v25.16b - aesmc v5.16b, v5.16b - aese v6.16b, v25.16b - aesmc v6.16b, v6.16b - aese v7.16b, v25.16b - aesmc v7.16b, v7.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v2.16b, v26.16b - aesmc v2.16b, v2.16b - aese v3.16b, v26.16b - aesmc v3.16b, v3.16b - aese v4.16b, v26.16b - aesmc v4.16b, v4.16b - aese v5.16b, v26.16b - aesmc v5.16b, v5.16b - aese v6.16b, v26.16b - aesmc v6.16b, v6.16b - aese v7.16b, v26.16b - aesmc v7.16b, v7.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aese v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b - aese v2.16b, v27.16b - eor v2.16b, v2.16b, v28.16b - aese v3.16b, v27.16b - eor v3.16b, v3.16b, v28.16b - aese v4.16b, v27.16b - eor v4.16b, v4.16b, v28.16b - aese v5.16b, v27.16b - eor v5.16b, v5.16b, v28.16b - aese v6.16b, v27.16b - eor v6.16b, v6.16b, v28.16b - aese v7.16b, v27.16b - eor v7.16b, v7.16b, v28.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V5.16B, V16.16B + aesmc V5.16B, V5.16B + aese V6.16B, V16.16B + aesmc V6.16B, V6.16B + aese V7.16B, V16.16B + aesmc V7.16B, V7.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V5.16B, V17.16B + aesmc V5.16B, V5.16B + aese V6.16B, V17.16B + aesmc V6.16B, V6.16B + aese V7.16B, V17.16B + aesmc V7.16B, V7.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V5.16B, V18.16B + aesmc V5.16B, V5.16B + aese V6.16B, V18.16B + aesmc V6.16B, V6.16B + aese V7.16B, V18.16B + aesmc V7.16B, V7.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V5.16B, V19.16B + aesmc V5.16B, V5.16B + aese V6.16B, V19.16B + aesmc V6.16B, V6.16B + aese V7.16B, V19.16B + aesmc V7.16B, V7.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V5.16B, V20.16B + aesmc V5.16B, V5.16B + aese V6.16B, V20.16B + aesmc V6.16B, V6.16B + aese V7.16B, V20.16B + aesmc V7.16B, V7.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V5.16B, V21.16B + aesmc V5.16B, V5.16B + aese V6.16B, V21.16B + aesmc V6.16B, V6.16B + aese V7.16B, V21.16B + aesmc V7.16B, V7.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V5.16B, V22.16B + aesmc V5.16B, V5.16B + aese V6.16B, V22.16B + aesmc V6.16B, V6.16B + aese V7.16B, V22.16B + aesmc V7.16B, V7.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V5.16B, V23.16B + aesmc V5.16B, V5.16B + aese V6.16B, V23.16B + aesmc V6.16B, V6.16B + aese V7.16B, V23.16B + aesmc V7.16B, V7.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V5.16B, V24.16B + aesmc V5.16B, V5.16B + aese V6.16B, V24.16B + aesmc V6.16B, V6.16B + aese V7.16B, V24.16B + aesmc V7.16B, V7.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V2.16B, V25.16B + aesmc V2.16B, V2.16B + aese V3.16B, V25.16B + aesmc V3.16B, V3.16B + aese V4.16B, V25.16B + aesmc V4.16B, V4.16B + aese V5.16B, V25.16B + aesmc V5.16B, V5.16B + aese V6.16B, V25.16B + aesmc V6.16B, V6.16B + aese V7.16B, V25.16B + aesmc V7.16B, V7.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V2.16B, V26.16B + aesmc V2.16B, V2.16B + aese V3.16B, V26.16B + aesmc V3.16B, V3.16B + aese V4.16B, V26.16B + aesmc V4.16B, V4.16B + aese V5.16B, V26.16B + aesmc V5.16B, V5.16B + aese V6.16B, V26.16B + aesmc V6.16B, V6.16B + aese V7.16B, V26.16B + aesmc V7.16B, V7.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aese V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B + aese V2.16B, V27.16B + eor V2.16B, V2.16B, V28.16B + aese V3.16B, V27.16B + eor V3.16B, V3.16B, V28.16B + aese V4.16B, V27.16B + eor V4.16B, V4.16B, V28.16B + aese V5.16B, V27.16B + eor V5.16B, V5.16B, V28.16B + aese V6.16B, V27.16B + eor V6.16B, V6.16B, V28.16B + aese V7.16B, V27.16B + eor V7.16B, V7.16B, V28.16B sub w2, w2, #8 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 - st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 + st1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 cmp w2, #8 bge L_aes_encrypt_blocks_arm64_crypto_192_start_8 L_aes_encrypt_blocks_arm64_crypto_192_start_4 cmp w2, #4 blt L_aes_encrypt_blocks_arm64_crypto_192_start_2 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v2.16b, v25.16b - aesmc v2.16b, v2.16b - aese v3.16b, v25.16b - aesmc v3.16b, v3.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v2.16b, v26.16b - aesmc v2.16b, v2.16b - aese v3.16b, v26.16b - aesmc v3.16b, v3.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aese v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b - aese v2.16b, v27.16b - eor v2.16b, v2.16b, v28.16b - aese v3.16b, v27.16b - eor v3.16b, v3.16b, v28.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V2.16B, V25.16B + aesmc V2.16B, V2.16B + aese V3.16B, V25.16B + aesmc V3.16B, V3.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V2.16B, V26.16B + aesmc V2.16B, V2.16B + aese V3.16B, V26.16B + aesmc V3.16B, V3.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aese V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B + aese V2.16B, V27.16B + eor V2.16B, V2.16B, V28.16B + aese V3.16B, V27.16B + eor V3.16B, V3.16B, V28.16B sub w2, w2, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 L_aes_encrypt_blocks_arm64_crypto_192_start_2 cmp w2, #2 blt L_aes_encrypt_blocks_arm64_crypto_192_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aese v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aese V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B sub w2, w2, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_encrypt_blocks_arm64_crypto_192_start_1 cbz w2, L_aes_encrypt_blocks_arm64_crypto_192_done - ld1 {v0.16b}, [x0], #16 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - st1 {v0.16b}, [x1], #16 + ld1 {V0.16B}, [x0], #16 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + st1 {V0.16B}, [x1], #16 L_aes_encrypt_blocks_arm64_crypto_192_done ENDIF b L_aes_encrypt_blocks_arm64_crypto_done ; AES_ECB_256 L_aes_encrypt_blocks_arm64_crypto_start_256 IF :LNOT::DEF:NO_AES_256 - ld1 {v27.2d, v28.2d, v29.2d, v30.2d}, [x3], #0x40 + ld1 {V27.2D, V28.2D, V29.2D, V30.2D}, [x3], #0x40 cmp w2, #1 beq L_aes_encrypt_blocks_arm64_crypto_256_start_1 cmp w2, #8 blt L_aes_encrypt_blocks_arm64_crypto_256_start_4 L_aes_encrypt_blocks_arm64_crypto_256_start_8 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v5.16b, v16.16b - aesmc v5.16b, v5.16b - aese v6.16b, v16.16b - aesmc v6.16b, v6.16b - aese v7.16b, v16.16b - aesmc v7.16b, v7.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v5.16b, v17.16b - aesmc v5.16b, v5.16b - aese v6.16b, v17.16b - aesmc v6.16b, v6.16b - aese v7.16b, v17.16b - aesmc v7.16b, v7.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v5.16b, v18.16b - aesmc v5.16b, v5.16b - aese v6.16b, v18.16b - aesmc v6.16b, v6.16b - aese v7.16b, v18.16b - aesmc v7.16b, v7.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v5.16b, v19.16b - aesmc v5.16b, v5.16b - aese v6.16b, v19.16b - aesmc v6.16b, v6.16b - aese v7.16b, v19.16b - aesmc v7.16b, v7.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v5.16b, v20.16b - aesmc v5.16b, v5.16b - aese v6.16b, v20.16b - aesmc v6.16b, v6.16b - aese v7.16b, v20.16b - aesmc v7.16b, v7.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v5.16b, v21.16b - aesmc v5.16b, v5.16b - aese v6.16b, v21.16b - aesmc v6.16b, v6.16b - aese v7.16b, v21.16b - aesmc v7.16b, v7.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v5.16b, v22.16b - aesmc v5.16b, v5.16b - aese v6.16b, v22.16b - aesmc v6.16b, v6.16b - aese v7.16b, v22.16b - aesmc v7.16b, v7.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v5.16b, v23.16b - aesmc v5.16b, v5.16b - aese v6.16b, v23.16b - aesmc v6.16b, v6.16b - aese v7.16b, v23.16b - aesmc v7.16b, v7.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v5.16b, v24.16b - aesmc v5.16b, v5.16b - aese v6.16b, v24.16b - aesmc v6.16b, v6.16b - aese v7.16b, v24.16b - aesmc v7.16b, v7.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v2.16b, v25.16b - aesmc v2.16b, v2.16b - aese v3.16b, v25.16b - aesmc v3.16b, v3.16b - aese v4.16b, v25.16b - aesmc v4.16b, v4.16b - aese v5.16b, v25.16b - aesmc v5.16b, v5.16b - aese v6.16b, v25.16b - aesmc v6.16b, v6.16b - aese v7.16b, v25.16b - aesmc v7.16b, v7.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v2.16b, v26.16b - aesmc v2.16b, v2.16b - aese v3.16b, v26.16b - aesmc v3.16b, v3.16b - aese v4.16b, v26.16b - aesmc v4.16b, v4.16b - aese v5.16b, v26.16b - aesmc v5.16b, v5.16b - aese v6.16b, v26.16b - aesmc v6.16b, v6.16b - aese v7.16b, v26.16b - aesmc v7.16b, v7.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v1.16b, v27.16b - aesmc v1.16b, v1.16b - aese v2.16b, v27.16b - aesmc v2.16b, v2.16b - aese v3.16b, v27.16b - aesmc v3.16b, v3.16b - aese v4.16b, v27.16b - aesmc v4.16b, v4.16b - aese v5.16b, v27.16b - aesmc v5.16b, v5.16b - aese v6.16b, v27.16b - aesmc v6.16b, v6.16b - aese v7.16b, v27.16b - aesmc v7.16b, v7.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v1.16b, v28.16b - aesmc v1.16b, v1.16b - aese v2.16b, v28.16b - aesmc v2.16b, v2.16b - aese v3.16b, v28.16b - aesmc v3.16b, v3.16b - aese v4.16b, v28.16b - aesmc v4.16b, v4.16b - aese v5.16b, v28.16b - aesmc v5.16b, v5.16b - aese v6.16b, v28.16b - aesmc v6.16b, v6.16b - aese v7.16b, v28.16b - aesmc v7.16b, v7.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aese v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b - aese v2.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - aese v3.16b, v29.16b - eor v3.16b, v3.16b, v30.16b - aese v4.16b, v29.16b - eor v4.16b, v4.16b, v30.16b - aese v5.16b, v29.16b - eor v5.16b, v5.16b, v30.16b - aese v6.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - aese v7.16b, v29.16b - eor v7.16b, v7.16b, v30.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V5.16B, V16.16B + aesmc V5.16B, V5.16B + aese V6.16B, V16.16B + aesmc V6.16B, V6.16B + aese V7.16B, V16.16B + aesmc V7.16B, V7.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V5.16B, V17.16B + aesmc V5.16B, V5.16B + aese V6.16B, V17.16B + aesmc V6.16B, V6.16B + aese V7.16B, V17.16B + aesmc V7.16B, V7.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V5.16B, V18.16B + aesmc V5.16B, V5.16B + aese V6.16B, V18.16B + aesmc V6.16B, V6.16B + aese V7.16B, V18.16B + aesmc V7.16B, V7.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V5.16B, V19.16B + aesmc V5.16B, V5.16B + aese V6.16B, V19.16B + aesmc V6.16B, V6.16B + aese V7.16B, V19.16B + aesmc V7.16B, V7.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V5.16B, V20.16B + aesmc V5.16B, V5.16B + aese V6.16B, V20.16B + aesmc V6.16B, V6.16B + aese V7.16B, V20.16B + aesmc V7.16B, V7.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V5.16B, V21.16B + aesmc V5.16B, V5.16B + aese V6.16B, V21.16B + aesmc V6.16B, V6.16B + aese V7.16B, V21.16B + aesmc V7.16B, V7.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V5.16B, V22.16B + aesmc V5.16B, V5.16B + aese V6.16B, V22.16B + aesmc V6.16B, V6.16B + aese V7.16B, V22.16B + aesmc V7.16B, V7.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V5.16B, V23.16B + aesmc V5.16B, V5.16B + aese V6.16B, V23.16B + aesmc V6.16B, V6.16B + aese V7.16B, V23.16B + aesmc V7.16B, V7.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V5.16B, V24.16B + aesmc V5.16B, V5.16B + aese V6.16B, V24.16B + aesmc V6.16B, V6.16B + aese V7.16B, V24.16B + aesmc V7.16B, V7.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V2.16B, V25.16B + aesmc V2.16B, V2.16B + aese V3.16B, V25.16B + aesmc V3.16B, V3.16B + aese V4.16B, V25.16B + aesmc V4.16B, V4.16B + aese V5.16B, V25.16B + aesmc V5.16B, V5.16B + aese V6.16B, V25.16B + aesmc V6.16B, V6.16B + aese V7.16B, V25.16B + aesmc V7.16B, V7.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V2.16B, V26.16B + aesmc V2.16B, V2.16B + aese V3.16B, V26.16B + aesmc V3.16B, V3.16B + aese V4.16B, V26.16B + aesmc V4.16B, V4.16B + aese V5.16B, V26.16B + aesmc V5.16B, V5.16B + aese V6.16B, V26.16B + aesmc V6.16B, V6.16B + aese V7.16B, V26.16B + aesmc V7.16B, V7.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V1.16B, V27.16B + aesmc V1.16B, V1.16B + aese V2.16B, V27.16B + aesmc V2.16B, V2.16B + aese V3.16B, V27.16B + aesmc V3.16B, V3.16B + aese V4.16B, V27.16B + aesmc V4.16B, V4.16B + aese V5.16B, V27.16B + aesmc V5.16B, V5.16B + aese V6.16B, V27.16B + aesmc V6.16B, V6.16B + aese V7.16B, V27.16B + aesmc V7.16B, V7.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V1.16B, V28.16B + aesmc V1.16B, V1.16B + aese V2.16B, V28.16B + aesmc V2.16B, V2.16B + aese V3.16B, V28.16B + aesmc V3.16B, V3.16B + aese V4.16B, V28.16B + aesmc V4.16B, V4.16B + aese V5.16B, V28.16B + aesmc V5.16B, V5.16B + aese V6.16B, V28.16B + aesmc V6.16B, V6.16B + aese V7.16B, V28.16B + aesmc V7.16B, V7.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aese V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B + aese V2.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + aese V3.16B, V29.16B + eor V3.16B, V3.16B, V30.16B + aese V4.16B, V29.16B + eor V4.16B, V4.16B, V30.16B + aese V5.16B, V29.16B + eor V5.16B, V5.16B, V30.16B + aese V6.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + aese V7.16B, V29.16B + eor V7.16B, V7.16B, V30.16B sub w2, w2, #8 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 - st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 + st1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 cmp w2, #8 bge L_aes_encrypt_blocks_arm64_crypto_256_start_8 L_aes_encrypt_blocks_arm64_crypto_256_start_4 cmp w2, #4 blt L_aes_encrypt_blocks_arm64_crypto_256_start_2 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v2.16b, v25.16b - aesmc v2.16b, v2.16b - aese v3.16b, v25.16b - aesmc v3.16b, v3.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v2.16b, v26.16b - aesmc v2.16b, v2.16b - aese v3.16b, v26.16b - aesmc v3.16b, v3.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v1.16b, v27.16b - aesmc v1.16b, v1.16b - aese v2.16b, v27.16b - aesmc v2.16b, v2.16b - aese v3.16b, v27.16b - aesmc v3.16b, v3.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v1.16b, v28.16b - aesmc v1.16b, v1.16b - aese v2.16b, v28.16b - aesmc v2.16b, v2.16b - aese v3.16b, v28.16b - aesmc v3.16b, v3.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aese v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b - aese v2.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - aese v3.16b, v29.16b - eor v3.16b, v3.16b, v30.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V2.16B, V25.16B + aesmc V2.16B, V2.16B + aese V3.16B, V25.16B + aesmc V3.16B, V3.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V2.16B, V26.16B + aesmc V2.16B, V2.16B + aese V3.16B, V26.16B + aesmc V3.16B, V3.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V1.16B, V27.16B + aesmc V1.16B, V1.16B + aese V2.16B, V27.16B + aesmc V2.16B, V2.16B + aese V3.16B, V27.16B + aesmc V3.16B, V3.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V1.16B, V28.16B + aesmc V1.16B, V1.16B + aese V2.16B, V28.16B + aesmc V2.16B, V2.16B + aese V3.16B, V28.16B + aesmc V3.16B, V3.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aese V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B + aese V2.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + aese V3.16B, V29.16B + eor V3.16B, V3.16B, V30.16B sub w2, w2, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 L_aes_encrypt_blocks_arm64_crypto_256_start_2 cmp w2, #2 blt L_aes_encrypt_blocks_arm64_crypto_256_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v1.16b, v27.16b - aesmc v1.16b, v1.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v1.16b, v28.16b - aesmc v1.16b, v1.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aese v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V1.16B, V27.16B + aesmc V1.16B, V1.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V1.16B, V28.16B + aesmc V1.16B, V1.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aese V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B sub w2, w2, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_encrypt_blocks_arm64_crypto_256_start_1 cbz w2, L_aes_encrypt_blocks_arm64_crypto_256_done - ld1 {v0.16b}, [x0], #16 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - st1 {v0.16b}, [x1], #16 + ld1 {V0.16B}, [x0], #16 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + st1 {V0.16B}, [x1], #16 L_aes_encrypt_blocks_arm64_crypto_256_done ENDIF b L_aes_encrypt_blocks_arm64_crypto_done @@ -1537,329 +1537,329 @@ L_aes_encrypt_blocks_arm64_crypto_start_128 cmp w2, #8 blt L_aes_encrypt_blocks_arm64_crypto_128_start_4 L_aes_encrypt_blocks_arm64_crypto_128_start_8 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v5.16b, v16.16b - aesmc v5.16b, v5.16b - aese v6.16b, v16.16b - aesmc v6.16b, v6.16b - aese v7.16b, v16.16b - aesmc v7.16b, v7.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v5.16b, v17.16b - aesmc v5.16b, v5.16b - aese v6.16b, v17.16b - aesmc v6.16b, v6.16b - aese v7.16b, v17.16b - aesmc v7.16b, v7.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v5.16b, v18.16b - aesmc v5.16b, v5.16b - aese v6.16b, v18.16b - aesmc v6.16b, v6.16b - aese v7.16b, v18.16b - aesmc v7.16b, v7.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v5.16b, v19.16b - aesmc v5.16b, v5.16b - aese v6.16b, v19.16b - aesmc v6.16b, v6.16b - aese v7.16b, v19.16b - aesmc v7.16b, v7.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v5.16b, v20.16b - aesmc v5.16b, v5.16b - aese v6.16b, v20.16b - aesmc v6.16b, v6.16b - aese v7.16b, v20.16b - aesmc v7.16b, v7.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v5.16b, v21.16b - aesmc v5.16b, v5.16b - aese v6.16b, v21.16b - aesmc v6.16b, v6.16b - aese v7.16b, v21.16b - aesmc v7.16b, v7.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v5.16b, v22.16b - aesmc v5.16b, v5.16b - aese v6.16b, v22.16b - aesmc v6.16b, v6.16b - aese v7.16b, v22.16b - aesmc v7.16b, v7.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v5.16b, v23.16b - aesmc v5.16b, v5.16b - aese v6.16b, v23.16b - aesmc v6.16b, v6.16b - aese v7.16b, v23.16b - aesmc v7.16b, v7.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v5.16b, v24.16b - aesmc v5.16b, v5.16b - aese v6.16b, v24.16b - aesmc v6.16b, v6.16b - aese v7.16b, v24.16b - aesmc v7.16b, v7.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aese v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b - aese v2.16b, v25.16b - eor v2.16b, v2.16b, v26.16b - aese v3.16b, v25.16b - eor v3.16b, v3.16b, v26.16b - aese v4.16b, v25.16b - eor v4.16b, v4.16b, v26.16b - aese v5.16b, v25.16b - eor v5.16b, v5.16b, v26.16b - aese v6.16b, v25.16b - eor v6.16b, v6.16b, v26.16b - aese v7.16b, v25.16b - eor v7.16b, v7.16b, v26.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V5.16B, V16.16B + aesmc V5.16B, V5.16B + aese V6.16B, V16.16B + aesmc V6.16B, V6.16B + aese V7.16B, V16.16B + aesmc V7.16B, V7.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V5.16B, V17.16B + aesmc V5.16B, V5.16B + aese V6.16B, V17.16B + aesmc V6.16B, V6.16B + aese V7.16B, V17.16B + aesmc V7.16B, V7.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V5.16B, V18.16B + aesmc V5.16B, V5.16B + aese V6.16B, V18.16B + aesmc V6.16B, V6.16B + aese V7.16B, V18.16B + aesmc V7.16B, V7.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V5.16B, V19.16B + aesmc V5.16B, V5.16B + aese V6.16B, V19.16B + aesmc V6.16B, V6.16B + aese V7.16B, V19.16B + aesmc V7.16B, V7.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V5.16B, V20.16B + aesmc V5.16B, V5.16B + aese V6.16B, V20.16B + aesmc V6.16B, V6.16B + aese V7.16B, V20.16B + aesmc V7.16B, V7.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V5.16B, V21.16B + aesmc V5.16B, V5.16B + aese V6.16B, V21.16B + aesmc V6.16B, V6.16B + aese V7.16B, V21.16B + aesmc V7.16B, V7.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V5.16B, V22.16B + aesmc V5.16B, V5.16B + aese V6.16B, V22.16B + aesmc V6.16B, V6.16B + aese V7.16B, V22.16B + aesmc V7.16B, V7.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V5.16B, V23.16B + aesmc V5.16B, V5.16B + aese V6.16B, V23.16B + aesmc V6.16B, V6.16B + aese V7.16B, V23.16B + aesmc V7.16B, V7.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V5.16B, V24.16B + aesmc V5.16B, V5.16B + aese V6.16B, V24.16B + aesmc V6.16B, V6.16B + aese V7.16B, V24.16B + aesmc V7.16B, V7.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aese V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B + aese V2.16B, V25.16B + eor V2.16B, V2.16B, V26.16B + aese V3.16B, V25.16B + eor V3.16B, V3.16B, V26.16B + aese V4.16B, V25.16B + eor V4.16B, V4.16B, V26.16B + aese V5.16B, V25.16B + eor V5.16B, V5.16B, V26.16B + aese V6.16B, V25.16B + eor V6.16B, V6.16B, V26.16B + aese V7.16B, V25.16B + eor V7.16B, V7.16B, V26.16B sub w2, w2, #8 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 - st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 + st1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 cmp w2, #8 bge L_aes_encrypt_blocks_arm64_crypto_128_start_8 L_aes_encrypt_blocks_arm64_crypto_128_start_4 cmp w2, #4 blt L_aes_encrypt_blocks_arm64_crypto_128_start_2 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aese v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b - aese v2.16b, v25.16b - eor v2.16b, v2.16b, v26.16b - aese v3.16b, v25.16b - eor v3.16b, v3.16b, v26.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aese V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B + aese V2.16B, V25.16B + eor V2.16B, V2.16B, V26.16B + aese V3.16B, V25.16B + eor V3.16B, V3.16B, V26.16B sub w2, w2, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 L_aes_encrypt_blocks_arm64_crypto_128_start_2 cmp w2, #2 blt L_aes_encrypt_blocks_arm64_crypto_128_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aese v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aese V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B sub w2, w2, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_encrypt_blocks_arm64_crypto_128_start_1 cbz w2, L_aes_encrypt_blocks_arm64_crypto_128_done - ld1 {v0.16b}, [x0], #16 - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - st1 {v0.16b}, [x1], #16 + ld1 {V0.16B}, [x0], #16 + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + st1 {V0.16B}, [x1], #16 L_aes_encrypt_blocks_arm64_crypto_128_done ENDIF L_aes_encrypt_blocks_arm64_crypto_done @@ -1873,859 +1873,859 @@ L_aes_encrypt_blocks_arm64_crypto_done AES_decrypt_blocks_AARCH64 PROC stp x29, x30, [sp, #-32]! add x29, sp, #0 - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x3], #0x40 - ld1 {v24.2d, v25.2d, v26.2d}, [x3], #48 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x3], #0x40 + ld1 {V24.2D, V25.2D, V26.2D}, [x3], #48 lsr w2, w2, #4 cmp w4, #12 blt L_aes_decrypt_blocks_arm64_crypto_start_128 bgt L_aes_decrypt_blocks_arm64_crypto_start_256 ; AES_ECB_192 IF :LNOT::DEF:NO_AES_192 - ld1 {v27.2d, v28.2d}, [x3], #32 + ld1 {V27.2D, V28.2D}, [x3], #32 cmp w2, #1 beq L_aes_decrypt_blocks_arm64_crypto_192_start_1 cmp w2, #8 blt L_aes_decrypt_blocks_arm64_crypto_192_start_4 L_aes_decrypt_blocks_arm64_crypto_192_start_8 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v16.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v16.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v16.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v16.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v17.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v17.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v17.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v17.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v18.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v18.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v18.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v18.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v19.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v19.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v19.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v19.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v20.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v20.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v20.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v20.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v21.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v21.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v21.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v21.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v22.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v22.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v22.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v22.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v23.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v23.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v23.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v23.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v24.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v24.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v24.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v24.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v25.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v25.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v25.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v25.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v25.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v25.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v26.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v26.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v26.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v26.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v26.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v26.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aesd v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b - aesd v2.16b, v27.16b - eor v2.16b, v2.16b, v28.16b - aesd v3.16b, v27.16b - eor v3.16b, v3.16b, v28.16b - aesd v4.16b, v27.16b - eor v4.16b, v4.16b, v28.16b - aesd v5.16b, v27.16b - eor v5.16b, v5.16b, v28.16b - aesd v6.16b, v27.16b - eor v6.16b, v6.16b, v28.16b - aesd v7.16b, v27.16b - eor v7.16b, v7.16b, v28.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V16.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V16.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V16.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V16.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V17.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V17.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V17.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V17.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V18.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V18.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V18.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V18.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V19.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V19.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V19.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V19.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V20.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V20.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V20.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V20.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V21.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V21.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V21.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V21.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V22.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V22.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V22.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V22.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V23.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V23.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V23.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V23.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V24.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V24.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V24.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V24.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V25.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V25.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V25.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V25.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V25.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V25.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V26.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V26.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V26.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V26.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V26.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V26.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aesd V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B + aesd V2.16B, V27.16B + eor V2.16B, V2.16B, V28.16B + aesd V3.16B, V27.16B + eor V3.16B, V3.16B, V28.16B + aesd V4.16B, V27.16B + eor V4.16B, V4.16B, V28.16B + aesd V5.16B, V27.16B + eor V5.16B, V5.16B, V28.16B + aesd V6.16B, V27.16B + eor V6.16B, V6.16B, V28.16B + aesd V7.16B, V27.16B + eor V7.16B, V7.16B, V28.16B sub w2, w2, #8 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 - st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 + st1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 cmp w2, #8 bge L_aes_decrypt_blocks_arm64_crypto_192_start_8 L_aes_decrypt_blocks_arm64_crypto_192_start_4 cmp w2, #4 blt L_aes_decrypt_blocks_arm64_crypto_192_start_2 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v25.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v25.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v26.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v26.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aesd v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b - aesd v2.16b, v27.16b - eor v2.16b, v2.16b, v28.16b - aesd v3.16b, v27.16b - eor v3.16b, v3.16b, v28.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V25.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V25.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V26.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V26.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aesd V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B + aesd V2.16B, V27.16B + eor V2.16B, V2.16B, V28.16B + aesd V3.16B, V27.16B + eor V3.16B, V3.16B, V28.16B sub w2, w2, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 L_aes_decrypt_blocks_arm64_crypto_192_start_2 cmp w2, #2 blt L_aes_decrypt_blocks_arm64_crypto_192_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aesd v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aesd V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B sub w2, w2, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_decrypt_blocks_arm64_crypto_192_start_1 cbz w2, L_aes_decrypt_blocks_arm64_crypto_192_done - ld1 {v0.16b}, [x0], #16 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - st1 {v0.16b}, [x1], #16 + ld1 {V0.16B}, [x0], #16 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + st1 {V0.16B}, [x1], #16 L_aes_decrypt_blocks_arm64_crypto_192_done ENDIF b L_aes_decrypt_blocks_arm64_crypto_done ; AES_ECB_256 L_aes_decrypt_blocks_arm64_crypto_start_256 IF :LNOT::DEF:NO_AES_256 - ld1 {v27.2d, v28.2d, v29.2d, v30.2d}, [x3], #0x40 + ld1 {V27.2D, V28.2D, V29.2D, V30.2D}, [x3], #0x40 cmp w2, #1 beq L_aes_decrypt_blocks_arm64_crypto_256_start_1 cmp w2, #8 blt L_aes_decrypt_blocks_arm64_crypto_256_start_4 L_aes_decrypt_blocks_arm64_crypto_256_start_8 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v16.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v16.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v16.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v16.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v17.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v17.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v17.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v17.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v18.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v18.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v18.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v18.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v19.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v19.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v19.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v19.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v20.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v20.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v20.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v20.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v21.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v21.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v21.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v21.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v22.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v22.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v22.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v22.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v23.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v23.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v23.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v23.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v24.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v24.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v24.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v24.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v25.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v25.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v25.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v25.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v25.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v25.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v26.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v26.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v26.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v26.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v26.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v26.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v27.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v27.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v27.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v27.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v27.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v27.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v27.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v28.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v28.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v28.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v28.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v28.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v28.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v28.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aesd v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b - aesd v2.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - aesd v3.16b, v29.16b - eor v3.16b, v3.16b, v30.16b - aesd v4.16b, v29.16b - eor v4.16b, v4.16b, v30.16b - aesd v5.16b, v29.16b - eor v5.16b, v5.16b, v30.16b - aesd v6.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - aesd v7.16b, v29.16b - eor v7.16b, v7.16b, v30.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V16.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V16.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V16.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V16.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V17.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V17.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V17.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V17.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V18.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V18.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V18.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V18.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V19.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V19.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V19.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V19.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V20.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V20.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V20.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V20.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V21.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V21.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V21.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V21.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V22.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V22.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V22.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V22.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V23.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V23.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V23.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V23.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V24.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V24.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V24.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V24.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V25.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V25.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V25.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V25.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V25.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V25.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V26.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V26.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V26.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V26.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V26.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V26.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V27.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V27.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V27.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V27.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V27.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V27.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V27.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V28.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V28.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V28.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V28.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V28.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V28.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V28.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aesd V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B + aesd V2.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + aesd V3.16B, V29.16B + eor V3.16B, V3.16B, V30.16B + aesd V4.16B, V29.16B + eor V4.16B, V4.16B, V30.16B + aesd V5.16B, V29.16B + eor V5.16B, V5.16B, V30.16B + aesd V6.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + aesd V7.16B, V29.16B + eor V7.16B, V7.16B, V30.16B sub w2, w2, #8 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 - st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 + st1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 cmp w2, #8 bge L_aes_decrypt_blocks_arm64_crypto_256_start_8 L_aes_decrypt_blocks_arm64_crypto_256_start_4 cmp w2, #4 blt L_aes_decrypt_blocks_arm64_crypto_256_start_2 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v25.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v25.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v26.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v26.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v27.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v27.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v27.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v28.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v28.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v28.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aesd v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b - aesd v2.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - aesd v3.16b, v29.16b - eor v3.16b, v3.16b, v30.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V25.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V25.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V26.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V26.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V27.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V27.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V27.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V28.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V28.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V28.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aesd V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B + aesd V2.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + aesd V3.16B, V29.16B + eor V3.16B, V3.16B, V30.16B sub w2, w2, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 L_aes_decrypt_blocks_arm64_crypto_256_start_2 cmp w2, #2 blt L_aes_decrypt_blocks_arm64_crypto_256_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v27.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v28.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aesd v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V27.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V28.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aesd V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B sub w2, w2, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_decrypt_blocks_arm64_crypto_256_start_1 cbz w2, L_aes_decrypt_blocks_arm64_crypto_256_done - ld1 {v0.16b}, [x0], #16 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - st1 {v0.16b}, [x1], #16 + ld1 {V0.16B}, [x0], #16 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + st1 {V0.16B}, [x1], #16 L_aes_decrypt_blocks_arm64_crypto_256_done ENDIF b L_aes_decrypt_blocks_arm64_crypto_done @@ -2737,329 +2737,329 @@ L_aes_decrypt_blocks_arm64_crypto_start_128 cmp w2, #8 blt L_aes_decrypt_blocks_arm64_crypto_128_start_4 L_aes_decrypt_blocks_arm64_crypto_128_start_8 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v16.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v16.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v16.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v16.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v17.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v17.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v17.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v17.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v18.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v18.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v18.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v18.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v19.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v19.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v19.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v19.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v20.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v20.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v20.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v20.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v21.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v21.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v21.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v21.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v22.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v22.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v22.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v22.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v23.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v23.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v23.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v23.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v4.16b, v24.16b - aesimc v4.16b, v4.16b - aesd v5.16b, v24.16b - aesimc v5.16b, v5.16b - aesd v6.16b, v24.16b - aesimc v6.16b, v6.16b - aesd v7.16b, v24.16b - aesimc v7.16b, v7.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aesd v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b - aesd v2.16b, v25.16b - eor v2.16b, v2.16b, v26.16b - aesd v3.16b, v25.16b - eor v3.16b, v3.16b, v26.16b - aesd v4.16b, v25.16b - eor v4.16b, v4.16b, v26.16b - aesd v5.16b, v25.16b - eor v5.16b, v5.16b, v26.16b - aesd v6.16b, v25.16b - eor v6.16b, v6.16b, v26.16b - aesd v7.16b, v25.16b - eor v7.16b, v7.16b, v26.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V16.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V16.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V16.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V16.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V17.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V17.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V17.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V17.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V18.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V18.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V18.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V18.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V19.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V19.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V19.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V19.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V20.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V20.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V20.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V20.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V21.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V21.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V21.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V21.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V22.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V22.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V22.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V22.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V23.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V23.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V23.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V23.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V4.16B, V24.16B + aesimc V4.16B, V4.16B + aesd V5.16B, V24.16B + aesimc V5.16B, V5.16B + aesd V6.16B, V24.16B + aesimc V6.16B, V6.16B + aesd V7.16B, V24.16B + aesimc V7.16B, V7.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aesd V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B + aesd V2.16B, V25.16B + eor V2.16B, V2.16B, V26.16B + aesd V3.16B, V25.16B + eor V3.16B, V3.16B, V26.16B + aesd V4.16B, V25.16B + eor V4.16B, V4.16B, V26.16B + aesd V5.16B, V25.16B + eor V5.16B, V5.16B, V26.16B + aesd V6.16B, V25.16B + eor V6.16B, V6.16B, V26.16B + aesd V7.16B, V25.16B + eor V7.16B, V7.16B, V26.16B sub w2, w2, #8 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 - st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 + st1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 cmp w2, #8 bge L_aes_decrypt_blocks_arm64_crypto_128_start_8 L_aes_decrypt_blocks_arm64_crypto_128_start_4 cmp w2, #4 blt L_aes_decrypt_blocks_arm64_crypto_128_start_2 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aesd v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b - aesd v2.16b, v25.16b - eor v2.16b, v2.16b, v26.16b - aesd v3.16b, v25.16b - eor v3.16b, v3.16b, v26.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aesd V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B + aesd V2.16B, V25.16B + eor V2.16B, V2.16B, V26.16B + aesd V3.16B, V25.16B + eor V3.16B, V3.16B, V26.16B sub w2, w2, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 L_aes_decrypt_blocks_arm64_crypto_128_start_2 cmp w2, #2 blt L_aes_decrypt_blocks_arm64_crypto_128_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aesd v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aesd V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B sub w2, w2, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_decrypt_blocks_arm64_crypto_128_start_1 cbz w2, L_aes_decrypt_blocks_arm64_crypto_128_done - ld1 {v0.16b}, [x0], #16 - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - st1 {v0.16b}, [x1], #16 + ld1 {V0.16B}, [x0], #16 + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + st1 {V0.16B}, [x1], #16 L_aes_decrypt_blocks_arm64_crypto_128_done ENDIF L_aes_decrypt_blocks_arm64_crypto_done @@ -3073,125 +3073,125 @@ L_aes_decrypt_blocks_arm64_crypto_done ALIGN 4 EXPORT AES_CBC_encrypt_AARCH64 AES_CBC_encrypt_AARCH64 PROC - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x4], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x4], #0x40 - ld1 {v0.2d}, [x3] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x4], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x4], #0x40 + ld1 {V0.2D}, [x3] subs w5, w5, #12 lsr w2, w2, #4 blt L_aes_cbc_encrypt_arm64_crypto_start_128 bgt L_aes_cbc_encrypt_arm64_crypto_start_256 ; AES_CBC_192 IF :LNOT::DEF:NO_AES_192 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x4], #0x40 + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x4], #0x40 L_aes_cbc_encrypt_arm64_crypto_loop_192 - ld1 {v28.2d}, [x4] - ld1 {v1.16b}, [x0], #16 + ld1 {V28.2D}, [x4] + ld1 {V1.16B}, [x0], #16 subs w2, w2, #1 - eor v0.16b, v0.16b, v1.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V1.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + st1 {V0.16B}, [x1], #16 bne L_aes_cbc_encrypt_arm64_crypto_loop_192 ENDIF b L_aes_cbc_encrypt_arm64_crypto_done ; AES_CBC_256 L_aes_cbc_encrypt_arm64_crypto_start_256 IF :LNOT::DEF:NO_AES_256 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x4], #0x40 - ld1 {v28.2d, v29.2d}, [x4], #32 + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x4], #0x40 + ld1 {V28.2D, V29.2D}, [x4], #32 L_aes_cbc_encrypt_arm64_crypto_loop_256 - ld1 {v30.2d}, [x4] - ld1 {v1.16b}, [x0], #16 + ld1 {V30.2D}, [x4] + ld1 {V1.16B}, [x0], #16 subs w2, w2, #1 - eor v0.16b, v0.16b, v1.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V1.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + st1 {V0.16B}, [x1], #16 bne L_aes_cbc_encrypt_arm64_crypto_loop_256 ENDIF b L_aes_cbc_encrypt_arm64_crypto_done ; AES_CBC_128 L_aes_cbc_encrypt_arm64_crypto_start_128 IF :LNOT::DEF:NO_AES_128 - ld1 {v24.2d, v25.2d}, [x4], #32 + ld1 {V24.2D, V25.2D}, [x4], #32 L_aes_cbc_encrypt_arm64_crypto_loop_128 - ld1 {v26.2d}, [x4] - ld1 {v1.16b}, [x0], #16 + ld1 {V26.2D}, [x4] + ld1 {V1.16B}, [x0], #16 subs w2, w2, #1 - eor v0.16b, v0.16b, v1.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V1.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + st1 {V0.16B}, [x1], #16 bne L_aes_cbc_encrypt_arm64_crypto_loop_128 ENDIF L_aes_cbc_encrypt_arm64_crypto_done - st1 {v0.2d}, [x3] + st1 {V0.2D}, [x3] ret ENDP IF :DEF:HAVE_AES_DECRYPT @@ -3199,83 +3199,83 @@ L_aes_cbc_encrypt_arm64_crypto_done ALIGN 4 EXPORT AES_CBC_decrypt_AARCH64 AES_CBC_decrypt_AARCH64 PROC - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x4], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x4], #0x40 - ld1 {v0.2d}, [x3] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x4], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x4], #0x40 + ld1 {V0.2D}, [x3] lsr w2, w2, #4 cmp w5, #12 blt L_aes_cbc_decrypt_blocks_arm64_crypto_start_128 bgt L_aes_cbc_decrypt_blocks_arm64_crypto_start_256 ; AES_CBC_192 IF :LNOT::DEF:NO_AES_192 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x4], #0x40 - ld1 {v28.2d}, [x4] + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x4], #0x40 + ld1 {V28.2D}, [x4] cmp w2, #10 ble L_aes_cbc_decrypt_blocks_arm64_crypto_192_start_1 L_aes_cbc_decrypt_blocks_arm64_crypto_192_start_1_long - ld1 {v1.16b}, [x0], #16 + ld1 {V1.16B}, [x0], #16 sub w2, w2, #1 - mov v2.16b, v1.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - eor v1.16b, v1.16b, v0.16b - mov v0.16b, v2.16b - st1 {v1.16b}, [x1], #16 + mov V2.16B, V1.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + eor V1.16B, V1.16B, V0.16B + mov V0.16B, V2.16B + st1 {V1.16B}, [x1], #16 cmp w2, #1 bge L_aes_cbc_decrypt_blocks_arm64_crypto_192_start_1_long b L_aes_cbc_decrypt_blocks_arm64_crypto_done L_aes_cbc_decrypt_blocks_arm64_crypto_192_start_1 - ld1 {v1.16b}, [x0], #16 + ld1 {V1.16B}, [x0], #16 sub w2, w2, #1 - eor v2.16b, v0.16b, v28.16b - mov v0.16b, v1.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v27.16b - eor v1.16b, v1.16b, v2.16b - st1 {v1.16b}, [x1], #16 + eor V2.16B, V0.16B, V28.16B + mov V0.16B, V1.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V27.16B + eor V1.16B, V1.16B, V2.16B + st1 {V1.16B}, [x1], #16 cmp w2, #1 bge L_aes_cbc_decrypt_blocks_arm64_crypto_192_start_1 ENDIF @@ -3283,83 +3283,83 @@ L_aes_cbc_decrypt_blocks_arm64_crypto_192_start_1 ; AES_CBC_256 L_aes_cbc_decrypt_blocks_arm64_crypto_start_256 IF :LNOT::DEF:NO_AES_256 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x4], #0x40 - ld1 {v28.2d, v29.2d}, [x4], #32 - ld1 {v30.2d}, [x4] + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x4], #0x40 + ld1 {V28.2D, V29.2D}, [x4], #32 + ld1 {V30.2D}, [x4] cmp w2, #5 ble L_aes_cbc_decrypt_blocks_arm64_crypto_256_start_1 L_aes_cbc_decrypt_blocks_arm64_crypto_256_start_1_long - ld1 {v1.16b}, [x0], #16 + ld1 {V1.16B}, [x0], #16 sub w2, w2, #1 - mov v2.16b, v1.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v27.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v28.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - eor v1.16b, v1.16b, v0.16b - mov v0.16b, v2.16b - st1 {v1.16b}, [x1], #16 + mov V2.16B, V1.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V27.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V28.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + eor V1.16B, V1.16B, V0.16B + mov V0.16B, V2.16B + st1 {V1.16B}, [x1], #16 cmp w2, #1 bge L_aes_cbc_decrypt_blocks_arm64_crypto_256_start_1_long b L_aes_cbc_decrypt_blocks_arm64_crypto_done L_aes_cbc_decrypt_blocks_arm64_crypto_256_start_1 - ld1 {v1.16b}, [x0], #16 + ld1 {V1.16B}, [x0], #16 sub w2, w2, #1 - eor v2.16b, v0.16b, v30.16b - mov v0.16b, v1.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v27.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v28.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v29.16b - eor v1.16b, v1.16b, v2.16b - st1 {v1.16b}, [x1], #16 + eor V2.16B, V0.16B, V30.16B + mov V0.16B, V1.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V27.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V28.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V29.16B + eor V1.16B, V1.16B, V2.16B + st1 {V1.16B}, [x1], #16 cmp w2, #1 bge L_aes_cbc_decrypt_blocks_arm64_crypto_256_start_1 ENDIF @@ -3367,71 +3367,71 @@ L_aes_cbc_decrypt_blocks_arm64_crypto_256_start_1 ; AES_CBC_128 L_aes_cbc_decrypt_blocks_arm64_crypto_start_128 IF :LNOT::DEF:NO_AES_128 - ld1 {v24.2d, v25.2d}, [x4], #32 - ld1 {v26.2d}, [x4] + ld1 {V24.2D, V25.2D}, [x4], #32 + ld1 {V26.2D}, [x4] cmp w2, #24 ble L_aes_cbc_decrypt_blocks_arm64_crypto_128_start_1 L_aes_cbc_decrypt_blocks_arm64_crypto_128_start_1_long - ld1 {v1.16b}, [x0], #16 + ld1 {V1.16B}, [x0], #16 sub w2, w2, #1 - mov v2.16b, v1.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - eor v1.16b, v1.16b, v0.16b - mov v0.16b, v2.16b - st1 {v1.16b}, [x1], #16 + mov V2.16B, V1.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + eor V1.16B, V1.16B, V0.16B + mov V0.16B, V2.16B + st1 {V1.16B}, [x1], #16 cmp w2, #1 bge L_aes_cbc_decrypt_blocks_arm64_crypto_128_start_1_long b L_aes_cbc_decrypt_blocks_arm64_crypto_done L_aes_cbc_decrypt_blocks_arm64_crypto_128_start_1 - ld1 {v1.16b}, [x0], #16 + ld1 {V1.16B}, [x0], #16 sub w2, w2, #1 - eor v2.16b, v0.16b, v26.16b - mov v0.16b, v1.16b - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v1.16b, v25.16b - eor v1.16b, v1.16b, v2.16b - st1 {v1.16b}, [x1], #16 + eor V2.16B, V0.16B, V26.16B + mov V0.16B, V1.16B + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V1.16B, V25.16B + eor V1.16B, V1.16B, V2.16B + st1 {V1.16B}, [x1], #16 cmp w2, #1 bge L_aes_cbc_decrypt_blocks_arm64_crypto_128_start_1 ENDIF L_aes_cbc_decrypt_blocks_arm64_crypto_done - st1 {v0.2d}, [x3] + st1 {V0.2D}, [x3] ret ENDP ENDIF @@ -3447,25 +3447,25 @@ AES_CTR_encrypt_AARCH64 PROC stp x20, x21, [x29, #32] stp x22, x23, [x29, #48] stp x24, x25, [x29, #64] - stp d8, d9, [x29, #80] - stp d10, d11, [x29, #96] - stp d12, d13, [x29, #112] - stp d14, d15, [x29, #128] - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x4], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x4], #0x40 - ld1 {v15.2d}, [x3] - rev64 v16.16b, v15.16b + stp D8, D9, [x29, #80] + stp D10, D11, [x29, #96] + stp D12, D13, [x29, #112] + stp D14, D15, [x29, #128] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x4], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x4], #0x40 + ld1 {V15.2D}, [x3] + rev64 V16.16B, V15.16B lsr w8, w2, #4 and w2, w2, #15 - mov x9, v16.d[1] - mov x10, v16.d[0] + mov x9, V16.D[1] + mov x10, V16.D[0] cmp w7, #12 blt L_aes_ctr_encrypt_arm64_crypto_start_128 bgt L_aes_ctr_encrypt_arm64_crypto_start_256 ; AES_CTR_192 IF :LNOT::DEF:NO_AES_192 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x4], #0x40 - ld1 {v12.2d}, [x4] + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x4], #0x40 + ld1 {V12.2D}, [x4] cmp w8, #1 ble L_aes_ctr_encrypt_arm64_crypto_192_start_1 adds x11, x9, #1 @@ -3477,514 +3477,514 @@ AES_CTR_encrypt_AARCH64 PROC adds x15, x9, #3 adc x16, x10, xzr L_aes_ctr_encrypt_arm64_crypto_192_start_8 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x0], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x0], #0x40 - mov v17.d[0], x12 - mov v17.d[1], x11 - mov v18.d[0], x14 - mov v18.d[1], x13 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x0], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x0], #0x40 + mov V17.D[0], x12 + mov V17.D[1], x11 + mov V18.D[0], x14 + mov V18.D[1], x13 adds x17, x9, #4 - mov v19.d[0], x16 + mov V19.D[0], x16 adc x19, x10, xzr - mov v19.d[1], x15 + mov V19.D[1], x15 adds x20, x9, #5 - mov v20.d[0], x19 + mov V20.D[0], x19 adc x21, x10, xzr - mov v20.d[1], x17 + mov V20.D[1], x17 adds x22, x9, #6 - mov v21.d[0], x21 + mov V21.D[0], x21 adc x23, x10, xzr - mov v21.d[1], x20 + mov V21.D[1], x20 adds x24, x9, #7 - mov v22.d[0], x23 + mov V22.D[0], x23 adc x25, x10, xzr - mov v22.d[1], x22 - mov v23.d[0], x25 - mov v23.d[1], x24 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - rev64 v18.16b, v18.16b - rev64 v19.16b, v19.16b - rev64 v20.16b, v20.16b - rev64 v21.16b, v21.16b - rev64 v22.16b, v22.16b - rev64 v23.16b, v23.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v18.16b, v0.16b - aesmc v18.16b, v18.16b - aese v19.16b, v0.16b - aesmc v19.16b, v19.16b - aese v20.16b, v0.16b - aesmc v20.16b, v20.16b - aese v21.16b, v0.16b - aesmc v21.16b, v21.16b - aese v22.16b, v0.16b - aesmc v22.16b, v22.16b - aese v23.16b, v0.16b - aesmc v23.16b, v23.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v18.16b, v1.16b - aesmc v18.16b, v18.16b - aese v19.16b, v1.16b - aesmc v19.16b, v19.16b - aese v20.16b, v1.16b - aesmc v20.16b, v20.16b - aese v21.16b, v1.16b - aesmc v21.16b, v21.16b - aese v22.16b, v1.16b - aesmc v22.16b, v22.16b - aese v23.16b, v1.16b - aesmc v23.16b, v23.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v18.16b, v2.16b - aesmc v18.16b, v18.16b - aese v19.16b, v2.16b - aesmc v19.16b, v19.16b - aese v20.16b, v2.16b - aesmc v20.16b, v20.16b - aese v21.16b, v2.16b - aesmc v21.16b, v21.16b - aese v22.16b, v2.16b - aesmc v22.16b, v22.16b - aese v23.16b, v2.16b - aesmc v23.16b, v23.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v18.16b, v3.16b - aesmc v18.16b, v18.16b - aese v19.16b, v3.16b - aesmc v19.16b, v19.16b - aese v20.16b, v3.16b - aesmc v20.16b, v20.16b - aese v21.16b, v3.16b - aesmc v21.16b, v21.16b - aese v22.16b, v3.16b - aesmc v22.16b, v22.16b - aese v23.16b, v3.16b - aesmc v23.16b, v23.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v18.16b, v4.16b - aesmc v18.16b, v18.16b - aese v19.16b, v4.16b - aesmc v19.16b, v19.16b - aese v20.16b, v4.16b - aesmc v20.16b, v20.16b - aese v21.16b, v4.16b - aesmc v21.16b, v21.16b - aese v22.16b, v4.16b - aesmc v22.16b, v22.16b - aese v23.16b, v4.16b - aesmc v23.16b, v23.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v18.16b, v5.16b - aesmc v18.16b, v18.16b - aese v19.16b, v5.16b - aesmc v19.16b, v19.16b - aese v20.16b, v5.16b - aesmc v20.16b, v20.16b - aese v21.16b, v5.16b - aesmc v21.16b, v21.16b - aese v22.16b, v5.16b - aesmc v22.16b, v22.16b - aese v23.16b, v5.16b - aesmc v23.16b, v23.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v18.16b, v6.16b - aesmc v18.16b, v18.16b - aese v19.16b, v6.16b - aesmc v19.16b, v19.16b - aese v20.16b, v6.16b - aesmc v20.16b, v20.16b - aese v21.16b, v6.16b - aesmc v21.16b, v21.16b - aese v22.16b, v6.16b - aesmc v22.16b, v22.16b - aese v23.16b, v6.16b - aesmc v23.16b, v23.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v18.16b, v7.16b - aesmc v18.16b, v18.16b - aese v19.16b, v7.16b - aesmc v19.16b, v19.16b - aese v20.16b, v7.16b - aesmc v20.16b, v20.16b - aese v21.16b, v7.16b - aesmc v21.16b, v21.16b - aese v22.16b, v7.16b - aesmc v22.16b, v22.16b - aese v23.16b, v7.16b - aesmc v23.16b, v23.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v18.16b, v8.16b - aesmc v18.16b, v18.16b - aese v19.16b, v8.16b - aesmc v19.16b, v19.16b - aese v20.16b, v8.16b - aesmc v20.16b, v20.16b - aese v21.16b, v8.16b - aesmc v21.16b, v21.16b - aese v22.16b, v8.16b - aesmc v22.16b, v22.16b - aese v23.16b, v8.16b - aesmc v23.16b, v23.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v18.16b, v9.16b - aesmc v18.16b, v18.16b - aese v19.16b, v9.16b - aesmc v19.16b, v19.16b - aese v20.16b, v9.16b - aesmc v20.16b, v20.16b - aese v21.16b, v9.16b - aesmc v21.16b, v21.16b - aese v22.16b, v9.16b - aesmc v22.16b, v22.16b - aese v23.16b, v9.16b - aesmc v23.16b, v23.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v18.16b, v10.16b - aesmc v18.16b, v18.16b - aese v19.16b, v10.16b - aesmc v19.16b, v19.16b - aese v20.16b, v10.16b - aesmc v20.16b, v20.16b - aese v21.16b, v10.16b - aesmc v21.16b, v21.16b - aese v22.16b, v10.16b - aesmc v22.16b, v22.16b - aese v23.16b, v10.16b - aesmc v23.16b, v23.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - aese v18.16b, v11.16b - eor v18.16b, v18.16b, v12.16b - aese v19.16b, v11.16b - eor v19.16b, v19.16b, v12.16b - aese v20.16b, v11.16b - eor v20.16b, v20.16b, v12.16b - aese v21.16b, v11.16b - eor v21.16b, v21.16b, v12.16b - aese v22.16b, v11.16b - eor v22.16b, v22.16b, v12.16b - aese v23.16b, v11.16b - eor v23.16b, v23.16b, v12.16b + mov V22.D[1], x22 + mov V23.D[0], x25 + mov V23.D[1], x24 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + rev64 V18.16B, V18.16B + rev64 V19.16B, V19.16B + rev64 V20.16B, V20.16B + rev64 V21.16B, V21.16B + rev64 V22.16B, V22.16B + rev64 V23.16B, V23.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V18.16B, V0.16B + aesmc V18.16B, V18.16B + aese V19.16B, V0.16B + aesmc V19.16B, V19.16B + aese V20.16B, V0.16B + aesmc V20.16B, V20.16B + aese V21.16B, V0.16B + aesmc V21.16B, V21.16B + aese V22.16B, V0.16B + aesmc V22.16B, V22.16B + aese V23.16B, V0.16B + aesmc V23.16B, V23.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V18.16B, V1.16B + aesmc V18.16B, V18.16B + aese V19.16B, V1.16B + aesmc V19.16B, V19.16B + aese V20.16B, V1.16B + aesmc V20.16B, V20.16B + aese V21.16B, V1.16B + aesmc V21.16B, V21.16B + aese V22.16B, V1.16B + aesmc V22.16B, V22.16B + aese V23.16B, V1.16B + aesmc V23.16B, V23.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V18.16B, V2.16B + aesmc V18.16B, V18.16B + aese V19.16B, V2.16B + aesmc V19.16B, V19.16B + aese V20.16B, V2.16B + aesmc V20.16B, V20.16B + aese V21.16B, V2.16B + aesmc V21.16B, V21.16B + aese V22.16B, V2.16B + aesmc V22.16B, V22.16B + aese V23.16B, V2.16B + aesmc V23.16B, V23.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V18.16B, V3.16B + aesmc V18.16B, V18.16B + aese V19.16B, V3.16B + aesmc V19.16B, V19.16B + aese V20.16B, V3.16B + aesmc V20.16B, V20.16B + aese V21.16B, V3.16B + aesmc V21.16B, V21.16B + aese V22.16B, V3.16B + aesmc V22.16B, V22.16B + aese V23.16B, V3.16B + aesmc V23.16B, V23.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V18.16B, V4.16B + aesmc V18.16B, V18.16B + aese V19.16B, V4.16B + aesmc V19.16B, V19.16B + aese V20.16B, V4.16B + aesmc V20.16B, V20.16B + aese V21.16B, V4.16B + aesmc V21.16B, V21.16B + aese V22.16B, V4.16B + aesmc V22.16B, V22.16B + aese V23.16B, V4.16B + aesmc V23.16B, V23.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V18.16B, V5.16B + aesmc V18.16B, V18.16B + aese V19.16B, V5.16B + aesmc V19.16B, V19.16B + aese V20.16B, V5.16B + aesmc V20.16B, V20.16B + aese V21.16B, V5.16B + aesmc V21.16B, V21.16B + aese V22.16B, V5.16B + aesmc V22.16B, V22.16B + aese V23.16B, V5.16B + aesmc V23.16B, V23.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V18.16B, V6.16B + aesmc V18.16B, V18.16B + aese V19.16B, V6.16B + aesmc V19.16B, V19.16B + aese V20.16B, V6.16B + aesmc V20.16B, V20.16B + aese V21.16B, V6.16B + aesmc V21.16B, V21.16B + aese V22.16B, V6.16B + aesmc V22.16B, V22.16B + aese V23.16B, V6.16B + aesmc V23.16B, V23.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V18.16B, V7.16B + aesmc V18.16B, V18.16B + aese V19.16B, V7.16B + aesmc V19.16B, V19.16B + aese V20.16B, V7.16B + aesmc V20.16B, V20.16B + aese V21.16B, V7.16B + aesmc V21.16B, V21.16B + aese V22.16B, V7.16B + aesmc V22.16B, V22.16B + aese V23.16B, V7.16B + aesmc V23.16B, V23.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V18.16B, V8.16B + aesmc V18.16B, V18.16B + aese V19.16B, V8.16B + aesmc V19.16B, V19.16B + aese V20.16B, V8.16B + aesmc V20.16B, V20.16B + aese V21.16B, V8.16B + aesmc V21.16B, V21.16B + aese V22.16B, V8.16B + aesmc V22.16B, V22.16B + aese V23.16B, V8.16B + aesmc V23.16B, V23.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V18.16B, V9.16B + aesmc V18.16B, V18.16B + aese V19.16B, V9.16B + aesmc V19.16B, V19.16B + aese V20.16B, V9.16B + aesmc V20.16B, V20.16B + aese V21.16B, V9.16B + aesmc V21.16B, V21.16B + aese V22.16B, V9.16B + aesmc V22.16B, V22.16B + aese V23.16B, V9.16B + aesmc V23.16B, V23.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V18.16B, V10.16B + aesmc V18.16B, V18.16B + aese V19.16B, V10.16B + aesmc V19.16B, V19.16B + aese V20.16B, V10.16B + aesmc V20.16B, V20.16B + aese V21.16B, V10.16B + aesmc V21.16B, V21.16B + aese V22.16B, V10.16B + aesmc V22.16B, V22.16B + aese V23.16B, V10.16B + aesmc V23.16B, V23.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + aese V18.16B, V11.16B + eor V18.16B, V18.16B, V12.16B + aese V19.16B, V11.16B + eor V19.16B, V19.16B, V12.16B + aese V20.16B, V11.16B + eor V20.16B, V20.16B, V12.16B + aese V21.16B, V11.16B + eor V21.16B, V21.16B, V12.16B + aese V22.16B, V11.16B + eor V22.16B, V22.16B, V12.16B + aese V23.16B, V11.16B + eor V23.16B, V23.16B, V12.16B adds x9, x9, #8 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B adds x11, x11, #8 - eor v26.16b, v26.16b, v18.16b + eor V26.16B, V26.16B, V18.16B adc x12, x12, xzr - eor v27.16b, v27.16b, v19.16b + eor V27.16B, V27.16B, V19.16B adds x13, x13, #8 - eor v28.16b, v28.16b, v20.16b + eor V28.16B, V28.16B, V20.16B adc x14, x14, xzr - eor v29.16b, v29.16b, v21.16b + eor V29.16B, V29.16B, V21.16B adds x15, x15, #8 - eor v30.16b, v30.16b, v22.16b + eor V30.16B, V30.16B, V22.16B adc x16, x16, xzr - eor v31.16b, v31.16b, v23.16b + eor V31.16B, V31.16B, V23.16B sub w8, w8, #8 - st1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], #0x40 - st1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x1], #0x40 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x1], #0x40 + st1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x1], #0x40 + mov V16.D[0], x10 + mov V16.D[1], x9 cmp w8, #8 bge L_aes_ctr_encrypt_arm64_crypto_192_start_8 L_aes_ctr_encrypt_arm64_crypto_192_start_4 cmp w8, #4 blt L_aes_ctr_encrypt_arm64_crypto_192_start_2 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x0], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x0], #0x40 adds x13, x9, #2 - mov v17.d[0], x12 + mov V17.D[0], x12 adc x14, x10, xzr - mov v17.d[1], x11 + mov V17.D[1], x11 adds x15, x9, #3 - mov v18.d[0], x14 + mov V18.D[0], x14 adc x16, x10, xzr - mov v18.d[1], x13 - mov v19.d[0], x16 - mov v19.d[1], x15 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - rev64 v18.16b, v18.16b - rev64 v19.16b, v19.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v18.16b, v0.16b - aesmc v18.16b, v18.16b - aese v19.16b, v0.16b - aesmc v19.16b, v19.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v18.16b, v1.16b - aesmc v18.16b, v18.16b - aese v19.16b, v1.16b - aesmc v19.16b, v19.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v18.16b, v2.16b - aesmc v18.16b, v18.16b - aese v19.16b, v2.16b - aesmc v19.16b, v19.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v18.16b, v3.16b - aesmc v18.16b, v18.16b - aese v19.16b, v3.16b - aesmc v19.16b, v19.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v18.16b, v4.16b - aesmc v18.16b, v18.16b - aese v19.16b, v4.16b - aesmc v19.16b, v19.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v18.16b, v5.16b - aesmc v18.16b, v18.16b - aese v19.16b, v5.16b - aesmc v19.16b, v19.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v18.16b, v6.16b - aesmc v18.16b, v18.16b - aese v19.16b, v6.16b - aesmc v19.16b, v19.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v18.16b, v7.16b - aesmc v18.16b, v18.16b - aese v19.16b, v7.16b - aesmc v19.16b, v19.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v18.16b, v8.16b - aesmc v18.16b, v18.16b - aese v19.16b, v8.16b - aesmc v19.16b, v19.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v18.16b, v9.16b - aesmc v18.16b, v18.16b - aese v19.16b, v9.16b - aesmc v19.16b, v19.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v18.16b, v10.16b - aesmc v18.16b, v18.16b - aese v19.16b, v10.16b - aesmc v19.16b, v19.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - aese v18.16b, v11.16b - eor v18.16b, v18.16b, v12.16b - aese v19.16b, v11.16b - eor v19.16b, v19.16b, v12.16b + mov V18.D[1], x13 + mov V19.D[0], x16 + mov V19.D[1], x15 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + rev64 V18.16B, V18.16B + rev64 V19.16B, V19.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V18.16B, V0.16B + aesmc V18.16B, V18.16B + aese V19.16B, V0.16B + aesmc V19.16B, V19.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V18.16B, V1.16B + aesmc V18.16B, V18.16B + aese V19.16B, V1.16B + aesmc V19.16B, V19.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V18.16B, V2.16B + aesmc V18.16B, V18.16B + aese V19.16B, V2.16B + aesmc V19.16B, V19.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V18.16B, V3.16B + aesmc V18.16B, V18.16B + aese V19.16B, V3.16B + aesmc V19.16B, V19.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V18.16B, V4.16B + aesmc V18.16B, V18.16B + aese V19.16B, V4.16B + aesmc V19.16B, V19.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V18.16B, V5.16B + aesmc V18.16B, V18.16B + aese V19.16B, V5.16B + aesmc V19.16B, V19.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V18.16B, V6.16B + aesmc V18.16B, V18.16B + aese V19.16B, V6.16B + aesmc V19.16B, V19.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V18.16B, V7.16B + aesmc V18.16B, V18.16B + aese V19.16B, V7.16B + aesmc V19.16B, V19.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V18.16B, V8.16B + aesmc V18.16B, V18.16B + aese V19.16B, V8.16B + aesmc V19.16B, V19.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V18.16B, V9.16B + aesmc V18.16B, V18.16B + aese V19.16B, V9.16B + aesmc V19.16B, V19.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V18.16B, V10.16B + aesmc V18.16B, V18.16B + aese V19.16B, V10.16B + aesmc V19.16B, V19.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + aese V18.16B, V11.16B + eor V18.16B, V18.16B, V12.16B + aese V19.16B, V11.16B + eor V19.16B, V19.16B, V12.16B adds x9, x9, #4 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B adds x11, x11, #4 - eor v26.16b, v26.16b, v18.16b + eor V26.16B, V26.16B, V18.16B adc x12, x12, xzr - eor v27.16b, v27.16b, v19.16b + eor V27.16B, V27.16B, V19.16B sub w8, w8, #4 - st1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], #0x40 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x1], #0x40 + mov V16.D[0], x10 + mov V16.D[1], x9 L_aes_ctr_encrypt_arm64_crypto_192_start_2 cmp w8, #2 blt L_aes_ctr_encrypt_arm64_crypto_192_start_1 - ld1 {v24.16b, v25.16b}, [x0], #32 - eor v20.16b, v20.16b, v20.16b - ext v19.16b, v16.16b, v16.16b, #8 - movi v18.16b, #1 - ext v18.16b, v18.16b, v20.16b, #15 - add v17.2d, v19.2d, v18.2d - cmeq v19.2d, v17.2d, #0 - ext v19.16b, v20.16b, v19.16b, #8 - sub v17.2d, v17.2d, v19.2d - ext v17.16b, v17.16b, v17.16b, #8 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b + ld1 {V24.16B, V25.16B}, [x0], #32 + eor V20.16B, V20.16B, V20.16B + ext8 V19.16B, V16.16B, V16.16B, #8 + movi V18.16B, #1 + ext8 V18.16B, V18.16B, V20.16B, #15 + add V17.2D, V19.2D, V18.2D + cmeq V19.2D, V17.2D, #0 + ext8 V19.16B, V20.16B, V19.16B, #8 + sub V17.2D, V17.2D, V19.2D + ext8 V17.16B, V17.16B, V17.16B, #8 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B adds x9, x9, #2 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B sub w8, w8, #2 - st1 {v24.16b, v25.16b}, [x1], #32 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B}, [x1], #32 + mov V16.D[0], x10 + mov V16.D[1], x9 L_aes_ctr_encrypt_arm64_crypto_192_start_1 cbz w8, L_aes_ctr_encrypt_arm64_crypto_192_done - ld1 {v24.16b}, [x0], #16 - rev64 v16.16b, v16.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b + ld1 {V24.16B}, [x0], #16 + rev64 V16.16B, V16.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B adds x9, x9, #1 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - st1 {v24.16b}, [x1], #16 + st1 {V24.16B}, [x1], #16 L_aes_ctr_encrypt_arm64_crypto_192_done cbz w2, L_aes_ctr_encrypt_arm64_crypto_192_partial_done - mov v16.d[0], x10 - mov v16.d[1], x9 - rev64 v16.16b, v16.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b + mov V16.D[0], x10 + mov V16.D[1], x9 + rev64 V16.16B, V16.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B adds x9, x9, #1 adc x10, x10, xzr - st1 {v16.2d}, [x5] + st1 {V16.2D}, [x5] mov w13, #16 sub w13, w13, w2 L_aes_ctr_encrypt_arm64_crypto_192_start_byte @@ -4001,9 +4001,9 @@ L_aes_ctr_encrypt_arm64_crypto_192_partial_done ; AES_CTR_256 L_aes_ctr_encrypt_arm64_crypto_start_256 IF :LNOT::DEF:NO_AES_256 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x4], #0x40 - ld1 {v12.2d, v13.2d}, [x4], #32 - ld1 {v14.2d}, [x4] + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x4], #0x40 + ld1 {V12.2D, V13.2D}, [x4], #32 + ld1 {V14.2D}, [x4] cmp w8, #1 ble L_aes_ctr_encrypt_arm64_crypto_256_start_1 adds x11, x9, #1 @@ -4015,578 +4015,578 @@ L_aes_ctr_encrypt_arm64_crypto_start_256 adds x15, x9, #3 adc x16, x10, xzr L_aes_ctr_encrypt_arm64_crypto_256_start_8 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x0], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x0], #0x40 - mov v17.d[0], x12 - mov v17.d[1], x11 - mov v18.d[0], x14 - mov v18.d[1], x13 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x0], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x0], #0x40 + mov V17.D[0], x12 + mov V17.D[1], x11 + mov V18.D[0], x14 + mov V18.D[1], x13 adds x17, x9, #4 - mov v19.d[0], x16 + mov V19.D[0], x16 adc x19, x10, xzr - mov v19.d[1], x15 + mov V19.D[1], x15 adds x20, x9, #5 - mov v20.d[0], x19 + mov V20.D[0], x19 adc x21, x10, xzr - mov v20.d[1], x17 + mov V20.D[1], x17 adds x22, x9, #6 - mov v21.d[0], x21 + mov V21.D[0], x21 adc x23, x10, xzr - mov v21.d[1], x20 + mov V21.D[1], x20 adds x24, x9, #7 - mov v22.d[0], x23 + mov V22.D[0], x23 adc x25, x10, xzr - mov v22.d[1], x22 - mov v23.d[0], x25 - mov v23.d[1], x24 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - rev64 v18.16b, v18.16b - rev64 v19.16b, v19.16b - rev64 v20.16b, v20.16b - rev64 v21.16b, v21.16b - rev64 v22.16b, v22.16b - rev64 v23.16b, v23.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v18.16b, v0.16b - aesmc v18.16b, v18.16b - aese v19.16b, v0.16b - aesmc v19.16b, v19.16b - aese v20.16b, v0.16b - aesmc v20.16b, v20.16b - aese v21.16b, v0.16b - aesmc v21.16b, v21.16b - aese v22.16b, v0.16b - aesmc v22.16b, v22.16b - aese v23.16b, v0.16b - aesmc v23.16b, v23.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v18.16b, v1.16b - aesmc v18.16b, v18.16b - aese v19.16b, v1.16b - aesmc v19.16b, v19.16b - aese v20.16b, v1.16b - aesmc v20.16b, v20.16b - aese v21.16b, v1.16b - aesmc v21.16b, v21.16b - aese v22.16b, v1.16b - aesmc v22.16b, v22.16b - aese v23.16b, v1.16b - aesmc v23.16b, v23.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v18.16b, v2.16b - aesmc v18.16b, v18.16b - aese v19.16b, v2.16b - aesmc v19.16b, v19.16b - aese v20.16b, v2.16b - aesmc v20.16b, v20.16b - aese v21.16b, v2.16b - aesmc v21.16b, v21.16b - aese v22.16b, v2.16b - aesmc v22.16b, v22.16b - aese v23.16b, v2.16b - aesmc v23.16b, v23.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v18.16b, v3.16b - aesmc v18.16b, v18.16b - aese v19.16b, v3.16b - aesmc v19.16b, v19.16b - aese v20.16b, v3.16b - aesmc v20.16b, v20.16b - aese v21.16b, v3.16b - aesmc v21.16b, v21.16b - aese v22.16b, v3.16b - aesmc v22.16b, v22.16b - aese v23.16b, v3.16b - aesmc v23.16b, v23.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v18.16b, v4.16b - aesmc v18.16b, v18.16b - aese v19.16b, v4.16b - aesmc v19.16b, v19.16b - aese v20.16b, v4.16b - aesmc v20.16b, v20.16b - aese v21.16b, v4.16b - aesmc v21.16b, v21.16b - aese v22.16b, v4.16b - aesmc v22.16b, v22.16b - aese v23.16b, v4.16b - aesmc v23.16b, v23.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v18.16b, v5.16b - aesmc v18.16b, v18.16b - aese v19.16b, v5.16b - aesmc v19.16b, v19.16b - aese v20.16b, v5.16b - aesmc v20.16b, v20.16b - aese v21.16b, v5.16b - aesmc v21.16b, v21.16b - aese v22.16b, v5.16b - aesmc v22.16b, v22.16b - aese v23.16b, v5.16b - aesmc v23.16b, v23.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v18.16b, v6.16b - aesmc v18.16b, v18.16b - aese v19.16b, v6.16b - aesmc v19.16b, v19.16b - aese v20.16b, v6.16b - aesmc v20.16b, v20.16b - aese v21.16b, v6.16b - aesmc v21.16b, v21.16b - aese v22.16b, v6.16b - aesmc v22.16b, v22.16b - aese v23.16b, v6.16b - aesmc v23.16b, v23.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v18.16b, v7.16b - aesmc v18.16b, v18.16b - aese v19.16b, v7.16b - aesmc v19.16b, v19.16b - aese v20.16b, v7.16b - aesmc v20.16b, v20.16b - aese v21.16b, v7.16b - aesmc v21.16b, v21.16b - aese v22.16b, v7.16b - aesmc v22.16b, v22.16b - aese v23.16b, v7.16b - aesmc v23.16b, v23.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v18.16b, v8.16b - aesmc v18.16b, v18.16b - aese v19.16b, v8.16b - aesmc v19.16b, v19.16b - aese v20.16b, v8.16b - aesmc v20.16b, v20.16b - aese v21.16b, v8.16b - aesmc v21.16b, v21.16b - aese v22.16b, v8.16b - aesmc v22.16b, v22.16b - aese v23.16b, v8.16b - aesmc v23.16b, v23.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v18.16b, v9.16b - aesmc v18.16b, v18.16b - aese v19.16b, v9.16b - aesmc v19.16b, v19.16b - aese v20.16b, v9.16b - aesmc v20.16b, v20.16b - aese v21.16b, v9.16b - aesmc v21.16b, v21.16b - aese v22.16b, v9.16b - aesmc v22.16b, v22.16b - aese v23.16b, v9.16b - aesmc v23.16b, v23.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v18.16b, v10.16b - aesmc v18.16b, v18.16b - aese v19.16b, v10.16b - aesmc v19.16b, v19.16b - aese v20.16b, v10.16b - aesmc v20.16b, v20.16b - aese v21.16b, v10.16b - aesmc v21.16b, v21.16b - aese v22.16b, v10.16b - aesmc v22.16b, v22.16b - aese v23.16b, v10.16b - aesmc v23.16b, v23.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - aese v18.16b, v11.16b - aesmc v18.16b, v18.16b - aese v19.16b, v11.16b - aesmc v19.16b, v19.16b - aese v20.16b, v11.16b - aesmc v20.16b, v20.16b - aese v21.16b, v11.16b - aesmc v21.16b, v21.16b - aese v22.16b, v11.16b - aesmc v22.16b, v22.16b - aese v23.16b, v11.16b - aesmc v23.16b, v23.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v18.16b, v12.16b - aesmc v18.16b, v18.16b - aese v19.16b, v12.16b - aesmc v19.16b, v19.16b - aese v20.16b, v12.16b - aesmc v20.16b, v20.16b - aese v21.16b, v12.16b - aesmc v21.16b, v21.16b - aese v22.16b, v12.16b - aesmc v22.16b, v22.16b - aese v23.16b, v12.16b - aesmc v23.16b, v23.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v14.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v14.16b - aese v18.16b, v13.16b - eor v18.16b, v18.16b, v14.16b - aese v19.16b, v13.16b - eor v19.16b, v19.16b, v14.16b - aese v20.16b, v13.16b - eor v20.16b, v20.16b, v14.16b - aese v21.16b, v13.16b - eor v21.16b, v21.16b, v14.16b - aese v22.16b, v13.16b - eor v22.16b, v22.16b, v14.16b - aese v23.16b, v13.16b - eor v23.16b, v23.16b, v14.16b + mov V22.D[1], x22 + mov V23.D[0], x25 + mov V23.D[1], x24 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + rev64 V18.16B, V18.16B + rev64 V19.16B, V19.16B + rev64 V20.16B, V20.16B + rev64 V21.16B, V21.16B + rev64 V22.16B, V22.16B + rev64 V23.16B, V23.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V18.16B, V0.16B + aesmc V18.16B, V18.16B + aese V19.16B, V0.16B + aesmc V19.16B, V19.16B + aese V20.16B, V0.16B + aesmc V20.16B, V20.16B + aese V21.16B, V0.16B + aesmc V21.16B, V21.16B + aese V22.16B, V0.16B + aesmc V22.16B, V22.16B + aese V23.16B, V0.16B + aesmc V23.16B, V23.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V18.16B, V1.16B + aesmc V18.16B, V18.16B + aese V19.16B, V1.16B + aesmc V19.16B, V19.16B + aese V20.16B, V1.16B + aesmc V20.16B, V20.16B + aese V21.16B, V1.16B + aesmc V21.16B, V21.16B + aese V22.16B, V1.16B + aesmc V22.16B, V22.16B + aese V23.16B, V1.16B + aesmc V23.16B, V23.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V18.16B, V2.16B + aesmc V18.16B, V18.16B + aese V19.16B, V2.16B + aesmc V19.16B, V19.16B + aese V20.16B, V2.16B + aesmc V20.16B, V20.16B + aese V21.16B, V2.16B + aesmc V21.16B, V21.16B + aese V22.16B, V2.16B + aesmc V22.16B, V22.16B + aese V23.16B, V2.16B + aesmc V23.16B, V23.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V18.16B, V3.16B + aesmc V18.16B, V18.16B + aese V19.16B, V3.16B + aesmc V19.16B, V19.16B + aese V20.16B, V3.16B + aesmc V20.16B, V20.16B + aese V21.16B, V3.16B + aesmc V21.16B, V21.16B + aese V22.16B, V3.16B + aesmc V22.16B, V22.16B + aese V23.16B, V3.16B + aesmc V23.16B, V23.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V18.16B, V4.16B + aesmc V18.16B, V18.16B + aese V19.16B, V4.16B + aesmc V19.16B, V19.16B + aese V20.16B, V4.16B + aesmc V20.16B, V20.16B + aese V21.16B, V4.16B + aesmc V21.16B, V21.16B + aese V22.16B, V4.16B + aesmc V22.16B, V22.16B + aese V23.16B, V4.16B + aesmc V23.16B, V23.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V18.16B, V5.16B + aesmc V18.16B, V18.16B + aese V19.16B, V5.16B + aesmc V19.16B, V19.16B + aese V20.16B, V5.16B + aesmc V20.16B, V20.16B + aese V21.16B, V5.16B + aesmc V21.16B, V21.16B + aese V22.16B, V5.16B + aesmc V22.16B, V22.16B + aese V23.16B, V5.16B + aesmc V23.16B, V23.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V18.16B, V6.16B + aesmc V18.16B, V18.16B + aese V19.16B, V6.16B + aesmc V19.16B, V19.16B + aese V20.16B, V6.16B + aesmc V20.16B, V20.16B + aese V21.16B, V6.16B + aesmc V21.16B, V21.16B + aese V22.16B, V6.16B + aesmc V22.16B, V22.16B + aese V23.16B, V6.16B + aesmc V23.16B, V23.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V18.16B, V7.16B + aesmc V18.16B, V18.16B + aese V19.16B, V7.16B + aesmc V19.16B, V19.16B + aese V20.16B, V7.16B + aesmc V20.16B, V20.16B + aese V21.16B, V7.16B + aesmc V21.16B, V21.16B + aese V22.16B, V7.16B + aesmc V22.16B, V22.16B + aese V23.16B, V7.16B + aesmc V23.16B, V23.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V18.16B, V8.16B + aesmc V18.16B, V18.16B + aese V19.16B, V8.16B + aesmc V19.16B, V19.16B + aese V20.16B, V8.16B + aesmc V20.16B, V20.16B + aese V21.16B, V8.16B + aesmc V21.16B, V21.16B + aese V22.16B, V8.16B + aesmc V22.16B, V22.16B + aese V23.16B, V8.16B + aesmc V23.16B, V23.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V18.16B, V9.16B + aesmc V18.16B, V18.16B + aese V19.16B, V9.16B + aesmc V19.16B, V19.16B + aese V20.16B, V9.16B + aesmc V20.16B, V20.16B + aese V21.16B, V9.16B + aesmc V21.16B, V21.16B + aese V22.16B, V9.16B + aesmc V22.16B, V22.16B + aese V23.16B, V9.16B + aesmc V23.16B, V23.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V18.16B, V10.16B + aesmc V18.16B, V18.16B + aese V19.16B, V10.16B + aesmc V19.16B, V19.16B + aese V20.16B, V10.16B + aesmc V20.16B, V20.16B + aese V21.16B, V10.16B + aesmc V21.16B, V21.16B + aese V22.16B, V10.16B + aesmc V22.16B, V22.16B + aese V23.16B, V10.16B + aesmc V23.16B, V23.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + aese V18.16B, V11.16B + aesmc V18.16B, V18.16B + aese V19.16B, V11.16B + aesmc V19.16B, V19.16B + aese V20.16B, V11.16B + aesmc V20.16B, V20.16B + aese V21.16B, V11.16B + aesmc V21.16B, V21.16B + aese V22.16B, V11.16B + aesmc V22.16B, V22.16B + aese V23.16B, V11.16B + aesmc V23.16B, V23.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V18.16B, V12.16B + aesmc V18.16B, V18.16B + aese V19.16B, V12.16B + aesmc V19.16B, V19.16B + aese V20.16B, V12.16B + aesmc V20.16B, V20.16B + aese V21.16B, V12.16B + aesmc V21.16B, V21.16B + aese V22.16B, V12.16B + aesmc V22.16B, V22.16B + aese V23.16B, V12.16B + aesmc V23.16B, V23.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V14.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V14.16B + aese V18.16B, V13.16B + eor V18.16B, V18.16B, V14.16B + aese V19.16B, V13.16B + eor V19.16B, V19.16B, V14.16B + aese V20.16B, V13.16B + eor V20.16B, V20.16B, V14.16B + aese V21.16B, V13.16B + eor V21.16B, V21.16B, V14.16B + aese V22.16B, V13.16B + eor V22.16B, V22.16B, V14.16B + aese V23.16B, V13.16B + eor V23.16B, V23.16B, V14.16B adds x9, x9, #8 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B adds x11, x11, #8 - eor v26.16b, v26.16b, v18.16b + eor V26.16B, V26.16B, V18.16B adc x12, x12, xzr - eor v27.16b, v27.16b, v19.16b + eor V27.16B, V27.16B, V19.16B adds x13, x13, #8 - eor v28.16b, v28.16b, v20.16b + eor V28.16B, V28.16B, V20.16B adc x14, x14, xzr - eor v29.16b, v29.16b, v21.16b + eor V29.16B, V29.16B, V21.16B adds x15, x15, #8 - eor v30.16b, v30.16b, v22.16b + eor V30.16B, V30.16B, V22.16B adc x16, x16, xzr - eor v31.16b, v31.16b, v23.16b + eor V31.16B, V31.16B, V23.16B sub w8, w8, #8 - st1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], #0x40 - st1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x1], #0x40 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x1], #0x40 + st1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x1], #0x40 + mov V16.D[0], x10 + mov V16.D[1], x9 cmp w8, #8 bge L_aes_ctr_encrypt_arm64_crypto_256_start_8 L_aes_ctr_encrypt_arm64_crypto_256_start_4 cmp w8, #4 blt L_aes_ctr_encrypt_arm64_crypto_256_start_2 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x0], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x0], #0x40 adds x13, x9, #2 - mov v17.d[0], x12 + mov V17.D[0], x12 adc x14, x10, xzr - mov v17.d[1], x11 + mov V17.D[1], x11 adds x15, x9, #3 - mov v18.d[0], x14 + mov V18.D[0], x14 adc x16, x10, xzr - mov v18.d[1], x13 - mov v19.d[0], x16 - mov v19.d[1], x15 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - rev64 v18.16b, v18.16b - rev64 v19.16b, v19.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v18.16b, v0.16b - aesmc v18.16b, v18.16b - aese v19.16b, v0.16b - aesmc v19.16b, v19.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v18.16b, v1.16b - aesmc v18.16b, v18.16b - aese v19.16b, v1.16b - aesmc v19.16b, v19.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v18.16b, v2.16b - aesmc v18.16b, v18.16b - aese v19.16b, v2.16b - aesmc v19.16b, v19.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v18.16b, v3.16b - aesmc v18.16b, v18.16b - aese v19.16b, v3.16b - aesmc v19.16b, v19.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v18.16b, v4.16b - aesmc v18.16b, v18.16b - aese v19.16b, v4.16b - aesmc v19.16b, v19.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v18.16b, v5.16b - aesmc v18.16b, v18.16b - aese v19.16b, v5.16b - aesmc v19.16b, v19.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v18.16b, v6.16b - aesmc v18.16b, v18.16b - aese v19.16b, v6.16b - aesmc v19.16b, v19.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v18.16b, v7.16b - aesmc v18.16b, v18.16b - aese v19.16b, v7.16b - aesmc v19.16b, v19.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v18.16b, v8.16b - aesmc v18.16b, v18.16b - aese v19.16b, v8.16b - aesmc v19.16b, v19.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v18.16b, v9.16b - aesmc v18.16b, v18.16b - aese v19.16b, v9.16b - aesmc v19.16b, v19.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v18.16b, v10.16b - aesmc v18.16b, v18.16b - aese v19.16b, v10.16b - aesmc v19.16b, v19.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - aese v18.16b, v11.16b - aesmc v18.16b, v18.16b - aese v19.16b, v11.16b - aesmc v19.16b, v19.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v18.16b, v12.16b - aesmc v18.16b, v18.16b - aese v19.16b, v12.16b - aesmc v19.16b, v19.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v14.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v14.16b - aese v18.16b, v13.16b - eor v18.16b, v18.16b, v14.16b - aese v19.16b, v13.16b - eor v19.16b, v19.16b, v14.16b + mov V18.D[1], x13 + mov V19.D[0], x16 + mov V19.D[1], x15 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + rev64 V18.16B, V18.16B + rev64 V19.16B, V19.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V18.16B, V0.16B + aesmc V18.16B, V18.16B + aese V19.16B, V0.16B + aesmc V19.16B, V19.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V18.16B, V1.16B + aesmc V18.16B, V18.16B + aese V19.16B, V1.16B + aesmc V19.16B, V19.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V18.16B, V2.16B + aesmc V18.16B, V18.16B + aese V19.16B, V2.16B + aesmc V19.16B, V19.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V18.16B, V3.16B + aesmc V18.16B, V18.16B + aese V19.16B, V3.16B + aesmc V19.16B, V19.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V18.16B, V4.16B + aesmc V18.16B, V18.16B + aese V19.16B, V4.16B + aesmc V19.16B, V19.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V18.16B, V5.16B + aesmc V18.16B, V18.16B + aese V19.16B, V5.16B + aesmc V19.16B, V19.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V18.16B, V6.16B + aesmc V18.16B, V18.16B + aese V19.16B, V6.16B + aesmc V19.16B, V19.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V18.16B, V7.16B + aesmc V18.16B, V18.16B + aese V19.16B, V7.16B + aesmc V19.16B, V19.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V18.16B, V8.16B + aesmc V18.16B, V18.16B + aese V19.16B, V8.16B + aesmc V19.16B, V19.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V18.16B, V9.16B + aesmc V18.16B, V18.16B + aese V19.16B, V9.16B + aesmc V19.16B, V19.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V18.16B, V10.16B + aesmc V18.16B, V18.16B + aese V19.16B, V10.16B + aesmc V19.16B, V19.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + aese V18.16B, V11.16B + aesmc V18.16B, V18.16B + aese V19.16B, V11.16B + aesmc V19.16B, V19.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V18.16B, V12.16B + aesmc V18.16B, V18.16B + aese V19.16B, V12.16B + aesmc V19.16B, V19.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V14.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V14.16B + aese V18.16B, V13.16B + eor V18.16B, V18.16B, V14.16B + aese V19.16B, V13.16B + eor V19.16B, V19.16B, V14.16B adds x9, x9, #4 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B adds x11, x11, #4 - eor v26.16b, v26.16b, v18.16b + eor V26.16B, V26.16B, V18.16B adc x12, x12, xzr - eor v27.16b, v27.16b, v19.16b + eor V27.16B, V27.16B, V19.16B sub w8, w8, #4 - st1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], #0x40 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x1], #0x40 + mov V16.D[0], x10 + mov V16.D[1], x9 L_aes_ctr_encrypt_arm64_crypto_256_start_2 cmp w8, #2 blt L_aes_ctr_encrypt_arm64_crypto_256_start_1 - ld1 {v24.16b, v25.16b}, [x0], #32 - eor v20.16b, v20.16b, v20.16b - ext v19.16b, v16.16b, v16.16b, #8 - movi v18.16b, #1 - ext v18.16b, v18.16b, v20.16b, #15 - add v17.2d, v19.2d, v18.2d - cmeq v19.2d, v17.2d, #0 - ext v19.16b, v20.16b, v19.16b, #8 - sub v17.2d, v17.2d, v19.2d - ext v17.16b, v17.16b, v17.16b, #8 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v14.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v14.16b + ld1 {V24.16B, V25.16B}, [x0], #32 + eor V20.16B, V20.16B, V20.16B + ext8 V19.16B, V16.16B, V16.16B, #8 + movi V18.16B, #1 + ext8 V18.16B, V18.16B, V20.16B, #15 + add V17.2D, V19.2D, V18.2D + cmeq V19.2D, V17.2D, #0 + ext8 V19.16B, V20.16B, V19.16B, #8 + sub V17.2D, V17.2D, V19.2D + ext8 V17.16B, V17.16B, V17.16B, #8 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V14.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V14.16B adds x9, x9, #2 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B sub w8, w8, #2 - st1 {v24.16b, v25.16b}, [x1], #32 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B}, [x1], #32 + mov V16.D[0], x10 + mov V16.D[1], x9 L_aes_ctr_encrypt_arm64_crypto_256_start_1 cbz w8, L_aes_ctr_encrypt_arm64_crypto_256_done - ld1 {v24.16b}, [x0], #16 - rev64 v16.16b, v16.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v14.16b + ld1 {V24.16B}, [x0], #16 + rev64 V16.16B, V16.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V14.16B adds x9, x9, #1 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - st1 {v24.16b}, [x1], #16 + st1 {V24.16B}, [x1], #16 L_aes_ctr_encrypt_arm64_crypto_256_done cbz w2, L_aes_ctr_encrypt_arm64_crypto_256_partial_done - mov v16.d[0], x10 - mov v16.d[1], x9 - rev64 v16.16b, v16.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v14.16b + mov V16.D[0], x10 + mov V16.D[1], x9 + rev64 V16.16B, V16.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V14.16B adds x9, x9, #1 adc x10, x10, xzr - st1 {v16.2d}, [x5] + st1 {V16.2D}, [x5] mov w13, #16 sub w13, w13, w2 L_aes_ctr_encrypt_arm64_crypto_256_start_byte @@ -4603,8 +4603,8 @@ L_aes_ctr_encrypt_arm64_crypto_256_partial_done ; AES_CTR_128 L_aes_ctr_encrypt_arm64_crypto_start_128 IF :LNOT::DEF:NO_AES_128 - ld1 {v8.2d, v9.2d}, [x4], #32 - ld1 {v10.2d}, [x4] + ld1 {V8.2D, V9.2D}, [x4], #32 + ld1 {V10.2D}, [x4] cmp w8, #1 ble L_aes_ctr_encrypt_arm64_crypto_128_start_1 adds x11, x9, #1 @@ -4616,450 +4616,450 @@ L_aes_ctr_encrypt_arm64_crypto_start_128 adds x15, x9, #3 adc x16, x10, xzr L_aes_ctr_encrypt_arm64_crypto_128_start_8 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x0], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x0], #0x40 - mov v17.d[0], x12 - mov v17.d[1], x11 - mov v18.d[0], x14 - mov v18.d[1], x13 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x0], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x0], #0x40 + mov V17.D[0], x12 + mov V17.D[1], x11 + mov V18.D[0], x14 + mov V18.D[1], x13 adds x17, x9, #4 - mov v19.d[0], x16 + mov V19.D[0], x16 adc x19, x10, xzr - mov v19.d[1], x15 + mov V19.D[1], x15 adds x20, x9, #5 - mov v20.d[0], x19 + mov V20.D[0], x19 adc x21, x10, xzr - mov v20.d[1], x17 + mov V20.D[1], x17 adds x22, x9, #6 - mov v21.d[0], x21 + mov V21.D[0], x21 adc x23, x10, xzr - mov v21.d[1], x20 + mov V21.D[1], x20 adds x24, x9, #7 - mov v22.d[0], x23 + mov V22.D[0], x23 adc x25, x10, xzr - mov v22.d[1], x22 - mov v23.d[0], x25 - mov v23.d[1], x24 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - rev64 v18.16b, v18.16b - rev64 v19.16b, v19.16b - rev64 v20.16b, v20.16b - rev64 v21.16b, v21.16b - rev64 v22.16b, v22.16b - rev64 v23.16b, v23.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v18.16b, v0.16b - aesmc v18.16b, v18.16b - aese v19.16b, v0.16b - aesmc v19.16b, v19.16b - aese v20.16b, v0.16b - aesmc v20.16b, v20.16b - aese v21.16b, v0.16b - aesmc v21.16b, v21.16b - aese v22.16b, v0.16b - aesmc v22.16b, v22.16b - aese v23.16b, v0.16b - aesmc v23.16b, v23.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v18.16b, v1.16b - aesmc v18.16b, v18.16b - aese v19.16b, v1.16b - aesmc v19.16b, v19.16b - aese v20.16b, v1.16b - aesmc v20.16b, v20.16b - aese v21.16b, v1.16b - aesmc v21.16b, v21.16b - aese v22.16b, v1.16b - aesmc v22.16b, v22.16b - aese v23.16b, v1.16b - aesmc v23.16b, v23.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v18.16b, v2.16b - aesmc v18.16b, v18.16b - aese v19.16b, v2.16b - aesmc v19.16b, v19.16b - aese v20.16b, v2.16b - aesmc v20.16b, v20.16b - aese v21.16b, v2.16b - aesmc v21.16b, v21.16b - aese v22.16b, v2.16b - aesmc v22.16b, v22.16b - aese v23.16b, v2.16b - aesmc v23.16b, v23.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v18.16b, v3.16b - aesmc v18.16b, v18.16b - aese v19.16b, v3.16b - aesmc v19.16b, v19.16b - aese v20.16b, v3.16b - aesmc v20.16b, v20.16b - aese v21.16b, v3.16b - aesmc v21.16b, v21.16b - aese v22.16b, v3.16b - aesmc v22.16b, v22.16b - aese v23.16b, v3.16b - aesmc v23.16b, v23.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v18.16b, v4.16b - aesmc v18.16b, v18.16b - aese v19.16b, v4.16b - aesmc v19.16b, v19.16b - aese v20.16b, v4.16b - aesmc v20.16b, v20.16b - aese v21.16b, v4.16b - aesmc v21.16b, v21.16b - aese v22.16b, v4.16b - aesmc v22.16b, v22.16b - aese v23.16b, v4.16b - aesmc v23.16b, v23.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v18.16b, v5.16b - aesmc v18.16b, v18.16b - aese v19.16b, v5.16b - aesmc v19.16b, v19.16b - aese v20.16b, v5.16b - aesmc v20.16b, v20.16b - aese v21.16b, v5.16b - aesmc v21.16b, v21.16b - aese v22.16b, v5.16b - aesmc v22.16b, v22.16b - aese v23.16b, v5.16b - aesmc v23.16b, v23.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v18.16b, v6.16b - aesmc v18.16b, v18.16b - aese v19.16b, v6.16b - aesmc v19.16b, v19.16b - aese v20.16b, v6.16b - aesmc v20.16b, v20.16b - aese v21.16b, v6.16b - aesmc v21.16b, v21.16b - aese v22.16b, v6.16b - aesmc v22.16b, v22.16b - aese v23.16b, v6.16b - aesmc v23.16b, v23.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v18.16b, v7.16b - aesmc v18.16b, v18.16b - aese v19.16b, v7.16b - aesmc v19.16b, v19.16b - aese v20.16b, v7.16b - aesmc v20.16b, v20.16b - aese v21.16b, v7.16b - aesmc v21.16b, v21.16b - aese v22.16b, v7.16b - aesmc v22.16b, v22.16b - aese v23.16b, v7.16b - aesmc v23.16b, v23.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v18.16b, v8.16b - aesmc v18.16b, v18.16b - aese v19.16b, v8.16b - aesmc v19.16b, v19.16b - aese v20.16b, v8.16b - aesmc v20.16b, v20.16b - aese v21.16b, v8.16b - aesmc v21.16b, v21.16b - aese v22.16b, v8.16b - aesmc v22.16b, v22.16b - aese v23.16b, v8.16b - aesmc v23.16b, v23.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - aese v18.16b, v9.16b - eor v18.16b, v18.16b, v10.16b - aese v19.16b, v9.16b - eor v19.16b, v19.16b, v10.16b - aese v20.16b, v9.16b - eor v20.16b, v20.16b, v10.16b - aese v21.16b, v9.16b - eor v21.16b, v21.16b, v10.16b - aese v22.16b, v9.16b - eor v22.16b, v22.16b, v10.16b - aese v23.16b, v9.16b - eor v23.16b, v23.16b, v10.16b + mov V22.D[1], x22 + mov V23.D[0], x25 + mov V23.D[1], x24 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + rev64 V18.16B, V18.16B + rev64 V19.16B, V19.16B + rev64 V20.16B, V20.16B + rev64 V21.16B, V21.16B + rev64 V22.16B, V22.16B + rev64 V23.16B, V23.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V18.16B, V0.16B + aesmc V18.16B, V18.16B + aese V19.16B, V0.16B + aesmc V19.16B, V19.16B + aese V20.16B, V0.16B + aesmc V20.16B, V20.16B + aese V21.16B, V0.16B + aesmc V21.16B, V21.16B + aese V22.16B, V0.16B + aesmc V22.16B, V22.16B + aese V23.16B, V0.16B + aesmc V23.16B, V23.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V18.16B, V1.16B + aesmc V18.16B, V18.16B + aese V19.16B, V1.16B + aesmc V19.16B, V19.16B + aese V20.16B, V1.16B + aesmc V20.16B, V20.16B + aese V21.16B, V1.16B + aesmc V21.16B, V21.16B + aese V22.16B, V1.16B + aesmc V22.16B, V22.16B + aese V23.16B, V1.16B + aesmc V23.16B, V23.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V18.16B, V2.16B + aesmc V18.16B, V18.16B + aese V19.16B, V2.16B + aesmc V19.16B, V19.16B + aese V20.16B, V2.16B + aesmc V20.16B, V20.16B + aese V21.16B, V2.16B + aesmc V21.16B, V21.16B + aese V22.16B, V2.16B + aesmc V22.16B, V22.16B + aese V23.16B, V2.16B + aesmc V23.16B, V23.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V18.16B, V3.16B + aesmc V18.16B, V18.16B + aese V19.16B, V3.16B + aesmc V19.16B, V19.16B + aese V20.16B, V3.16B + aesmc V20.16B, V20.16B + aese V21.16B, V3.16B + aesmc V21.16B, V21.16B + aese V22.16B, V3.16B + aesmc V22.16B, V22.16B + aese V23.16B, V3.16B + aesmc V23.16B, V23.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V18.16B, V4.16B + aesmc V18.16B, V18.16B + aese V19.16B, V4.16B + aesmc V19.16B, V19.16B + aese V20.16B, V4.16B + aesmc V20.16B, V20.16B + aese V21.16B, V4.16B + aesmc V21.16B, V21.16B + aese V22.16B, V4.16B + aesmc V22.16B, V22.16B + aese V23.16B, V4.16B + aesmc V23.16B, V23.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V18.16B, V5.16B + aesmc V18.16B, V18.16B + aese V19.16B, V5.16B + aesmc V19.16B, V19.16B + aese V20.16B, V5.16B + aesmc V20.16B, V20.16B + aese V21.16B, V5.16B + aesmc V21.16B, V21.16B + aese V22.16B, V5.16B + aesmc V22.16B, V22.16B + aese V23.16B, V5.16B + aesmc V23.16B, V23.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V18.16B, V6.16B + aesmc V18.16B, V18.16B + aese V19.16B, V6.16B + aesmc V19.16B, V19.16B + aese V20.16B, V6.16B + aesmc V20.16B, V20.16B + aese V21.16B, V6.16B + aesmc V21.16B, V21.16B + aese V22.16B, V6.16B + aesmc V22.16B, V22.16B + aese V23.16B, V6.16B + aesmc V23.16B, V23.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V18.16B, V7.16B + aesmc V18.16B, V18.16B + aese V19.16B, V7.16B + aesmc V19.16B, V19.16B + aese V20.16B, V7.16B + aesmc V20.16B, V20.16B + aese V21.16B, V7.16B + aesmc V21.16B, V21.16B + aese V22.16B, V7.16B + aesmc V22.16B, V22.16B + aese V23.16B, V7.16B + aesmc V23.16B, V23.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V18.16B, V8.16B + aesmc V18.16B, V18.16B + aese V19.16B, V8.16B + aesmc V19.16B, V19.16B + aese V20.16B, V8.16B + aesmc V20.16B, V20.16B + aese V21.16B, V8.16B + aesmc V21.16B, V21.16B + aese V22.16B, V8.16B + aesmc V22.16B, V22.16B + aese V23.16B, V8.16B + aesmc V23.16B, V23.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + aese V18.16B, V9.16B + eor V18.16B, V18.16B, V10.16B + aese V19.16B, V9.16B + eor V19.16B, V19.16B, V10.16B + aese V20.16B, V9.16B + eor V20.16B, V20.16B, V10.16B + aese V21.16B, V9.16B + eor V21.16B, V21.16B, V10.16B + aese V22.16B, V9.16B + eor V22.16B, V22.16B, V10.16B + aese V23.16B, V9.16B + eor V23.16B, V23.16B, V10.16B adds x9, x9, #8 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B adds x11, x11, #8 - eor v26.16b, v26.16b, v18.16b + eor V26.16B, V26.16B, V18.16B adc x12, x12, xzr - eor v27.16b, v27.16b, v19.16b + eor V27.16B, V27.16B, V19.16B adds x13, x13, #8 - eor v28.16b, v28.16b, v20.16b + eor V28.16B, V28.16B, V20.16B adc x14, x14, xzr - eor v29.16b, v29.16b, v21.16b + eor V29.16B, V29.16B, V21.16B adds x15, x15, #8 - eor v30.16b, v30.16b, v22.16b + eor V30.16B, V30.16B, V22.16B adc x16, x16, xzr - eor v31.16b, v31.16b, v23.16b + eor V31.16B, V31.16B, V23.16B sub w8, w8, #8 - st1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], #0x40 - st1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x1], #0x40 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x1], #0x40 + st1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x1], #0x40 + mov V16.D[0], x10 + mov V16.D[1], x9 cmp w8, #8 bge L_aes_ctr_encrypt_arm64_crypto_128_start_8 L_aes_ctr_encrypt_arm64_crypto_128_start_4 cmp w8, #4 blt L_aes_ctr_encrypt_arm64_crypto_128_start_2 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x0], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x0], #0x40 adds x13, x9, #2 - mov v17.d[0], x12 + mov V17.D[0], x12 adc x14, x10, xzr - mov v17.d[1], x11 + mov V17.D[1], x11 adds x15, x9, #3 - mov v18.d[0], x14 + mov V18.D[0], x14 adc x16, x10, xzr - mov v18.d[1], x13 - mov v19.d[0], x16 - mov v19.d[1], x15 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - rev64 v18.16b, v18.16b - rev64 v19.16b, v19.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v18.16b, v0.16b - aesmc v18.16b, v18.16b - aese v19.16b, v0.16b - aesmc v19.16b, v19.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v18.16b, v1.16b - aesmc v18.16b, v18.16b - aese v19.16b, v1.16b - aesmc v19.16b, v19.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v18.16b, v2.16b - aesmc v18.16b, v18.16b - aese v19.16b, v2.16b - aesmc v19.16b, v19.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v18.16b, v3.16b - aesmc v18.16b, v18.16b - aese v19.16b, v3.16b - aesmc v19.16b, v19.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v18.16b, v4.16b - aesmc v18.16b, v18.16b - aese v19.16b, v4.16b - aesmc v19.16b, v19.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v18.16b, v5.16b - aesmc v18.16b, v18.16b - aese v19.16b, v5.16b - aesmc v19.16b, v19.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v18.16b, v6.16b - aesmc v18.16b, v18.16b - aese v19.16b, v6.16b - aesmc v19.16b, v19.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v18.16b, v7.16b - aesmc v18.16b, v18.16b - aese v19.16b, v7.16b - aesmc v19.16b, v19.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v18.16b, v8.16b - aesmc v18.16b, v18.16b - aese v19.16b, v8.16b - aesmc v19.16b, v19.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - aese v18.16b, v9.16b - eor v18.16b, v18.16b, v10.16b - aese v19.16b, v9.16b - eor v19.16b, v19.16b, v10.16b + mov V18.D[1], x13 + mov V19.D[0], x16 + mov V19.D[1], x15 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + rev64 V18.16B, V18.16B + rev64 V19.16B, V19.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V18.16B, V0.16B + aesmc V18.16B, V18.16B + aese V19.16B, V0.16B + aesmc V19.16B, V19.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V18.16B, V1.16B + aesmc V18.16B, V18.16B + aese V19.16B, V1.16B + aesmc V19.16B, V19.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V18.16B, V2.16B + aesmc V18.16B, V18.16B + aese V19.16B, V2.16B + aesmc V19.16B, V19.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V18.16B, V3.16B + aesmc V18.16B, V18.16B + aese V19.16B, V3.16B + aesmc V19.16B, V19.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V18.16B, V4.16B + aesmc V18.16B, V18.16B + aese V19.16B, V4.16B + aesmc V19.16B, V19.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V18.16B, V5.16B + aesmc V18.16B, V18.16B + aese V19.16B, V5.16B + aesmc V19.16B, V19.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V18.16B, V6.16B + aesmc V18.16B, V18.16B + aese V19.16B, V6.16B + aesmc V19.16B, V19.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V18.16B, V7.16B + aesmc V18.16B, V18.16B + aese V19.16B, V7.16B + aesmc V19.16B, V19.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V18.16B, V8.16B + aesmc V18.16B, V18.16B + aese V19.16B, V8.16B + aesmc V19.16B, V19.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + aese V18.16B, V9.16B + eor V18.16B, V18.16B, V10.16B + aese V19.16B, V9.16B + eor V19.16B, V19.16B, V10.16B adds x9, x9, #4 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B adds x11, x11, #4 - eor v26.16b, v26.16b, v18.16b + eor V26.16B, V26.16B, V18.16B adc x12, x12, xzr - eor v27.16b, v27.16b, v19.16b + eor V27.16B, V27.16B, V19.16B sub w8, w8, #4 - st1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], #0x40 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x1], #0x40 + mov V16.D[0], x10 + mov V16.D[1], x9 L_aes_ctr_encrypt_arm64_crypto_128_start_2 cmp w8, #2 blt L_aes_ctr_encrypt_arm64_crypto_128_start_1 - ld1 {v24.16b, v25.16b}, [x0], #32 - eor v20.16b, v20.16b, v20.16b - ext v19.16b, v16.16b, v16.16b, #8 - movi v18.16b, #1 - ext v18.16b, v18.16b, v20.16b, #15 - add v17.2d, v19.2d, v18.2d - cmeq v19.2d, v17.2d, #0 - ext v19.16b, v20.16b, v19.16b, #8 - sub v17.2d, v17.2d, v19.2d - ext v17.16b, v17.16b, v17.16b, #8 - rev64 v16.16b, v16.16b - rev64 v17.16b, v17.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b + ld1 {V24.16B, V25.16B}, [x0], #32 + eor V20.16B, V20.16B, V20.16B + ext8 V19.16B, V16.16B, V16.16B, #8 + movi V18.16B, #1 + ext8 V18.16B, V18.16B, V20.16B, #15 + add V17.2D, V19.2D, V18.2D + cmeq V19.2D, V17.2D, #0 + ext8 V19.16B, V20.16B, V19.16B, #8 + sub V17.2D, V17.2D, V19.2D + ext8 V17.16B, V17.16B, V17.16B, #8 + rev64 V16.16B, V16.16B + rev64 V17.16B, V17.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B adds x9, x9, #2 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - eor v25.16b, v25.16b, v17.16b + eor V25.16B, V25.16B, V17.16B sub w8, w8, #2 - st1 {v24.16b, v25.16b}, [x1], #32 - mov v16.d[0], x10 - mov v16.d[1], x9 + st1 {V24.16B, V25.16B}, [x1], #32 + mov V16.D[0], x10 + mov V16.D[1], x9 L_aes_ctr_encrypt_arm64_crypto_128_start_1 cbz w8, L_aes_ctr_encrypt_arm64_crypto_128_done - ld1 {v24.16b}, [x0], #16 - rev64 v16.16b, v16.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b + ld1 {V24.16B}, [x0], #16 + rev64 V16.16B, V16.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B adds x9, x9, #1 - eor v24.16b, v24.16b, v16.16b + eor V24.16B, V24.16B, V16.16B adc x10, x10, xzr - st1 {v24.16b}, [x1], #16 + st1 {V24.16B}, [x1], #16 L_aes_ctr_encrypt_arm64_crypto_128_done cbz w2, L_aes_ctr_encrypt_arm64_crypto_128_partial_done - mov v16.d[0], x10 - mov v16.d[1], x9 - rev64 v16.16b, v16.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b + mov V16.D[0], x10 + mov V16.D[1], x9 + rev64 V16.16B, V16.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B adds x9, x9, #1 adc x10, x10, xzr - st1 {v16.2d}, [x5] + st1 {V16.2D}, [x5] mov w13, #16 sub w13, w13, w2 L_aes_ctr_encrypt_arm64_crypto_128_start_byte @@ -5080,10 +5080,10 @@ L_aes_ctr_encrypt_arm64_crypto_done ldp x20, x21, [x29, #32] ldp x22, x23, [x29, #48] ldp x24, x25, [x29, #64] - ldp d8, d9, [x29, #80] - ldp d10, d11, [x29, #96] - ldp d12, d13, [x29, #112] - ldp d14, d15, [x29, #128] + ldp D8, D9, [x29, #80] + ldp D10, D11, [x29, #96] + ldp D12, D13, [x29, #112] + ldp D14, D15, [x29, #128] ldp x29, x30, [sp], #0x90 ret ENDP @@ -5093,48 +5093,48 @@ L_aes_ctr_encrypt_arm64_crypto_done ALIGN 4 EXPORT AES_GCM_set_key_AARCH64 AES_GCM_set_key_AARCH64 PROC - ld1 {v0.16b}, [x0] - ld1 {v1.2d, v2.2d, v3.2d, v4.2d}, [x1], #0x40 - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b - aesmc v0.16b, v0.16b - aese v0.16b, v3.16b - aesmc v0.16b, v0.16b - aese v0.16b, v4.16b - aesmc v0.16b, v0.16b - ld1 {v1.2d, v2.2d, v3.2d, v4.2d}, [x1], #0x40 - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b - aesmc v0.16b, v0.16b - aese v0.16b, v3.16b - aesmc v0.16b, v0.16b - aese v0.16b, v4.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B}, [x0] + ld1 {V1.2D, V2.2D, V3.2D, V4.2D}, [x1], #0x40 + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B + aesmc V0.16B, V0.16B + aese V0.16B, V3.16B + aesmc V0.16B, V0.16B + aese V0.16B, V4.16B + aesmc V0.16B, V0.16B + ld1 {V1.2D, V2.2D, V3.2D, V4.2D}, [x1], #0x40 + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B + aesmc V0.16B, V0.16B + aese V0.16B, V3.16B + aesmc V0.16B, V0.16B + aese V0.16B, V4.16B + aesmc V0.16B, V0.16B subs w3, w3, #10 - ld1 {v1.2d, v2.2d}, [x1], #32 - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b + ld1 {V1.2D, V2.2D}, [x1], #32 + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B beq L_aes_gcm_set_key_arm64_crypto_round_done - ld1 {v1.2d, v2.2d}, [x1], #32 + ld1 {V1.2D, V2.2D}, [x1], #32 subs w3, w3, #2 - aesmc v0.16b, v0.16b - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b + aesmc V0.16B, V0.16B + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B beq L_aes_gcm_set_key_arm64_crypto_round_done - ld1 {v1.2d, v2.2d}, [x1], #32 - aesmc v0.16b, v0.16b - aese v0.16b, v1.16b - aesmc v0.16b, v0.16b - aese v0.16b, v2.16b + ld1 {V1.2D, V2.2D}, [x1], #32 + aesmc V0.16B, V0.16B + aese V0.16B, V1.16B + aesmc V0.16B, V0.16B + aese V0.16B, V2.16B L_aes_gcm_set_key_arm64_crypto_round_done - ld1 {v1.2d}, [x1] - eor v0.16b, v0.16b, v1.16b - rbit v0.16b, v0.16b - st1 {v0.2d}, [x2] + ld1 {V1.2D}, [x1] + eor V0.16B, V0.16B, V1.16B + rbit V0.16B, V0.16B + st1 {V0.2D}, [x2] ret ENDP AREA |.text|, CODE, READONLY @@ -5147,20 +5147,20 @@ AES_GCM_encrypt_AARCH64 PROC stp x20, x21, [x29, #40] stp x22, x23, [x29, #56] str x24, [x29, #72] - stp d8, d9, [x29, #80] - stp d10, d11, [x29, #96] - stp d12, d13, [x29, #112] - stp d14, d15, [x29, #128] + stp D8, D9, [x29, #80] + stp D10, D11, [x29, #96] + stp D12, D13, [x29, #112] + stp D14, D15, [x29, #128] ldr w8, [x29, #144] ldr x9, [x29, #152] ldr x10, [x29, #160] ldr x11, [x29, #168] ldr x12, [x29, #176] ldr w13, [x29, #184] - movi v27.16b, #0x87 - eor v26.16b, v26.16b, v26.16b - ushr v27.2d, v27.2d, #56 - ld1 {v22.2d}, [x10] + movi V27.16B, #0x87 + eor V26.16B, V26.16B, V26.16B + ushr V27.2D, V27.2D, #56 + ld1 {V22.2D}, [x10] cmp w8, #0x40 csetm x16, lt cmp w2, #32 @@ -5168,14 +5168,14 @@ AES_GCM_encrypt_AARCH64 PROC ands x16, x16, x17 bne L_aes_gcm_encrypt_arm64_crypto_h_done ; Square H => H^2 - pmull2 v31.1q, v22.2d, v22.2d - pmull v30.1q, v22.1d, v22.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v23.16b, v30.16b, v31.16b + pmull2 V31.1Q, V22.2D, V22.2D + pmull V30.1Q, V22.1D, V22.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V23.16B, V30.16B, V31.16B cmp w8, #0x100 csetm x16, lt cmp w2, #0x40 @@ -5183,29 +5183,29 @@ AES_GCM_encrypt_AARCH64 PROC ands x16, x16, x17 bne L_aes_gcm_encrypt_arm64_crypto_h_done ; Multiply H and H^2 => H^3 - pmull v28.1q, v22.1d, v23.1d - pmull2 v29.1q, v22.2d, v23.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v23.1d - pmull2 v31.1q, v31.2d, v23.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V23.1D + pmull2 V29.1Q, V22.2D, V23.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V23.1D + pmull2 V31.1Q, V31.2D, V23.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v24.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V24.16B, V28.16B, V30.16B ; Square H^2 => H^4 - pmull2 v31.1q, v23.2d, v23.2d - pmull v30.1q, v23.1d, v23.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v25.16b, v30.16b, v31.16b + pmull2 V31.1Q, V23.2D, V23.2D + pmull V30.1Q, V23.1D, V23.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V25.16B, V30.16B, V31.16B ; Done cmp w8, #0x400 csetm x16, lt @@ -5214,53 +5214,53 @@ AES_GCM_encrypt_AARCH64 PROC ands x16, x16, x17 bne L_aes_gcm_encrypt_arm64_crypto_h_done ; Multiply H and H^4 => H^5 - pmull v28.1q, v22.1d, v25.1d - pmull2 v29.1q, v22.2d, v25.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v25.1d - pmull2 v31.1q, v31.2d, v25.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V25.1D + pmull2 V29.1Q, V22.2D, V25.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V25.1D + pmull2 V31.1Q, V31.2D, V25.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v4.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V4.16B, V28.16B, V30.16B ; Square H^3 => H^6 - pmull2 v31.1q, v24.2d, v24.2d - pmull v30.1q, v24.1d, v24.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v5.16b, v30.16b, v31.16b + pmull2 V31.1Q, V24.2D, V24.2D + pmull V30.1Q, V24.1D, V24.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V5.16B, V30.16B, V31.16B ; Multiply H and H^6 => H^7 - pmull v28.1q, v22.1d, v5.1d - pmull2 v29.1q, v22.2d, v5.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v5.1d - pmull2 v31.1q, v31.2d, v5.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V5.1D + pmull2 V29.1Q, V22.2D, V5.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V5.1D + pmull2 V31.1Q, V31.2D, V5.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v6.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V6.16B, V28.16B, V30.16B ; Square H^4 => H^8 - pmull2 v31.1q, v25.2d, v25.2d - pmull v30.1q, v25.1d, v25.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v7.16b, v30.16b, v31.16b + pmull2 V31.1Q, V25.2D, V25.2D + pmull V30.1Q, V25.1D, V25.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V7.16B, V30.16B, V31.16B ; Done L_aes_gcm_encrypt_arm64_crypto_h_done lsr w14, w8, #4 @@ -5271,102 +5271,102 @@ L_aes_gcm_encrypt_arm64_crypto_h_done cmp w14, #0x40 blt L_aes_gcm_encrypt_arm64_crypto_aad_start_4 L_aes_gcm_encrypt_arm64_crypto_aad_start_8 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x7], #0x40 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x7], #0x40 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x7], #0x40 + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x7], #0x40 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #8 cmp w14, #8 @@ -5377,57 +5377,57 @@ L_aes_gcm_encrypt_arm64_crypto_aad_start_8 cmp w14, #16 blt L_aes_gcm_encrypt_arm64_crypto_aad_start_2 L_aes_gcm_encrypt_arm64_crypto_aad_start_4 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x7], #0x40 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x7], #0x40 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #4 cmp w14, #4 @@ -5436,35 +5436,35 @@ L_aes_gcm_encrypt_arm64_crypto_aad_start_4 blt L_aes_gcm_encrypt_arm64_crypto_aad_done beq L_aes_gcm_encrypt_arm64_crypto_aad_start_1 L_aes_gcm_encrypt_arm64_crypto_aad_start_2 - ld1 {v18.16b, v19.16b}, [x7], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.16B, V19.16B}, [x7], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #2 cmp w14, #1 @@ -5473,33 +5473,33 @@ L_aes_gcm_encrypt_arm64_crypto_aad_start_2 L_aes_gcm_encrypt_arm64_crypto_aad_start_1 cbz w14, L_aes_gcm_encrypt_arm64_crypto_aad_done L_aes_gcm_encrypt_arm64_crypto_aad_both_1 - ld1 {v18.16b}, [x7], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.16B}, [x7], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH subs w14, w14, #1 bne L_aes_gcm_encrypt_arm64_crypto_aad_both_1 L_aes_gcm_encrypt_arm64_crypto_aad_done and w14, w8, #15 cbz w14, L_aes_gcm_encrypt_arm64_crypto_aad_partial_done - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov w20, w14 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp w20, #8 blt L_aes_gcm_encrypt_arm64_crypto_aad_start_dw ldr x19, [x7], #8 @@ -5525,68 +5525,68 @@ L_aes_gcm_encrypt_arm64_crypto_aad_start_byte bne L_aes_gcm_encrypt_arm64_crypto_aad_start_byte L_aes_gcm_encrypt_arm64_crypto_aad_end_bytes sub x11, x11, x14 - ld1 {v18.2d}, [x11] - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.2D}, [x11] + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_aad_partial_done ; Load Nonce cmp w4, #12 bne L_aes_gcm_encrypt_arm64_crypto_ghash_nonce ldr x16, [x3] - movi v13.4s, #1, lsl 24 + movi V13.4S, #1, lsl 24 ldr w17, [x3, #8] - mov v13.d[0], x16 - mov v13.s[2], w17 + mov V13.D[0], x16 + mov V13.S[2], w17 mov w15, #1 b L_aes_gcm_encrypt_arm64_crypto_done_nonce L_aes_gcm_encrypt_arm64_crypto_ghash_nonce - eor v13.16b, v13.16b, v13.16b + eor V13.16B, V13.16B, V13.16B lsr w14, w4, #4 cbz w14, L_aes_gcm_encrypt_arm64_crypto_nonce_done L_aes_gcm_encrypt_arm64_crypto_nonce_start_1 - ld1 {v18.16b}, [x3], #16 - rbit v18.16b, v18.16b - eor v21.16b, v13.16b, v18.16b + ld1 {V18.16B}, [x3], #16 + rbit V18.16B, V18.16B + eor V21.16B, V13.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B ; Done GHASH subs w14, w14, #1 bne L_aes_gcm_encrypt_arm64_crypto_nonce_start_1 L_aes_gcm_encrypt_arm64_crypto_nonce_done and w24, w4, #15 cbz x24, L_aes_gcm_encrypt_arm64_crypto_nonce_partial_done - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov w20, w24 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp w20, #8 blt L_aes_gcm_encrypt_arm64_crypto_nonce_start_dw ldr x19, [x3], #8 @@ -5612,51 +5612,51 @@ L_aes_gcm_encrypt_arm64_crypto_nonce_start_byte bne L_aes_gcm_encrypt_arm64_crypto_nonce_start_byte L_aes_gcm_encrypt_arm64_crypto_nonce_end_bytes sub x11, x11, x24 - ld1 {v18.2d}, [x11] - rbit v18.16b, v18.16b - eor v21.16b, v13.16b, v18.16b + ld1 {V18.2D}, [x11] + rbit V18.16B, V18.16B + eor V21.16B, V13.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_nonce_partial_done eor x14, x14, x14 ubfiz x24, x4, #3, #32 - mov v28.d[0], x14 - mov v28.d[1], x24 - rev64 v28.16b, v28.16b - rbit v28.16b, v28.16b - eor v13.16b, v13.16b, v28.16b - pmull v28.1q, v13.1d, v22.1d - pmull2 v29.1q, v13.2d, v22.2d - ext v31.16b, v13.16b, v13.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b - rbit v13.16b, v13.16b - mov w15, v13.s[3] + mov V28.D[0], x14 + mov V28.D[1], x24 + rev64 V28.16B, V28.16B + rbit V28.16B, V28.16B + eor V13.16B, V13.16B, V28.16B + pmull V28.1Q, V13.1D, V22.1D + pmull2 V29.1Q, V13.2D, V22.2D + ext8 V31.16B, V13.16B, V13.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B + rbit V13.16B, V13.16B + mov w15, V13.S[3] rev w15, w15 L_aes_gcm_encrypt_arm64_crypto_done_nonce - st1 {v13.2d}, [x12] + st1 {V13.2D}, [x12] lsr w14, w2, #4 cmp w13, #12 blt L_aes_gcm_encrypt_arm64_crypto_start_128 @@ -5666,23 +5666,23 @@ L_aes_gcm_encrypt_arm64_crypto_done_nonce cmp w14, #32 blt L_aes_gcm_encrypt_arm64_crypto_192_start_4 L_aes_gcm_encrypt_arm64_crypto_192_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 rev w23, w23 rev w22, w22 @@ -5691,1202 +5691,1202 @@ L_aes_gcm_encrypt_arm64_crypto_192_start_8 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v0.16b}, [x0], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v1.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v2.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v3.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x12] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V0.16B}, [x0], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V1.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V2.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V3.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x12] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_encrypt_arm64_crypto_192_end_8 L_aes_gcm_encrypt_arm64_crypto_192_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w23, w23 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w22, w22 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w21, w21 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w20, w20 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w19, w19 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w17, w17 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v30.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - mov v28.d[1], v31.d[0] - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V30.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + mov V28.D[1], V31.D[0] + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_encrypt_arm64_crypto_192_both_8 L_aes_gcm_encrypt_arm64_crypto_192_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_192_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x9], #0x40 - ld1 {v12.2d}, [x9] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x9], #0x40 + ld1 {V12.2D}, [x9] cmp w14, #1 blt L_aes_gcm_encrypt_arm64_crypto_192_done beq L_aes_gcm_encrypt_arm64_crypto_192_start_1 cmp w14, #4 blt L_aes_gcm_encrypt_arm64_crypto_192_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x0], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x0], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 blt L_aes_gcm_encrypt_arm64_crypto_192_end_4 L_aes_gcm_encrypt_arm64_crypto_192_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 rev w19, w19 rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 bge L_aes_gcm_encrypt_arm64_crypto_192_both_4 L_aes_gcm_encrypt_arm64_crypto_192_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_encrypt_arm64_crypto_192_start_1 blt L_aes_gcm_encrypt_arm64_crypto_192_done L_aes_gcm_encrypt_arm64_crypto_192_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w20 + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_encrypt_arm64_crypto_192_done L_aes_gcm_encrypt_arm64_crypto_192_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_192_done ands w14, w2, #15 beq L_aes_gcm_encrypt_arm64_crypto_192_partial_done - eor v16.16b, v16.16b, v16.16b + eor V16.16B, V16.16B, V16.16B mov w19, w14 - st1 {v16.2d}, [x11] + st1 {V16.2D}, [x11] cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_192_start_dw ldr x17, [x0], #8 @@ -6912,37 +6912,37 @@ L_aes_gcm_encrypt_arm64_crypto_192_start_byte bne L_aes_gcm_encrypt_arm64_crypto_192_start_byte L_aes_gcm_encrypt_arm64_crypto_192_end_bytes sub x11, x11, x14 - ld1 {v16.2d}, [x11] + ld1 {V16.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v16.16b, v16.16b, v14.16b - st1 {v16.2d}, [x11] + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V16.16B, V16.16B, V14.16B + st1 {V16.2D}, [x11] mov w19, w14 cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_192_out_start_dw @@ -6975,80 +6975,80 @@ L_aes_gcm_encrypt_arm64_crypto_192_start_zero strb wzr, [x11], #1 bne L_aes_gcm_encrypt_arm64_crypto_192_start_zero sub x11, x11, #16 - ld1 {v14.2d}, [x11] - rbit v14.16b, v14.16b - eor v15.16b, v26.16b, v14.16b + ld1 {V14.2D}, [x11] + rbit V14.16B, V14.16B + eor V15.16B, V26.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v15.1d, v22.1d - pmull2 v29.1q, v15.2d, v22.2d - ext v31.16b, v15.16b, v15.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V15.1D, V22.1D + pmull2 V29.1Q, V15.2D, V22.2D + ext8 V31.16B, V15.16B, V15.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_192_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - eor v26.16b, v26.16b, v28.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - ext v31.16b, v26.16b, v26.16b, #8 - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + eor V26.16B, V26.16B, V28.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V26.16B, V26.16B, #8 + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 bne L_aes_gcm_encrypt_arm64_crypto_192_tag_partial - st1 {v26.16b}, [x5] + st1 {V26.16B}, [x5] b L_aes_gcm_encrypt_arm64_crypto_done L_aes_gcm_encrypt_arm64_crypto_192_tag_partial - st1 {v26.16b}, [x11] + st1 {V26.16B}, [x11] cmp w6, #8 blt L_aes_gcm_encrypt_arm64_crypto_192_tag_start_dw ldr x16, [x11], #8 @@ -7081,23 +7081,23 @@ L_aes_gcm_encrypt_arm64_crypto_start_256 cmp w14, #32 blt L_aes_gcm_encrypt_arm64_crypto_256_start_4 L_aes_gcm_encrypt_arm64_crypto_256_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 rev w23, w23 rev w22, w22 @@ -7106,1319 +7106,1319 @@ L_aes_gcm_encrypt_arm64_crypto_256_start_8 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v0.16b}, [x0], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v1.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v2.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v3.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x12] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V0.16B}, [x0], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V1.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V2.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V3.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x12] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_encrypt_arm64_crypto_256_end_8 L_aes_gcm_encrypt_arm64_crypto_256_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w23, w23 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w22, w22 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w21, w21 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w20, w20 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w19, w19 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w17, w17 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v30.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - mov v28.d[1], v31.d[0] - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V30.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + mov V28.D[1], V31.D[0] + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_encrypt_arm64_crypto_256_both_8 L_aes_gcm_encrypt_arm64_crypto_256_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_256_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x9], #0x40 - ld1 {v12.2d}, [x9], #16 + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x9], #0x40 + ld1 {V12.2D}, [x9], #16 cmp w14, #1 blt L_aes_gcm_encrypt_arm64_crypto_256_done beq L_aes_gcm_encrypt_arm64_crypto_256_start_1 cmp w14, #4 blt L_aes_gcm_encrypt_arm64_crypto_256_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x0], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x0], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 blt L_aes_gcm_encrypt_arm64_crypto_256_end_4 L_aes_gcm_encrypt_arm64_crypto_256_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 rev w19, w19 rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 bge L_aes_gcm_encrypt_arm64_crypto_256_both_4 L_aes_gcm_encrypt_arm64_crypto_256_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_encrypt_arm64_crypto_256_start_1 blt L_aes_gcm_encrypt_arm64_crypto_256_done L_aes_gcm_encrypt_arm64_crypto_256_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w20 + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_encrypt_arm64_crypto_256_done L_aes_gcm_encrypt_arm64_crypto_256_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_256_done ands w14, w2, #15 beq L_aes_gcm_encrypt_arm64_crypto_256_partial_done - eor v16.16b, v16.16b, v16.16b + eor V16.16B, V16.16B, V16.16B mov w19, w14 - st1 {v16.2d}, [x11] + st1 {V16.2D}, [x11] cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_256_start_dw ldr x17, [x0], #8 @@ -8444,43 +8444,43 @@ L_aes_gcm_encrypt_arm64_crypto_256_start_byte bne L_aes_gcm_encrypt_arm64_crypto_256_start_byte L_aes_gcm_encrypt_arm64_crypto_256_end_bytes sub x11, x11, x14 - ld1 {v16.2d}, [x11] + ld1 {V16.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v16.16b, v16.16b, v14.16b - st1 {v16.2d}, [x11] + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V16.16B, V16.16B, V14.16B + st1 {V16.2D}, [x11] mov w19, w14 cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_256_out_start_dw @@ -8513,88 +8513,88 @@ L_aes_gcm_encrypt_arm64_crypto_256_start_zero strb wzr, [x11], #1 bne L_aes_gcm_encrypt_arm64_crypto_256_start_zero sub x11, x11, #16 - ld1 {v14.2d}, [x11] - rbit v14.16b, v14.16b - eor v15.16b, v26.16b, v14.16b + ld1 {V14.2D}, [x11] + rbit V14.16B, V14.16B + eor V15.16B, V26.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v15.1d, v22.1d - pmull2 v29.1q, v15.2d, v22.2d - ext v31.16b, v15.16b, v15.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V15.1D, V22.1D + pmull2 V29.1Q, V15.2D, V22.2D + ext8 V31.16B, V15.16B, V15.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_256_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v28.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v26.16b, v26.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V28.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V26.16B, V26.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - ldr q11, [x9, #-32] - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - ldr q12, [x9, #-16] - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + ldr Q11, [x9, #-32] + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + ldr Q12, [x9, #-16] + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 bne L_aes_gcm_encrypt_arm64_crypto_256_tag_partial - st1 {v26.16b}, [x5] + st1 {V26.16B}, [x5] b L_aes_gcm_encrypt_arm64_crypto_done L_aes_gcm_encrypt_arm64_crypto_256_tag_partial - st1 {v26.16b}, [x11] + st1 {V26.16B}, [x11] cmp w6, #8 blt L_aes_gcm_encrypt_arm64_crypto_256_tag_start_dw ldr x16, [x11], #8 @@ -8627,23 +8627,23 @@ L_aes_gcm_encrypt_arm64_crypto_start_128 cmp w14, #32 blt L_aes_gcm_encrypt_arm64_crypto_128_start_4 L_aes_gcm_encrypt_arm64_crypto_128_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 rev w23, w23 rev w22, w22 @@ -8652,1090 +8652,1090 @@ L_aes_gcm_encrypt_arm64_crypto_128_start_8 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - ld1 {v0.16b}, [x0], #16 - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - ld1 {v1.16b}, [x0], #16 - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - ld1 {v2.16b}, [x0], #16 - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - ld1 {v3.16b}, [x0], #16 - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x12] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + ld1 {V0.16B}, [x0], #16 + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + ld1 {V1.16B}, [x0], #16 + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + ld1 {V2.16B}, [x0], #16 + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + ld1 {V3.16B}, [x0], #16 + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x12] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_encrypt_arm64_crypto_128_end_8 L_aes_gcm_encrypt_arm64_crypto_128_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w23, w23 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w22, w22 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w21, w21 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w20, w20 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w19, w19 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w17, w17 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v30.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - mov v28.d[1], v31.d[0] - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V30.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + mov V28.D[1], V31.D[0] + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_encrypt_arm64_crypto_128_both_8 L_aes_gcm_encrypt_arm64_crypto_128_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_128_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d}, [x9], #32 - ld1 {v10.2d}, [x9] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D}, [x9], #32 + ld1 {V10.2D}, [x9] cmp w14, #1 blt L_aes_gcm_encrypt_arm64_crypto_128_done beq L_aes_gcm_encrypt_arm64_crypto_128_start_1 cmp w14, #4 blt L_aes_gcm_encrypt_arm64_crypto_128_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x0], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x0], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 blt L_aes_gcm_encrypt_arm64_crypto_128_end_4 L_aes_gcm_encrypt_arm64_crypto_128_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 rev w19, w19 rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 bge L_aes_gcm_encrypt_arm64_crypto_128_both_4 L_aes_gcm_encrypt_arm64_crypto_128_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_encrypt_arm64_crypto_128_start_1 blt L_aes_gcm_encrypt_arm64_crypto_128_done L_aes_gcm_encrypt_arm64_crypto_128_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w20 + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_encrypt_arm64_crypto_128_done L_aes_gcm_encrypt_arm64_crypto_128_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v18.16b}, [x0], #16 - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V18.16B}, [x0], #16 + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_128_done ands w14, w2, #15 beq L_aes_gcm_encrypt_arm64_crypto_128_partial_done - eor v16.16b, v16.16b, v16.16b + eor V16.16B, V16.16B, V16.16B mov w19, w14 - st1 {v16.2d}, [x11] + st1 {V16.2D}, [x11] cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_128_start_dw ldr x17, [x0], #8 @@ -9761,33 +9761,33 @@ L_aes_gcm_encrypt_arm64_crypto_128_start_byte bne L_aes_gcm_encrypt_arm64_crypto_128_start_byte L_aes_gcm_encrypt_arm64_crypto_128_end_bytes sub x11, x11, x14 - ld1 {v16.2d}, [x11] + ld1 {V16.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - eor v16.16b, v16.16b, v14.16b - st1 {v16.2d}, [x11] + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + eor V16.16B, V16.16B, V14.16B + st1 {V16.2D}, [x11] mov w19, w14 cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_128_out_start_dw @@ -9820,76 +9820,76 @@ L_aes_gcm_encrypt_arm64_crypto_128_start_zero strb wzr, [x11], #1 bne L_aes_gcm_encrypt_arm64_crypto_128_start_zero sub x11, x11, #16 - ld1 {v14.2d}, [x11] - rbit v14.16b, v14.16b - eor v15.16b, v26.16b, v14.16b + ld1 {V14.2D}, [x11] + rbit V14.16B, V14.16B + eor V15.16B, V26.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v15.1d, v22.1d - pmull2 v29.1q, v15.2d, v22.2d - ext v31.16b, v15.16b, v15.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V15.1D, V22.1D + pmull2 V29.1Q, V15.2D, V22.2D + ext8 V31.16B, V15.16B, V15.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_128_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - eor v26.16b, v26.16b, v28.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - ext v31.16b, v26.16b, v26.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + eor V26.16B, V26.16B, V28.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + ext8 V31.16B, V26.16B, V26.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 bne L_aes_gcm_encrypt_arm64_crypto_128_tag_partial - st1 {v26.16b}, [x5] + st1 {V26.16B}, [x5] b L_aes_gcm_encrypt_arm64_crypto_done L_aes_gcm_encrypt_arm64_crypto_128_tag_partial - st1 {v26.16b}, [x11] + st1 {V26.16B}, [x11] cmp w6, #8 blt L_aes_gcm_encrypt_arm64_crypto_128_tag_start_dw ldr x16, [x11], #8 @@ -9920,10 +9920,10 @@ L_aes_gcm_encrypt_arm64_crypto_done ldp x20, x21, [x29, #40] ldp x22, x23, [x29, #56] ldr x24, [x29, #72] - ldp d8, d9, [x29, #80] - ldp d10, d11, [x29, #96] - ldp d12, d13, [x29, #112] - ldp d14, d15, [x29, #128] + ldp D8, D9, [x29, #80] + ldp D10, D11, [x29, #96] + ldp D12, D13, [x29, #112] + ldp D14, D15, [x29, #128] ldp x29, x30, [sp], #0x90 ret ENDP @@ -9938,20 +9938,20 @@ AES_GCM_decrypt_AARCH64 PROC stp x20, x21, [x29, #40] stp x22, x23, [x29, #56] str x24, [x29, #72] - stp d8, d9, [x29, #80] - stp d10, d11, [x29, #96] - stp d12, d13, [x29, #112] - stp d14, d15, [x29, #128] + stp D8, D9, [x29, #80] + stp D10, D11, [x29, #96] + stp D12, D13, [x29, #112] + stp D14, D15, [x29, #128] ldr w8, [x29, #144] ldr x9, [x29, #152] ldr x10, [x29, #160] ldr x11, [x29, #168] ldr x12, [x29, #176] ldr w13, [x29, #184] - movi v27.16b, #0x87 - eor v26.16b, v26.16b, v26.16b - ushr v27.2d, v27.2d, #56 - ld1 {v22.2d}, [x10] + movi V27.16B, #0x87 + eor V26.16B, V26.16B, V26.16B + ushr V27.2D, V27.2D, #56 + ld1 {V22.2D}, [x10] cmp w8, #0x40 csetm x16, lt cmp w2, #32 @@ -9959,14 +9959,14 @@ AES_GCM_decrypt_AARCH64 PROC ands x16, x16, x17 bne L_aes_gcm_decrypt_arm64_crypto_h_done ; Square H => H^2 - pmull2 v31.1q, v22.2d, v22.2d - pmull v30.1q, v22.1d, v22.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v23.16b, v30.16b, v31.16b + pmull2 V31.1Q, V22.2D, V22.2D + pmull V30.1Q, V22.1D, V22.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V23.16B, V30.16B, V31.16B cmp w8, #0x100 csetm x16, lt cmp w2, #0x40 @@ -9974,29 +9974,29 @@ AES_GCM_decrypt_AARCH64 PROC ands x16, x16, x17 bne L_aes_gcm_decrypt_arm64_crypto_h_done ; Multiply H and H^2 => H^3 - pmull v28.1q, v22.1d, v23.1d - pmull2 v29.1q, v22.2d, v23.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v23.1d - pmull2 v31.1q, v31.2d, v23.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V23.1D + pmull2 V29.1Q, V22.2D, V23.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V23.1D + pmull2 V31.1Q, V31.2D, V23.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v24.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V24.16B, V28.16B, V30.16B ; Square H^2 => H^4 - pmull2 v31.1q, v23.2d, v23.2d - pmull v30.1q, v23.1d, v23.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v25.16b, v30.16b, v31.16b + pmull2 V31.1Q, V23.2D, V23.2D + pmull V30.1Q, V23.1D, V23.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V25.16B, V30.16B, V31.16B ; Done cmp w8, #0x400 csetm x16, lt @@ -10005,53 +10005,53 @@ AES_GCM_decrypt_AARCH64 PROC ands x16, x16, x17 bne L_aes_gcm_decrypt_arm64_crypto_h_done ; Multiply H and H^4 => H^5 - pmull v28.1q, v22.1d, v25.1d - pmull2 v29.1q, v22.2d, v25.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v25.1d - pmull2 v31.1q, v31.2d, v25.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V25.1D + pmull2 V29.1Q, V22.2D, V25.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V25.1D + pmull2 V31.1Q, V31.2D, V25.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v4.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V4.16B, V28.16B, V30.16B ; Square H^3 => H^6 - pmull2 v31.1q, v24.2d, v24.2d - pmull v30.1q, v24.1d, v24.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v5.16b, v30.16b, v31.16b + pmull2 V31.1Q, V24.2D, V24.2D + pmull V30.1Q, V24.1D, V24.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V5.16B, V30.16B, V31.16B ; Multiply H and H^6 => H^7 - pmull v28.1q, v22.1d, v5.1d - pmull2 v29.1q, v22.2d, v5.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v5.1d - pmull2 v31.1q, v31.2d, v5.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V5.1D + pmull2 V29.1Q, V22.2D, V5.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V5.1D + pmull2 V31.1Q, V31.2D, V5.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v6.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V6.16B, V28.16B, V30.16B ; Square H^4 => H^8 - pmull2 v31.1q, v25.2d, v25.2d - pmull v30.1q, v25.1d, v25.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v7.16b, v30.16b, v31.16b + pmull2 V31.1Q, V25.2D, V25.2D + pmull V30.1Q, V25.1D, V25.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V7.16B, V30.16B, V31.16B ; Done L_aes_gcm_decrypt_arm64_crypto_h_done lsr w14, w8, #4 @@ -10062,102 +10062,102 @@ L_aes_gcm_decrypt_arm64_crypto_h_done cmp w14, #0x40 blt L_aes_gcm_decrypt_arm64_crypto_aad_start_4 L_aes_gcm_decrypt_arm64_crypto_aad_start_8 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x7], #0x40 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x7], #0x40 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x7], #0x40 + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x7], #0x40 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #8 cmp w14, #8 @@ -10168,57 +10168,57 @@ L_aes_gcm_decrypt_arm64_crypto_aad_start_8 cmp w14, #16 blt L_aes_gcm_decrypt_arm64_crypto_aad_start_2 L_aes_gcm_decrypt_arm64_crypto_aad_start_4 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x7], #0x40 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x7], #0x40 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #4 cmp w14, #4 @@ -10227,35 +10227,35 @@ L_aes_gcm_decrypt_arm64_crypto_aad_start_4 blt L_aes_gcm_decrypt_arm64_crypto_aad_done beq L_aes_gcm_decrypt_arm64_crypto_aad_start_1 L_aes_gcm_decrypt_arm64_crypto_aad_start_2 - ld1 {v18.16b, v19.16b}, [x7], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.16B, V19.16B}, [x7], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #2 cmp w14, #1 @@ -10264,33 +10264,33 @@ L_aes_gcm_decrypt_arm64_crypto_aad_start_2 L_aes_gcm_decrypt_arm64_crypto_aad_start_1 cbz w14, L_aes_gcm_decrypt_arm64_crypto_aad_done L_aes_gcm_decrypt_arm64_crypto_aad_both_1 - ld1 {v18.16b}, [x7], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.16B}, [x7], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH subs w14, w14, #1 bne L_aes_gcm_decrypt_arm64_crypto_aad_both_1 L_aes_gcm_decrypt_arm64_crypto_aad_done and w14, w8, #15 cbz w14, L_aes_gcm_decrypt_arm64_crypto_aad_partial_done - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov w20, w14 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp w20, #8 blt L_aes_gcm_decrypt_arm64_crypto_aad_start_dw ldr x19, [x7], #8 @@ -10316,68 +10316,68 @@ L_aes_gcm_decrypt_arm64_crypto_aad_start_byte bne L_aes_gcm_decrypt_arm64_crypto_aad_start_byte L_aes_gcm_decrypt_arm64_crypto_aad_end_bytes sub x11, x11, x14 - ld1 {v18.2d}, [x11] - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.2D}, [x11] + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_aad_partial_done ; Load Nonce cmp w4, #12 bne L_aes_gcm_decrypt_arm64_crypto_ghash_nonce ldr x16, [x3] - movi v13.4s, #1, lsl 24 + movi V13.4S, #1, lsl 24 ldr w17, [x3, #8] - mov v13.d[0], x16 - mov v13.s[2], w17 + mov V13.D[0], x16 + mov V13.S[2], w17 mov w15, #1 b L_aes_gcm_decrypt_arm64_crypto_done_nonce L_aes_gcm_decrypt_arm64_crypto_ghash_nonce - eor v13.16b, v13.16b, v13.16b + eor V13.16B, V13.16B, V13.16B lsr w14, w4, #4 cbz w14, L_aes_gcm_decrypt_arm64_crypto_nonce_done L_aes_gcm_decrypt_arm64_crypto_nonce_start_1 - ld1 {v18.16b}, [x3], #16 - rbit v18.16b, v18.16b - eor v21.16b, v13.16b, v18.16b + ld1 {V18.16B}, [x3], #16 + rbit V18.16B, V18.16B + eor V21.16B, V13.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B ; Done GHASH subs w14, w14, #1 bne L_aes_gcm_decrypt_arm64_crypto_nonce_start_1 L_aes_gcm_decrypt_arm64_crypto_nonce_done and w24, w4, #15 cbz x24, L_aes_gcm_decrypt_arm64_crypto_nonce_partial_done - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov w20, w24 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp w20, #8 blt L_aes_gcm_decrypt_arm64_crypto_nonce_start_dw ldr x19, [x3], #8 @@ -10403,51 +10403,51 @@ L_aes_gcm_decrypt_arm64_crypto_nonce_start_byte bne L_aes_gcm_decrypt_arm64_crypto_nonce_start_byte L_aes_gcm_decrypt_arm64_crypto_nonce_end_bytes sub x11, x11, x24 - ld1 {v18.2d}, [x11] - rbit v18.16b, v18.16b - eor v21.16b, v13.16b, v18.16b + ld1 {V18.2D}, [x11] + rbit V18.16B, V18.16B + eor V21.16B, V13.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_nonce_partial_done eor x14, x14, x14 ubfiz x24, x4, #3, #32 - mov v28.d[0], x14 - mov v28.d[1], x24 - rev64 v28.16b, v28.16b - rbit v28.16b, v28.16b - eor v13.16b, v13.16b, v28.16b - pmull v28.1q, v13.1d, v22.1d - pmull2 v29.1q, v13.2d, v22.2d - ext v31.16b, v13.16b, v13.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b - rbit v13.16b, v13.16b - mov w15, v13.s[3] + mov V28.D[0], x14 + mov V28.D[1], x24 + rev64 V28.16B, V28.16B + rbit V28.16B, V28.16B + eor V13.16B, V13.16B, V28.16B + pmull V28.1Q, V13.1D, V22.1D + pmull2 V29.1Q, V13.2D, V22.2D + ext8 V31.16B, V13.16B, V13.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B + rbit V13.16B, V13.16B + mov w15, V13.S[3] rev w15, w15 L_aes_gcm_decrypt_arm64_crypto_done_nonce - st1 {v13.2d}, [x12] + st1 {V13.2D}, [x12] lsr w14, w2, #4 cmp w13, #12 blt L_aes_gcm_decrypt_arm64_crypto_start_128 @@ -10457,1228 +10457,1228 @@ L_aes_gcm_decrypt_arm64_crypto_done_nonce cmp w14, #32 blt L_aes_gcm_decrypt_arm64_crypto_192_start_4 L_aes_gcm_decrypt_arm64_crypto_192_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 - mov v14.s[3], w24 + mov V14.S[3], w24 rev w23, w23 - mov v15.s[3], w23 + mov V15.S[3], w23 rev w22, w22 - mov v16.s[3], w22 + mov V16.S[3], w22 rev w21, w21 - mov v17.s[3], w21 + mov V17.S[3], w21 rev w20, w20 - mov v8.s[3], w20 + mov V8.S[3], w20 rev w19, w19 - mov v9.s[3], w19 + mov V9.S[3], w19 rev w17, w17 - mov v10.s[3], w17 + mov V10.S[3], w17 rev w16, w15 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x12] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x12] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_192_end_8 L_aes_gcm_decrypt_arm64_crypto_192_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b - mov v14.s[3], w24 + rbit V19.16B, V19.16B + mov V14.S[3], w24 rev w23, w23 - rbit v20.16b, v20.16b - mov v15.s[3], w23 + rbit V20.16B, V20.16B + mov V15.S[3], w23 rev w22, w22 - rbit v21.16b, v21.16b - mov v16.s[3], w22 + rbit V21.16B, V21.16B + mov V16.S[3], w22 rev w21, w21 - rbit v0.16b, v0.16b - mov v17.s[3], w21 + rbit V0.16B, V0.16B + mov V17.S[3], w21 rev w20, w20 - rbit v1.16b, v1.16b - mov v8.s[3], w20 + rbit V1.16B, V1.16B + mov V8.S[3], w20 rev w19, w19 - rbit v2.16b, v2.16b - mov v9.s[3], w19 + rbit V2.16B, V2.16B + mov V9.S[3], w19 rev w17, w17 - rbit v3.16b, v3.16b - mov v10.s[3], w17 + rbit V3.16B, V3.16B + mov V10.S[3], w17 rev w16, w15 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v31.16b, v31.16b, v29.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V31.16B, V31.16B, V29.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_decrypt_arm64_crypto_192_both_8 L_aes_gcm_decrypt_arm64_crypto_192_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_192_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x9], #0x40 - ld1 {v12.2d}, [x9] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x9], #0x40 + ld1 {V12.2D}, [x9] cmp w14, #1 blt L_aes_gcm_decrypt_arm64_crypto_192_done beq L_aes_gcm_decrypt_arm64_crypto_192_start_1 cmp w14, #4 blt L_aes_gcm_decrypt_arm64_crypto_192_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w19, w19 - mov v15.s[3], w19 + mov V15.S[3], w19 rev w17, w17 - mov v16.s[3], w17 + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x0], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x0], #16 - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x0], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x0], #16 + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 blt L_aes_gcm_decrypt_arm64_crypto_192_end_4 L_aes_gcm_decrypt_arm64_crypto_192_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 - rbit v19.16b, v19.16b - mov v14.s[3], w20 + rbit V19.16B, V19.16B + mov V14.S[3], w20 rev w19, w19 - rbit v20.16b, v20.16b - mov v15.s[3], w19 + rbit V20.16B, V20.16B + mov V15.S[3], w19 rev w17, w17 - rbit v21.16b, v21.16b - mov v16.s[3], w17 + rbit V21.16B, V21.16B + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v29.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - eor v31.16b, v31.16b, v30.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V29.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + eor V31.16B, V31.16B, V30.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - eor v26.16b, v28.16b, v30.16b + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 bge L_aes_gcm_decrypt_arm64_crypto_192_both_4 L_aes_gcm_decrypt_arm64_crypto_192_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_decrypt_arm64_crypto_192_start_1 blt L_aes_gcm_decrypt_arm64_crypto_192_done L_aes_gcm_decrypt_arm64_crypto_192_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w16, w15 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_decrypt_arm64_crypto_192_done L_aes_gcm_decrypt_arm64_crypto_192_start_1 - ld1 {v15.16b}, [x0], #16 + ld1 {V15.16B}, [x0], #16 add w15, w15, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.16b}, [x1], #16 + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.16B}, [x1], #16 L_aes_gcm_decrypt_arm64_crypto_192_done ands w14, w2, #15 beq L_aes_gcm_decrypt_arm64_crypto_192_partial_done - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B mov w19, w14 - st1 {v15.2d}, [x11] + st1 {V15.2D}, [x11] cmp x19, #8 blt L_aes_gcm_decrypt_arm64_crypto_192_start_dw ldr x17, [x0], #8 @@ -11704,56 +11704,56 @@ L_aes_gcm_decrypt_arm64_crypto_192_start_byte bne L_aes_gcm_decrypt_arm64_crypto_192_start_byte L_aes_gcm_decrypt_arm64_crypto_192_end_bytes sub x11, x11, x14 - ld1 {v15.2d}, [x11] + ld1 {V15.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.2d}, [x11] + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.2D}, [x11] cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_192_out_start_dw ldr x17, [x11], #8 @@ -11779,63 +11779,63 @@ L_aes_gcm_decrypt_arm64_crypto_192_out_start_byte bne L_aes_gcm_decrypt_arm64_crypto_192_out_start_byte L_aes_gcm_decrypt_arm64_crypto_192_out_end_bytes L_aes_gcm_decrypt_arm64_crypto_192_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - eor v26.16b, v26.16b, v28.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - ext v31.16b, v26.16b, v26.16b, #8 - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + eor V26.16B, V26.16B, V28.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V26.16B, V26.16B, #8 + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 blt L_aes_gcm_decrypt_arm64_crypto_192_part_tag - ld1 {v28.16b}, [x5] + ld1 {V28.16B}, [x5] b L_aes_gcm_decrypt_arm64_crypto_192_tag_loaded L_aes_gcm_decrypt_arm64_crypto_192_part_tag ubfiz x6, x6, #0, #32 - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov x17, x6 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp x17, #8 blt L_aes_gcm_decrypt_arm64_crypto_192_tag_start_dw ldr x16, [x5], #8 @@ -11861,9 +11861,9 @@ L_aes_gcm_decrypt_arm64_crypto_192_tag_start_byte bne L_aes_gcm_decrypt_arm64_crypto_192_tag_start_byte L_aes_gcm_decrypt_arm64_crypto_192_tag_end_bytes sub x11, x11, x6 - ld1 {v28.2d}, [x11] + ld1 {V28.2D}, [x11] mov x17, #16 - st1 {v26.2d}, [x11] + st1 {V26.2D}, [x11] sub x17, x17, x6 add x11, x11, x6 L_aes_gcm_decrypt_arm64_crypto_192_calc_tag_byte @@ -11871,11 +11871,11 @@ L_aes_gcm_decrypt_arm64_crypto_192_calc_tag_byte subs x17, x17, #1 bne L_aes_gcm_decrypt_arm64_crypto_192_calc_tag_byte subs x11, x11, #16 - ld1 {v26.2d}, [x11] + ld1 {V26.2D}, [x11] L_aes_gcm_decrypt_arm64_crypto_192_tag_loaded - eor v28.16b, v28.16b, v26.16b - mov x16, v28.d[0] - mov x17, v28.d[1] + eor V28.16B, V28.16B, V26.16B + mov x16, V28.D[0] + mov x17, V28.D[1] mov w19, #-180 orr x16, x16, x17 cmp x16, #0 @@ -11889,1344 +11889,1344 @@ L_aes_gcm_decrypt_arm64_crypto_start_256 cmp w14, #32 blt L_aes_gcm_decrypt_arm64_crypto_256_start_4 L_aes_gcm_decrypt_arm64_crypto_256_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 - mov v14.s[3], w24 + mov V14.S[3], w24 rev w23, w23 - mov v15.s[3], w23 + mov V15.S[3], w23 rev w22, w22 - mov v16.s[3], w22 + mov V16.S[3], w22 rev w21, w21 - mov v17.s[3], w21 + mov V17.S[3], w21 rev w20, w20 - mov v8.s[3], w20 + mov V8.S[3], w20 rev w19, w19 - mov v9.s[3], w19 + mov V9.S[3], w19 rev w17, w17 - mov v10.s[3], w17 + mov V10.S[3], w17 rev w16, w15 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x12] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x12] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_256_end_8 L_aes_gcm_decrypt_arm64_crypto_256_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b - mov v14.s[3], w24 + rbit V19.16B, V19.16B + mov V14.S[3], w24 rev w23, w23 - rbit v20.16b, v20.16b - mov v15.s[3], w23 + rbit V20.16B, V20.16B + mov V15.S[3], w23 rev w22, w22 - rbit v21.16b, v21.16b - mov v16.s[3], w22 + rbit V21.16B, V21.16B + mov V16.S[3], w22 rev w21, w21 - rbit v0.16b, v0.16b - mov v17.s[3], w21 + rbit V0.16B, V0.16B + mov V17.S[3], w21 rev w20, w20 - rbit v1.16b, v1.16b - mov v8.s[3], w20 + rbit V1.16B, V1.16B + mov V8.S[3], w20 rev w19, w19 - rbit v2.16b, v2.16b - mov v9.s[3], w19 + rbit V2.16B, V2.16B + mov V9.S[3], w19 rev w17, w17 - rbit v3.16b, v3.16b - mov v10.s[3], w17 + rbit V3.16B, V3.16B + mov V10.S[3], w17 rev w16, w15 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v31.16b, v31.16b, v29.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V31.16B, V31.16B, V29.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_decrypt_arm64_crypto_256_both_8 L_aes_gcm_decrypt_arm64_crypto_256_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_256_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x9], #0x40 - ld1 {v12.2d}, [x9], #16 + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x9], #0x40 + ld1 {V12.2D}, [x9], #16 cmp w14, #1 blt L_aes_gcm_decrypt_arm64_crypto_256_done beq L_aes_gcm_decrypt_arm64_crypto_256_start_1 cmp w14, #4 blt L_aes_gcm_decrypt_arm64_crypto_256_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w19, w19 - mov v15.s[3], w19 + mov V15.S[3], w19 rev w17, w17 - mov v16.s[3], w17 + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x0], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x0], #16 - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x0], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x0], #16 + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 blt L_aes_gcm_decrypt_arm64_crypto_256_end_4 L_aes_gcm_decrypt_arm64_crypto_256_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 - rbit v19.16b, v19.16b - mov v14.s[3], w20 + rbit V19.16B, V19.16B + mov V14.S[3], w20 rev w19, w19 - rbit v20.16b, v20.16b - mov v15.s[3], w19 + rbit V20.16B, V20.16B + mov V15.S[3], w19 rev w17, w17 - rbit v21.16b, v21.16b - mov v16.s[3], w17 + rbit V21.16B, V21.16B + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v29.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - eor v31.16b, v31.16b, v30.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V29.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + eor V31.16B, V31.16B, V30.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - eor v26.16b, v28.16b, v30.16b + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 bge L_aes_gcm_decrypt_arm64_crypto_256_both_4 L_aes_gcm_decrypt_arm64_crypto_256_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_decrypt_arm64_crypto_256_start_1 blt L_aes_gcm_decrypt_arm64_crypto_256_done L_aes_gcm_decrypt_arm64_crypto_256_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w16, w15 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_decrypt_arm64_crypto_256_done L_aes_gcm_decrypt_arm64_crypto_256_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - st1 {v14.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + st1 {V14.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_256_done ands w14, w2, #15 beq L_aes_gcm_decrypt_arm64_crypto_256_partial_done - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B mov w19, w14 - st1 {v15.2d}, [x11] + st1 {V15.2D}, [x11] cmp x19, #8 blt L_aes_gcm_decrypt_arm64_crypto_256_start_dw ldr x17, [x0], #8 @@ -13252,62 +13252,62 @@ L_aes_gcm_decrypt_arm64_crypto_256_start_byte bne L_aes_gcm_decrypt_arm64_crypto_256_start_byte L_aes_gcm_decrypt_arm64_crypto_256_end_bytes sub x11, x11, x14 - ld1 {v15.2d}, [x11] + ld1 {V15.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.2d}, [x11] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.2D}, [x11] cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_256_out_start_dw ldr x17, [x11], #8 @@ -13333,71 +13333,71 @@ L_aes_gcm_decrypt_arm64_crypto_256_out_start_byte bne L_aes_gcm_decrypt_arm64_crypto_256_out_start_byte L_aes_gcm_decrypt_arm64_crypto_256_out_end_bytes L_aes_gcm_decrypt_arm64_crypto_256_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v28.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v26.16b, v26.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V28.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V26.16B, V26.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - ldr q11, [x9, #-32] - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - ldr q12, [x9, #-16] - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + ldr Q11, [x9, #-32] + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + ldr Q12, [x9, #-16] + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 blt L_aes_gcm_decrypt_arm64_crypto_256_part_tag - ld1 {v28.16b}, [x5] + ld1 {V28.16B}, [x5] b L_aes_gcm_decrypt_arm64_crypto_256_tag_loaded L_aes_gcm_decrypt_arm64_crypto_256_part_tag ubfiz x6, x6, #0, #32 - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov x17, x6 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp x17, #8 blt L_aes_gcm_decrypt_arm64_crypto_256_tag_start_dw ldr x16, [x5], #8 @@ -13423,9 +13423,9 @@ L_aes_gcm_decrypt_arm64_crypto_256_tag_start_byte bne L_aes_gcm_decrypt_arm64_crypto_256_tag_start_byte L_aes_gcm_decrypt_arm64_crypto_256_tag_end_bytes sub x11, x11, x6 - ld1 {v28.2d}, [x11] + ld1 {V28.2D}, [x11] mov x17, #16 - st1 {v26.2d}, [x11] + st1 {V26.2D}, [x11] sub x17, x17, x6 add x11, x11, x6 L_aes_gcm_decrypt_arm64_crypto_256_calc_tag_byte @@ -13433,11 +13433,11 @@ L_aes_gcm_decrypt_arm64_crypto_256_calc_tag_byte subs x17, x17, #1 bne L_aes_gcm_decrypt_arm64_crypto_256_calc_tag_byte subs x11, x11, #16 - ld1 {v26.2d}, [x11] + ld1 {V26.2D}, [x11] L_aes_gcm_decrypt_arm64_crypto_256_tag_loaded - eor v28.16b, v28.16b, v26.16b - mov x16, v28.d[0] - mov x17, v28.d[1] + eor V28.16B, V28.16B, V26.16B + mov x16, V28.D[0] + mov x17, V28.D[1] mov w19, #-180 orr x16, x16, x17 cmp x16, #0 @@ -13451,1115 +13451,1115 @@ L_aes_gcm_decrypt_arm64_crypto_start_128 cmp w14, #32 blt L_aes_gcm_decrypt_arm64_crypto_128_start_4 L_aes_gcm_decrypt_arm64_crypto_128_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 - mov v14.s[3], w24 + mov V14.S[3], w24 rev w23, w23 - mov v15.s[3], w23 + mov V15.S[3], w23 rev w22, w22 - mov v16.s[3], w22 + mov V16.S[3], w22 rev w21, w21 - mov v17.s[3], w21 + mov V17.S[3], w21 rev w20, w20 - mov v8.s[3], w20 + mov V8.S[3], w20 rev w19, w19 - mov v9.s[3], w19 + mov V9.S[3], w19 rev w17, w17 - mov v10.s[3], w17 + mov V10.S[3], w17 rev w16, w15 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x12] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x12] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_128_end_8 L_aes_gcm_decrypt_arm64_crypto_128_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b - mov v14.s[3], w24 + rbit V19.16B, V19.16B + mov V14.S[3], w24 rev w23, w23 - rbit v20.16b, v20.16b - mov v15.s[3], w23 + rbit V20.16B, V20.16B + mov V15.S[3], w23 rev w22, w22 - rbit v21.16b, v21.16b - mov v16.s[3], w22 + rbit V21.16B, V21.16B + mov V16.S[3], w22 rev w21, w21 - rbit v0.16b, v0.16b - mov v17.s[3], w21 + rbit V0.16B, V0.16B + mov V17.S[3], w21 rev w20, w20 - rbit v1.16b, v1.16b - mov v8.s[3], w20 + rbit V1.16B, V1.16B + mov V8.S[3], w20 rev w19, w19 - rbit v2.16b, v2.16b - mov v9.s[3], w19 + rbit V2.16B, V2.16B + mov V9.S[3], w19 rev w17, w17 - rbit v3.16b, v3.16b - mov v10.s[3], w17 + rbit V3.16B, V3.16B + mov V10.S[3], w17 rev w16, w15 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v31.16b, v31.16b, v29.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V31.16B, V31.16B, V29.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_decrypt_arm64_crypto_128_both_8 L_aes_gcm_decrypt_arm64_crypto_128_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_128_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d}, [x9], #32 - ld1 {v10.2d}, [x9] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D}, [x9], #32 + ld1 {V10.2D}, [x9] cmp w14, #1 blt L_aes_gcm_decrypt_arm64_crypto_128_done beq L_aes_gcm_decrypt_arm64_crypto_128_start_1 cmp w14, #4 blt L_aes_gcm_decrypt_arm64_crypto_128_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w19, w19 - mov v15.s[3], w19 + mov V15.S[3], w19 rev w17, w17 - mov v16.s[3], w17 + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x0], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x0], #16 - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x0], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x0], #16 + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 blt L_aes_gcm_decrypt_arm64_crypto_128_end_4 L_aes_gcm_decrypt_arm64_crypto_128_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 - rbit v19.16b, v19.16b - mov v14.s[3], w20 + rbit V19.16B, V19.16B + mov V14.S[3], w20 rev w19, w19 - rbit v20.16b, v20.16b - mov v15.s[3], w19 + rbit V20.16B, V20.16B + mov V15.S[3], w19 rev w17, w17 - rbit v21.16b, v21.16b - mov v16.s[3], w17 + rbit V21.16B, V21.16B + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v29.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - eor v31.16b, v31.16b, v30.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V29.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + eor V31.16B, V31.16B, V30.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - eor v26.16b, v28.16b, v30.16b + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 bge L_aes_gcm_decrypt_arm64_crypto_128_both_4 L_aes_gcm_decrypt_arm64_crypto_128_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_decrypt_arm64_crypto_128_start_1 blt L_aes_gcm_decrypt_arm64_crypto_128_done L_aes_gcm_decrypt_arm64_crypto_128_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w16, w15 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_decrypt_arm64_crypto_128_done L_aes_gcm_decrypt_arm64_crypto_128_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v18.16b}, [x0], #16 - eor v14.16b, v14.16b, v18.16b - st1 {v14.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V18.16B}, [x0], #16 + eor V14.16B, V14.16B, V18.16B + st1 {V14.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_128_done ands w14, w2, #15 beq L_aes_gcm_decrypt_arm64_crypto_128_partial_done - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B mov w19, w14 - st1 {v15.2d}, [x11] + st1 {V15.2D}, [x11] cmp x19, #8 blt L_aes_gcm_decrypt_arm64_crypto_128_start_dw ldr x17, [x0], #8 @@ -14585,52 +14585,52 @@ L_aes_gcm_decrypt_arm64_crypto_128_start_byte bne L_aes_gcm_decrypt_arm64_crypto_128_start_byte L_aes_gcm_decrypt_arm64_crypto_128_end_bytes sub x11, x11, x14 - ld1 {v15.2d}, [x11] + ld1 {V15.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.2d}, [x11] + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.2D}, [x11] cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_128_out_start_dw ldr x17, [x11], #8 @@ -14656,59 +14656,59 @@ L_aes_gcm_decrypt_arm64_crypto_128_out_start_byte bne L_aes_gcm_decrypt_arm64_crypto_128_out_start_byte L_aes_gcm_decrypt_arm64_crypto_128_out_end_bytes L_aes_gcm_decrypt_arm64_crypto_128_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - eor v26.16b, v26.16b, v28.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - ext v31.16b, v26.16b, v26.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + eor V26.16B, V26.16B, V28.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + ext8 V31.16B, V26.16B, V26.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 blt L_aes_gcm_decrypt_arm64_crypto_128_part_tag - ld1 {v28.16b}, [x5] + ld1 {V28.16B}, [x5] b L_aes_gcm_decrypt_arm64_crypto_128_tag_loaded L_aes_gcm_decrypt_arm64_crypto_128_part_tag ubfiz x6, x6, #0, #32 - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov x17, x6 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp x17, #8 blt L_aes_gcm_decrypt_arm64_crypto_128_tag_start_dw ldr x16, [x5], #8 @@ -14734,9 +14734,9 @@ L_aes_gcm_decrypt_arm64_crypto_128_tag_start_byte bne L_aes_gcm_decrypt_arm64_crypto_128_tag_start_byte L_aes_gcm_decrypt_arm64_crypto_128_tag_end_bytes sub x11, x11, x6 - ld1 {v28.2d}, [x11] + ld1 {V28.2D}, [x11] mov x17, #16 - st1 {v26.2d}, [x11] + st1 {V26.2D}, [x11] sub x17, x17, x6 add x11, x11, x6 L_aes_gcm_decrypt_arm64_crypto_128_calc_tag_byte @@ -14744,11 +14744,11 @@ L_aes_gcm_decrypt_arm64_crypto_128_calc_tag_byte subs x17, x17, #1 bne L_aes_gcm_decrypt_arm64_crypto_128_calc_tag_byte subs x11, x11, #16 - ld1 {v26.2d}, [x11] + ld1 {V26.2D}, [x11] L_aes_gcm_decrypt_arm64_crypto_128_tag_loaded - eor v28.16b, v28.16b, v26.16b - mov x16, v28.d[0] - mov x17, v28.d[1] + eor V28.16B, V28.16B, V26.16B + mov x16, V28.D[0] + mov x17, V28.D[1] mov w19, #-180 orr x16, x16, x17 cmp x16, #0 @@ -14760,10 +14760,10 @@ L_aes_gcm_decrypt_arm64_crypto_done ldp x20, x21, [x29, #40] ldp x22, x23, [x29, #56] ldr x24, [x29, #72] - ldp d8, d9, [x29, #80] - ldp d10, d11, [x29, #96] - ldp d12, d13, [x29, #112] - ldp d14, d15, [x29, #128] + ldp D8, D9, [x29, #80] + ldp D10, D11, [x29, #96] + ldp D12, D13, [x29, #112] + ldp D14, D15, [x29, #128] ldp x29, x30, [sp], #0x90 ret ENDP @@ -14779,20 +14779,20 @@ AES_GCM_encrypt_AARCH64_EOR3 PROC stp x20, x21, [x29, #40] stp x22, x23, [x29, #56] str x24, [x29, #72] - stp d8, d9, [x29, #80] - stp d10, d11, [x29, #96] - stp d12, d13, [x29, #112] - stp d14, d15, [x29, #128] + stp D8, D9, [x29, #80] + stp D10, D11, [x29, #96] + stp D12, D13, [x29, #112] + stp D14, D15, [x29, #128] ldr w8, [x29, #144] ldr x9, [x29, #152] ldr x10, [x29, #160] ldr x11, [x29, #168] ldr x12, [x29, #176] ldr w13, [x29, #184] - movi v27.16b, #0x87 - eor v26.16b, v26.16b, v26.16b - ushr v27.2d, v27.2d, #56 - ld1 {v22.2d}, [x10] + movi V27.16B, #0x87 + eor V26.16B, V26.16B, V26.16B + ushr V27.2D, V27.2D, #56 + ld1 {V22.2D}, [x10] cmp w8, #0x40 csetm x16, lt cmp w2, #32 @@ -14800,14 +14800,14 @@ AES_GCM_encrypt_AARCH64_EOR3 PROC ands x16, x16, x17 bne L_aes_gcm_encrypt_arm64_crypto_eor3_h_done ; Square H => H^2 - pmull2 v31.1q, v22.2d, v22.2d - pmull v30.1q, v22.1d, v22.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v23.16b, v30.16b, v31.16b + pmull2 V31.1Q, V22.2D, V22.2D + pmull V30.1Q, V22.1D, V22.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V23.16B, V30.16B, V31.16B cmp w8, #0x100 csetm x16, lt cmp w2, #0x40 @@ -14815,28 +14815,28 @@ AES_GCM_encrypt_AARCH64_EOR3 PROC ands x16, x16, x17 bne L_aes_gcm_encrypt_arm64_crypto_eor3_h_done ; Multiply H and H^2 => H^3 - pmull v28.1q, v22.1d, v23.1d - pmull2 v29.1q, v22.2d, v23.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v23.1d - pmull2 v31.1q, v31.2d, v23.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V23.1D + pmull2 V29.1Q, V22.2D, V23.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V23.1D + pmull2 V31.1Q, V31.2D, V23.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v24.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V24.16B, V28.16B, V30.16B ; Square H^2 => H^4 - pmull2 v31.1q, v23.2d, v23.2d - pmull v30.1q, v23.1d, v23.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v25.16b, v30.16b, v31.16b + pmull2 V31.1Q, V23.2D, V23.2D + pmull V30.1Q, V23.1D, V23.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V25.16B, V30.16B, V31.16B ; Done cmp w8, #0x400 csetm x16, lt @@ -14845,51 +14845,51 @@ AES_GCM_encrypt_AARCH64_EOR3 PROC ands x16, x16, x17 bne L_aes_gcm_encrypt_arm64_crypto_eor3_h_done ; Multiply H and H^4 => H^5 - pmull v28.1q, v22.1d, v25.1d - pmull2 v29.1q, v22.2d, v25.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v25.1d - pmull2 v31.1q, v31.2d, v25.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V25.1D + pmull2 V29.1Q, V22.2D, V25.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V25.1D + pmull2 V31.1Q, V31.2D, V25.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v4.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V4.16B, V28.16B, V30.16B ; Square H^3 => H^6 - pmull2 v31.1q, v24.2d, v24.2d - pmull v30.1q, v24.1d, v24.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v5.16b, v30.16b, v31.16b + pmull2 V31.1Q, V24.2D, V24.2D + pmull V30.1Q, V24.1D, V24.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V5.16B, V30.16B, V31.16B ; Multiply H and H^6 => H^7 - pmull v28.1q, v22.1d, v5.1d - pmull2 v29.1q, v22.2d, v5.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v5.1d - pmull2 v31.1q, v31.2d, v5.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V5.1D + pmull2 V29.1Q, V22.2D, V5.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V5.1D + pmull2 V31.1Q, V31.2D, V5.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v6.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V6.16B, V28.16B, V30.16B ; Square H^4 => H^8 - pmull2 v31.1q, v25.2d, v25.2d - pmull v30.1q, v25.1d, v25.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v7.16b, v30.16b, v31.16b + pmull2 V31.1Q, V25.2D, V25.2D + pmull V30.1Q, V25.1D, V25.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V7.16B, V30.16B, V31.16B ; Done L_aes_gcm_encrypt_arm64_crypto_eor3_h_done lsr w14, w8, #4 @@ -14900,94 +14900,94 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_h_done cmp w14, #0x40 blt L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_4 L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_8 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x7], #0x40 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x7], #0x40 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x7], #0x40 + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x7], #0x40 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #8 cmp w14, #8 @@ -14998,53 +14998,53 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_8 cmp w14, #16 blt L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_2 L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_4 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x7], #0x40 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x7], #0x40 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #4 cmp w14, #4 @@ -15053,33 +15053,33 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_4 blt L_aes_gcm_encrypt_arm64_crypto_eor3_aad_done beq L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_1 L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_2 - ld1 {v18.16b, v19.16b}, [x7], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.16B, V19.16B}, [x7], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #2 cmp w14, #1 @@ -15088,32 +15088,32 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_2 L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_1 cbz w14, L_aes_gcm_encrypt_arm64_crypto_eor3_aad_done L_aes_gcm_encrypt_arm64_crypto_eor3_aad_both_1 - ld1 {v18.16b}, [x7], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.16B}, [x7], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH subs w14, w14, #1 bne L_aes_gcm_encrypt_arm64_crypto_eor3_aad_both_1 L_aes_gcm_encrypt_arm64_crypto_eor3_aad_done and w14, w8, #15 cbz w14, L_aes_gcm_encrypt_arm64_crypto_eor3_aad_partial_done - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov w20, w14 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp w20, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_dw ldr x19, [x7], #8 @@ -15139,66 +15139,66 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_byte bne L_aes_gcm_encrypt_arm64_crypto_eor3_aad_start_byte L_aes_gcm_encrypt_arm64_crypto_eor3_aad_end_bytes sub x11, x11, x14 - ld1 {v18.2d}, [x11] - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.2D}, [x11] + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_aad_partial_done ; Load Nonce cmp w4, #12 bne L_aes_gcm_encrypt_arm64_crypto_eor3_ghash_nonce ldr x16, [x3] - movi v13.4s, #1, lsl 24 + movi V13.4S, #1, lsl 24 ldr w17, [x3, #8] - mov v13.d[0], x16 - mov v13.s[2], w17 + mov V13.D[0], x16 + mov V13.S[2], w17 mov w15, #1 b L_aes_gcm_encrypt_arm64_crypto_eor3_done_nonce L_aes_gcm_encrypt_arm64_crypto_eor3_ghash_nonce - eor v13.16b, v13.16b, v13.16b + eor V13.16B, V13.16B, V13.16B lsr w14, w4, #4 cbz w14, L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_done L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_start_1 - ld1 {v18.16b}, [x3], #16 - rbit v18.16b, v18.16b - eor v21.16b, v13.16b, v18.16b + ld1 {V18.16B}, [x3], #16 + rbit V18.16B, V18.16B + eor V21.16B, V13.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B ; Done GHASH subs w14, w14, #1 bne L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_start_1 L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_done and w24, w4, #15 cbz x24, L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_partial_done - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov w20, w24 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp w20, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_start_dw ldr x19, [x3], #8 @@ -15224,49 +15224,49 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_start_byte bne L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_start_byte L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_end_bytes sub x11, x11, x24 - ld1 {v18.2d}, [x11] - rbit v18.16b, v18.16b - eor v21.16b, v13.16b, v18.16b + ld1 {V18.2D}, [x11] + rbit V18.16B, V18.16B + eor V21.16B, V13.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_nonce_partial_done eor x14, x14, x14 ubfiz x24, x4, #3, #32 - mov v28.d[0], x14 - mov v28.d[1], x24 - rev64 v28.16b, v28.16b - rbit v28.16b, v28.16b - eor v13.16b, v13.16b, v28.16b - pmull v28.1q, v13.1d, v22.1d - pmull2 v29.1q, v13.2d, v22.2d - ext v31.16b, v13.16b, v13.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b - rbit v13.16b, v13.16b - mov w15, v13.s[3] + mov V28.D[0], x14 + mov V28.D[1], x24 + rev64 V28.16B, V28.16B + rbit V28.16B, V28.16B + eor V13.16B, V13.16B, V28.16B + pmull V28.1Q, V13.1D, V22.1D + pmull2 V29.1Q, V13.2D, V22.2D + ext8 V31.16B, V13.16B, V13.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B + rbit V13.16B, V13.16B + mov w15, V13.S[3] rev w15, w15 L_aes_gcm_encrypt_arm64_crypto_eor3_done_nonce - st1 {v13.2d}, [x12] + st1 {V13.2D}, [x12] lsr w14, w2, #4 cmp w13, #12 blt L_aes_gcm_encrypt_arm64_crypto_eor3_start_128 @@ -15276,23 +15276,23 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_done_nonce cmp w14, #32 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_4 L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 rev w23, w23 rev w22, w22 @@ -15301,1175 +15301,1175 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_8 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v0.16b}, [x0], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v1.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v2.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v3.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x12] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V0.16B}, [x0], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V1.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V2.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V3.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x12] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_end_8 L_aes_gcm_encrypt_arm64_crypto_eor3_192_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w23, w23 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w22, w22 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w21, w21 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w20, w20 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w19, w19 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w17, w17 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_encrypt_arm64_crypto_eor3_192_both_8 L_aes_gcm_encrypt_arm64_crypto_eor3_192_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x9], #0x40 - ld1 {v12.2d}, [x9] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x9], #0x40 + ld1 {V12.2D}, [x9] cmp w14, #1 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_done beq L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_1 cmp w14, #4 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x0], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x0], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_end_4 L_aes_gcm_encrypt_arm64_crypto_eor3_192_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 rev w19, w19 rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 bge L_aes_gcm_encrypt_arm64_crypto_eor3_192_both_4 L_aes_gcm_encrypt_arm64_crypto_eor3_192_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_1 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_done L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w20 + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_encrypt_arm64_crypto_eor3_192_done L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_192_done ands w14, w2, #15 beq L_aes_gcm_encrypt_arm64_crypto_eor3_192_partial_done - eor v16.16b, v16.16b, v16.16b + eor V16.16B, V16.16B, V16.16B mov w19, w14 - st1 {v16.2d}, [x11] + st1 {V16.2D}, [x11] cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_dw ldr x17, [x0], #8 @@ -16495,37 +16495,37 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_byte bne L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_byte L_aes_gcm_encrypt_arm64_crypto_eor3_192_end_bytes sub x11, x11, x14 - ld1 {v16.2d}, [x11] + ld1 {V16.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v16.16b, v16.16b, v14.16b - st1 {v16.2d}, [x11] + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V16.16B, V16.16B, V14.16B + st1 {V16.2D}, [x11] mov w19, w14 cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_out_start_dw @@ -16558,78 +16558,78 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_zero strb wzr, [x11], #1 bne L_aes_gcm_encrypt_arm64_crypto_eor3_192_start_zero sub x11, x11, #16 - ld1 {v14.2d}, [x11] - rbit v14.16b, v14.16b - eor v15.16b, v26.16b, v14.16b + ld1 {V14.2D}, [x11] + rbit V14.16B, V14.16B + eor V15.16B, V26.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v15.1d, v22.1d - pmull2 v29.1q, v15.2d, v22.2d - ext v31.16b, v15.16b, v15.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V15.1D, V22.1D + pmull2 V29.1Q, V15.2D, V22.2D + ext8 V31.16B, V15.16B, V15.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_192_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - eor v26.16b, v26.16b, v28.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - ext v31.16b, v26.16b, v26.16b, #8 - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + eor V26.16B, V26.16B, V28.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V26.16B, V26.16B, #8 + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 bne L_aes_gcm_encrypt_arm64_crypto_eor3_192_tag_partial - st1 {v26.16b}, [x5] + st1 {V26.16B}, [x5] b L_aes_gcm_encrypt_arm64_crypto_eor3_done L_aes_gcm_encrypt_arm64_crypto_eor3_192_tag_partial - st1 {v26.16b}, [x11] + st1 {V26.16B}, [x11] cmp w6, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_192_tag_start_dw ldr x16, [x11], #8 @@ -16662,23 +16662,23 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_start_256 cmp w14, #32 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_4 L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 rev w23, w23 rev w22, w22 @@ -16687,1292 +16687,1292 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_8 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v0.16b}, [x0], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v1.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v2.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v3.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x12] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V0.16B}, [x0], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V1.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V2.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V3.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x12] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_end_8 L_aes_gcm_encrypt_arm64_crypto_eor3_256_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w23, w23 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w22, w22 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w21, w21 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w20, w20 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w19, w19 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w17, w17 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_encrypt_arm64_crypto_eor3_256_both_8 L_aes_gcm_encrypt_arm64_crypto_eor3_256_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x9], #0x40 - ld1 {v12.2d}, [x9], #16 + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x9], #0x40 + ld1 {V12.2D}, [x9], #16 cmp w14, #1 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_done beq L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_1 cmp w14, #4 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x0], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x0], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_end_4 L_aes_gcm_encrypt_arm64_crypto_eor3_256_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 rev w19, w19 rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 bge L_aes_gcm_encrypt_arm64_crypto_eor3_256_both_4 L_aes_gcm_encrypt_arm64_crypto_eor3_256_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_1 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_done L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w20 + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_encrypt_arm64_crypto_eor3_256_done L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_256_done ands w14, w2, #15 beq L_aes_gcm_encrypt_arm64_crypto_eor3_256_partial_done - eor v16.16b, v16.16b, v16.16b + eor V16.16B, V16.16B, V16.16B mov w19, w14 - st1 {v16.2d}, [x11] + st1 {V16.2D}, [x11] cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_dw ldr x17, [x0], #8 @@ -17998,43 +17998,43 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_byte bne L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_byte L_aes_gcm_encrypt_arm64_crypto_eor3_256_end_bytes sub x11, x11, x14 - ld1 {v16.2d}, [x11] + ld1 {V16.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v16.16b, v16.16b, v14.16b - st1 {v16.2d}, [x11] + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V16.16B, V16.16B, V14.16B + st1 {V16.2D}, [x11] mov w19, w14 cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_out_start_dw @@ -18067,86 +18067,86 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_zero strb wzr, [x11], #1 bne L_aes_gcm_encrypt_arm64_crypto_eor3_256_start_zero sub x11, x11, #16 - ld1 {v14.2d}, [x11] - rbit v14.16b, v14.16b - eor v15.16b, v26.16b, v14.16b + ld1 {V14.2D}, [x11] + rbit V14.16B, V14.16B + eor V15.16B, V26.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v15.1d, v22.1d - pmull2 v29.1q, v15.2d, v22.2d - ext v31.16b, v15.16b, v15.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V15.1D, V22.1D + pmull2 V29.1Q, V15.2D, V22.2D + ext8 V31.16B, V15.16B, V15.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_256_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v28.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v26.16b, v26.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V28.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V26.16B, V26.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - ldr q11, [x9, #-32] - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - ldr q12, [x9, #-16] - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + ldr Q11, [x9, #-32] + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + ldr Q12, [x9, #-16] + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 bne L_aes_gcm_encrypt_arm64_crypto_eor3_256_tag_partial - st1 {v26.16b}, [x5] + st1 {V26.16B}, [x5] b L_aes_gcm_encrypt_arm64_crypto_eor3_done L_aes_gcm_encrypt_arm64_crypto_eor3_256_tag_partial - st1 {v26.16b}, [x11] + st1 {V26.16B}, [x11] cmp w6, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_256_tag_start_dw ldr x16, [x11], #8 @@ -18179,23 +18179,23 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_start_128 cmp w14, #32 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_4 L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 rev w23, w23 rev w22, w22 @@ -18204,1063 +18204,1063 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_8 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - ld1 {v0.16b}, [x0], #16 - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - ld1 {v1.16b}, [x0], #16 - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - ld1 {v2.16b}, [x0], #16 - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - ld1 {v3.16b}, [x0], #16 - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x12] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + ld1 {V0.16B}, [x0], #16 + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + ld1 {V1.16B}, [x0], #16 + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + ld1 {V2.16B}, [x0], #16 + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + ld1 {V3.16B}, [x0], #16 + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x12] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_end_8 L_aes_gcm_encrypt_arm64_crypto_eor3_128_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w23, w23 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w22, w22 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w21, w21 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w20, w20 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w19, w19 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w17, w17 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w16, w15 - mov v14.s[3], w24 - mov v15.s[3], w23 - mov v16.s[3], w22 - mov v17.s[3], w21 - mov v8.s[3], w20 - mov v9.s[3], w19 - mov v10.s[3], w17 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w24 + mov V15.S[3], w23 + mov V16.S[3], w22 + mov V17.S[3], w21 + mov V8.S[3], w20 + mov V9.S[3], w19 + mov V10.S[3], w17 + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_encrypt_arm64_crypto_eor3_128_both_8 L_aes_gcm_encrypt_arm64_crypto_eor3_128_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d}, [x9], #32 - ld1 {v10.2d}, [x9] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D}, [x9], #32 + ld1 {V10.2D}, [x9] cmp w14, #1 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_done beq L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_1 cmp w14, #4 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 rev w19, w19 rev w17, w17 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x0], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v20.16b}, [x0], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - ld1 {v21.16b}, [x0], #16 - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x0], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V20.16B}, [x0], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + ld1 {V21.16B}, [x0], #16 + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_end_4 L_aes_gcm_encrypt_arm64_crypto_eor3_128_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 rev w19, w19 rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w19 - mov v16.s[3], w17 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w20 + mov V15.S[3], w19 + mov V16.S[3], w17 + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w14, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x1], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x1], #0x40 bge L_aes_gcm_encrypt_arm64_crypto_eor3_128_both_4 L_aes_gcm_encrypt_arm64_crypto_eor3_128_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_1 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_done L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 rev w16, w15 - mov v14.s[3], w20 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w20 + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_encrypt_arm64_crypto_eor3_128_done L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v18.16b}, [x0], #16 - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V18.16B}, [x0], #16 + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_128_done ands w14, w2, #15 beq L_aes_gcm_encrypt_arm64_crypto_eor3_128_partial_done - eor v16.16b, v16.16b, v16.16b + eor V16.16B, V16.16B, V16.16B mov w19, w14 - st1 {v16.2d}, [x11] + st1 {V16.2D}, [x11] cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_dw ldr x17, [x0], #8 @@ -19286,33 +19286,33 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_byte bne L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_byte L_aes_gcm_encrypt_arm64_crypto_eor3_128_end_bytes sub x11, x11, x14 - ld1 {v16.2d}, [x11] + ld1 {V16.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - eor v16.16b, v16.16b, v14.16b - st1 {v16.2d}, [x11] + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + eor V16.16B, V16.16B, V14.16B + st1 {V16.2D}, [x11] mov w19, w14 cmp x19, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_out_start_dw @@ -19345,74 +19345,74 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_zero strb wzr, [x11], #1 bne L_aes_gcm_encrypt_arm64_crypto_eor3_128_start_zero sub x11, x11, #16 - ld1 {v14.2d}, [x11] - rbit v14.16b, v14.16b - eor v15.16b, v26.16b, v14.16b + ld1 {V14.2D}, [x11] + rbit V14.16B, V14.16B + eor V15.16B, V26.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v15.1d, v22.1d - pmull2 v29.1q, v15.2d, v22.2d - ext v31.16b, v15.16b, v15.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V15.1D, V22.1D + pmull2 V29.1Q, V15.2D, V22.2D + ext8 V31.16B, V15.16B, V15.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_arm64_crypto_eor3_128_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - eor v26.16b, v26.16b, v28.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - ext v31.16b, v26.16b, v26.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + eor V26.16B, V26.16B, V28.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + ext8 V31.16B, V26.16B, V26.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 bne L_aes_gcm_encrypt_arm64_crypto_eor3_128_tag_partial - st1 {v26.16b}, [x5] + st1 {V26.16B}, [x5] b L_aes_gcm_encrypt_arm64_crypto_eor3_done L_aes_gcm_encrypt_arm64_crypto_eor3_128_tag_partial - st1 {v26.16b}, [x11] + st1 {V26.16B}, [x11] cmp w6, #8 blt L_aes_gcm_encrypt_arm64_crypto_eor3_128_tag_start_dw ldr x16, [x11], #8 @@ -19443,10 +19443,10 @@ L_aes_gcm_encrypt_arm64_crypto_eor3_done ldp x20, x21, [x29, #40] ldp x22, x23, [x29, #56] ldr x24, [x29, #72] - ldp d8, d9, [x29, #80] - ldp d10, d11, [x29, #96] - ldp d12, d13, [x29, #112] - ldp d14, d15, [x29, #128] + ldp D8, D9, [x29, #80] + ldp D10, D11, [x29, #96] + ldp D12, D13, [x29, #112] + ldp D14, D15, [x29, #128] ldp x29, x30, [sp], #0x90 ret ENDP @@ -19461,20 +19461,20 @@ AES_GCM_decrypt_AARCH64_EOR3 PROC stp x20, x21, [x29, #40] stp x22, x23, [x29, #56] str x24, [x29, #72] - stp d8, d9, [x29, #80] - stp d10, d11, [x29, #96] - stp d12, d13, [x29, #112] - stp d14, d15, [x29, #128] + stp D8, D9, [x29, #80] + stp D10, D11, [x29, #96] + stp D12, D13, [x29, #112] + stp D14, D15, [x29, #128] ldr w8, [x29, #144] ldr x9, [x29, #152] ldr x10, [x29, #160] ldr x11, [x29, #168] ldr x12, [x29, #176] ldr w13, [x29, #184] - movi v27.16b, #0x87 - eor v26.16b, v26.16b, v26.16b - ushr v27.2d, v27.2d, #56 - ld1 {v22.2d}, [x10] + movi V27.16B, #0x87 + eor V26.16B, V26.16B, V26.16B + ushr V27.2D, V27.2D, #56 + ld1 {V22.2D}, [x10] cmp w8, #0x40 csetm x16, lt cmp w2, #32 @@ -19482,14 +19482,14 @@ AES_GCM_decrypt_AARCH64_EOR3 PROC ands x16, x16, x17 bne L_aes_gcm_decrypt_arm64_crypto_eor3_h_done ; Square H => H^2 - pmull2 v31.1q, v22.2d, v22.2d - pmull v30.1q, v22.1d, v22.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v23.16b, v30.16b, v31.16b + pmull2 V31.1Q, V22.2D, V22.2D + pmull V30.1Q, V22.1D, V22.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V23.16B, V30.16B, V31.16B cmp w8, #0x100 csetm x16, lt cmp w2, #0x40 @@ -19497,28 +19497,28 @@ AES_GCM_decrypt_AARCH64_EOR3 PROC ands x16, x16, x17 bne L_aes_gcm_decrypt_arm64_crypto_eor3_h_done ; Multiply H and H^2 => H^3 - pmull v28.1q, v22.1d, v23.1d - pmull2 v29.1q, v22.2d, v23.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v23.1d - pmull2 v31.1q, v31.2d, v23.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V23.1D + pmull2 V29.1Q, V22.2D, V23.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V23.1D + pmull2 V31.1Q, V31.2D, V23.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v24.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V24.16B, V28.16B, V30.16B ; Square H^2 => H^4 - pmull2 v31.1q, v23.2d, v23.2d - pmull v30.1q, v23.1d, v23.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v25.16b, v30.16b, v31.16b + pmull2 V31.1Q, V23.2D, V23.2D + pmull V30.1Q, V23.1D, V23.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V25.16B, V30.16B, V31.16B ; Done cmp w8, #0x400 csetm x16, lt @@ -19527,51 +19527,51 @@ AES_GCM_decrypt_AARCH64_EOR3 PROC ands x16, x16, x17 bne L_aes_gcm_decrypt_arm64_crypto_eor3_h_done ; Multiply H and H^4 => H^5 - pmull v28.1q, v22.1d, v25.1d - pmull2 v29.1q, v22.2d, v25.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v25.1d - pmull2 v31.1q, v31.2d, v25.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V25.1D + pmull2 V29.1Q, V22.2D, V25.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V25.1D + pmull2 V31.1Q, V31.2D, V25.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v4.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V4.16B, V28.16B, V30.16B ; Square H^3 => H^6 - pmull2 v31.1q, v24.2d, v24.2d - pmull v30.1q, v24.1d, v24.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v5.16b, v30.16b, v31.16b + pmull2 V31.1Q, V24.2D, V24.2D + pmull V30.1Q, V24.1D, V24.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V5.16B, V30.16B, V31.16B ; Multiply H and H^6 => H^7 - pmull v28.1q, v22.1d, v5.1d - pmull2 v29.1q, v22.2d, v5.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v5.1d - pmull2 v31.1q, v31.2d, v5.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V5.1D + pmull2 V29.1Q, V22.2D, V5.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V5.1D + pmull2 V31.1Q, V31.2D, V5.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v6.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V6.16B, V28.16B, V30.16B ; Square H^4 => H^8 - pmull2 v31.1q, v25.2d, v25.2d - pmull v30.1q, v25.1d, v25.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v7.16b, v30.16b, v31.16b + pmull2 V31.1Q, V25.2D, V25.2D + pmull V30.1Q, V25.1D, V25.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V7.16B, V30.16B, V31.16B ; Done L_aes_gcm_decrypt_arm64_crypto_eor3_h_done lsr w14, w8, #4 @@ -19582,94 +19582,94 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_h_done cmp w14, #0x40 blt L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_4 L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_8 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x7], #0x40 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x7], #0x40 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x7], #0x40 + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x7], #0x40 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #8 cmp w14, #8 @@ -19680,53 +19680,53 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_8 cmp w14, #16 blt L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_2 L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_4 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x7], #0x40 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x7], #0x40 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #4 cmp w14, #4 @@ -19735,33 +19735,33 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_4 blt L_aes_gcm_decrypt_arm64_crypto_eor3_aad_done beq L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_1 L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_2 - ld1 {v18.16b, v19.16b}, [x7], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.16B, V19.16B}, [x7], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH sub w14, w14, #2 cmp w14, #1 @@ -19770,32 +19770,32 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_2 L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_1 cbz w14, L_aes_gcm_decrypt_arm64_crypto_eor3_aad_done L_aes_gcm_decrypt_arm64_crypto_eor3_aad_both_1 - ld1 {v18.16b}, [x7], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.16B}, [x7], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH subs w14, w14, #1 bne L_aes_gcm_decrypt_arm64_crypto_eor3_aad_both_1 L_aes_gcm_decrypt_arm64_crypto_eor3_aad_done and w14, w8, #15 cbz w14, L_aes_gcm_decrypt_arm64_crypto_eor3_aad_partial_done - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov w20, w14 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp w20, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_dw ldr x19, [x7], #8 @@ -19821,66 +19821,66 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_aad_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_aad_end_bytes sub x11, x11, x14 - ld1 {v18.2d}, [x11] - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + ld1 {V18.2D}, [x11] + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_eor3_aad_partial_done ; Load Nonce cmp w4, #12 bne L_aes_gcm_decrypt_arm64_crypto_eor3_ghash_nonce ldr x16, [x3] - movi v13.4s, #1, lsl 24 + movi V13.4S, #1, lsl 24 ldr w17, [x3, #8] - mov v13.d[0], x16 - mov v13.s[2], w17 + mov V13.D[0], x16 + mov V13.S[2], w17 mov w15, #1 b L_aes_gcm_decrypt_arm64_crypto_eor3_done_nonce L_aes_gcm_decrypt_arm64_crypto_eor3_ghash_nonce - eor v13.16b, v13.16b, v13.16b + eor V13.16B, V13.16B, V13.16B lsr w14, w4, #4 cbz w14, L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_done L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_start_1 - ld1 {v18.16b}, [x3], #16 - rbit v18.16b, v18.16b - eor v21.16b, v13.16b, v18.16b + ld1 {V18.16B}, [x3], #16 + rbit V18.16B, V18.16B + eor V21.16B, V13.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B ; Done GHASH subs w14, w14, #1 bne L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_start_1 L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_done and w24, w4, #15 cbz x24, L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_partial_done - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov w20, w24 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp w20, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_start_dw ldr x19, [x3], #8 @@ -19906,49 +19906,49 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_end_bytes sub x11, x11, x24 - ld1 {v18.2d}, [x11] - rbit v18.16b, v18.16b - eor v21.16b, v13.16b, v18.16b + ld1 {V18.2D}, [x11] + rbit V18.16B, V18.16B + eor V21.16B, V13.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_eor3_nonce_partial_done eor x14, x14, x14 ubfiz x24, x4, #3, #32 - mov v28.d[0], x14 - mov v28.d[1], x24 - rev64 v28.16b, v28.16b - rbit v28.16b, v28.16b - eor v13.16b, v13.16b, v28.16b - pmull v28.1q, v13.1d, v22.1d - pmull2 v29.1q, v13.2d, v22.2d - ext v31.16b, v13.16b, v13.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v13.16b, v28.16b, v30.16b - rbit v13.16b, v13.16b - mov w15, v13.s[3] + mov V28.D[0], x14 + mov V28.D[1], x24 + rev64 V28.16B, V28.16B + rbit V28.16B, V28.16B + eor V13.16B, V13.16B, V28.16B + pmull V28.1Q, V13.1D, V22.1D + pmull2 V29.1Q, V13.2D, V22.2D + ext8 V31.16B, V13.16B, V13.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V13.16B, V28.16B, V30.16B + rbit V13.16B, V13.16B + mov w15, V13.S[3] rev w15, w15 L_aes_gcm_decrypt_arm64_crypto_eor3_done_nonce - st1 {v13.2d}, [x12] + st1 {V13.2D}, [x12] lsr w14, w2, #4 cmp w13, #12 blt L_aes_gcm_decrypt_arm64_crypto_eor3_start_128 @@ -19958,1201 +19958,1201 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_done_nonce cmp w14, #32 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_4 L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 - mov v14.s[3], w24 + mov V14.S[3], w24 rev w23, w23 - mov v15.s[3], w23 + mov V15.S[3], w23 rev w22, w22 - mov v16.s[3], w22 + mov V16.S[3], w22 rev w21, w21 - mov v17.s[3], w21 + mov V17.S[3], w21 rev w20, w20 - mov v8.s[3], w20 + mov V8.S[3], w20 rev w19, w19 - mov v9.s[3], w19 + mov V9.S[3], w19 rev w17, w17 - mov v10.s[3], w17 + mov V10.S[3], w17 rev w16, w15 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x12] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x12] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_end_8 L_aes_gcm_decrypt_arm64_crypto_eor3_192_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b - mov v14.s[3], w24 + rbit V19.16B, V19.16B + mov V14.S[3], w24 rev w23, w23 - rbit v20.16b, v20.16b - mov v15.s[3], w23 + rbit V20.16B, V20.16B + mov V15.S[3], w23 rev w22, w22 - rbit v21.16b, v21.16b - mov v16.s[3], w22 + rbit V21.16B, V21.16B + mov V16.S[3], w22 rev w21, w21 - rbit v0.16b, v0.16b - mov v17.s[3], w21 + rbit V0.16B, V0.16B + mov V17.S[3], w21 rev w20, w20 - rbit v1.16b, v1.16b - mov v8.s[3], w20 + rbit V1.16B, V1.16B + mov V8.S[3], w20 rev w19, w19 - rbit v2.16b, v2.16b - mov v9.s[3], w19 + rbit V2.16B, V2.16B + mov V9.S[3], w19 rev w17, w17 - rbit v3.16b, v3.16b - mov v10.s[3], w17 + rbit V3.16B, V3.16B + mov V10.S[3], w17 rev w16, w15 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_decrypt_arm64_crypto_eor3_192_both_8 L_aes_gcm_decrypt_arm64_crypto_eor3_192_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x9], #0x40 - ld1 {v12.2d}, [x9] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x9], #0x40 + ld1 {V12.2D}, [x9] cmp w14, #1 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_done beq L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_1 cmp w14, #4 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w19, w19 - mov v15.s[3], w19 + mov V15.S[3], w19 rev w17, w17 - mov v16.s[3], w17 + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x0], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x0], #16 - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x0], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x0], #16 + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_end_4 L_aes_gcm_decrypt_arm64_crypto_eor3_192_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 - rbit v19.16b, v19.16b - mov v14.s[3], w20 + rbit V19.16B, V19.16B + mov V14.S[3], w20 rev w19, w19 - rbit v20.16b, v20.16b - mov v15.s[3], w19 + rbit V20.16B, V20.16B + mov V15.S[3], w19 rev w17, w17 - rbit v21.16b, v21.16b - mov v16.s[3], w17 + rbit V21.16B, V21.16B + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - mov v28.d[1], v31.d[0] - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b + mov V28.D[1], V31.D[0] + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 bge L_aes_gcm_decrypt_arm64_crypto_eor3_192_both_4 L_aes_gcm_decrypt_arm64_crypto_eor3_192_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_1 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_done L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w16, w15 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_decrypt_arm64_crypto_eor3_192_done L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_1 - ld1 {v15.16b}, [x0], #16 + ld1 {V15.16B}, [x0], #16 add w15, w15, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B ; Done GHASH - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.16b}, [x1], #16 + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.16B}, [x1], #16 L_aes_gcm_decrypt_arm64_crypto_eor3_192_done ands w14, w2, #15 beq L_aes_gcm_decrypt_arm64_crypto_eor3_192_partial_done - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B mov w19, w14 - st1 {v15.2d}, [x11] + st1 {V15.2D}, [x11] cmp x19, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_dw ldr x17, [x0], #8 @@ -21178,55 +21178,55 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_192_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_192_end_bytes sub x11, x11, x14 - ld1 {v15.2d}, [x11] + ld1 {V15.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B ; Done GHASH - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.2d}, [x11] + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.2D}, [x11] cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_out_start_dw ldr x17, [x11], #8 @@ -21252,62 +21252,62 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_192_out_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_192_out_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_192_out_end_bytes L_aes_gcm_decrypt_arm64_crypto_eor3_192_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - eor v26.16b, v26.16b, v28.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - ext v31.16b, v26.16b, v26.16b, #8 - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + eor V26.16B, V26.16B, V28.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V26.16B, V26.16B, #8 + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_part_tag - ld1 {v28.16b}, [x5] + ld1 {V28.16B}, [x5] b L_aes_gcm_decrypt_arm64_crypto_eor3_192_tag_loaded L_aes_gcm_decrypt_arm64_crypto_eor3_192_part_tag ubfiz x6, x6, #0, #32 - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov x17, x6 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp x17, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_192_tag_start_dw ldr x16, [x5], #8 @@ -21333,9 +21333,9 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_192_tag_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_192_tag_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_192_tag_end_bytes sub x11, x11, x6 - ld1 {v28.2d}, [x11] + ld1 {V28.2D}, [x11] mov x17, #16 - st1 {v26.2d}, [x11] + st1 {V26.2D}, [x11] sub x17, x17, x6 add x11, x11, x6 L_aes_gcm_decrypt_arm64_crypto_eor3_192_calc_tag_byte @@ -21343,11 +21343,11 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_192_calc_tag_byte subs x17, x17, #1 bne L_aes_gcm_decrypt_arm64_crypto_eor3_192_calc_tag_byte subs x11, x11, #16 - ld1 {v26.2d}, [x11] + ld1 {V26.2D}, [x11] L_aes_gcm_decrypt_arm64_crypto_eor3_192_tag_loaded - eor v28.16b, v28.16b, v26.16b - mov x16, v28.d[0] - mov x17, v28.d[1] + eor V28.16B, V28.16B, V26.16B + mov x16, V28.D[0] + mov x17, V28.D[1] mov w19, #-180 orr x16, x16, x17 cmp x16, #0 @@ -21361,1317 +21361,1317 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_start_256 cmp w14, #32 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_4 L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 - mov v14.s[3], w24 + mov V14.S[3], w24 rev w23, w23 - mov v15.s[3], w23 + mov V15.S[3], w23 rev w22, w22 - mov v16.s[3], w22 + mov V16.S[3], w22 rev w21, w21 - mov v17.s[3], w21 + mov V17.S[3], w21 rev w20, w20 - mov v8.s[3], w20 + mov V8.S[3], w20 rev w19, w19 - mov v9.s[3], w19 + mov V9.S[3], w19 rev w17, w17 - mov v10.s[3], w17 + mov V10.S[3], w17 rev w16, w15 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x12] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x12] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_end_8 L_aes_gcm_decrypt_arm64_crypto_eor3_256_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b - mov v14.s[3], w24 + rbit V19.16B, V19.16B + mov V14.S[3], w24 rev w23, w23 - rbit v20.16b, v20.16b - mov v15.s[3], w23 + rbit V20.16B, V20.16B + mov V15.S[3], w23 rev w22, w22 - rbit v21.16b, v21.16b - mov v16.s[3], w22 + rbit V21.16B, V21.16B + mov V16.S[3], w22 rev w21, w21 - rbit v0.16b, v0.16b - mov v17.s[3], w21 + rbit V0.16B, V0.16B + mov V17.S[3], w21 rev w20, w20 - rbit v1.16b, v1.16b - mov v8.s[3], w20 + rbit V1.16B, V1.16B + mov V8.S[3], w20 rev w19, w19 - rbit v2.16b, v2.16b - mov v9.s[3], w19 + rbit V2.16B, V2.16B + mov V9.S[3], w19 rev w17, w17 - rbit v3.16b, v3.16b - mov v10.s[3], w17 + rbit V3.16B, V3.16B + mov V10.S[3], w17 rev w16, w15 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_decrypt_arm64_crypto_eor3_256_both_8 L_aes_gcm_decrypt_arm64_crypto_eor3_256_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x9], #0x40 - ld1 {v12.2d}, [x9], #16 + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x9], #0x40 + ld1 {V12.2D}, [x9], #16 cmp w14, #1 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_done beq L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_1 cmp w14, #4 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w19, w19 - mov v15.s[3], w19 + mov V15.S[3], w19 rev w17, w17 - mov v16.s[3], w17 + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x0], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x0], #16 - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x0], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x0], #16 + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_end_4 L_aes_gcm_decrypt_arm64_crypto_eor3_256_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 - rbit v19.16b, v19.16b - mov v14.s[3], w20 + rbit V19.16B, V19.16B + mov V14.S[3], w20 rev w19, w19 - rbit v20.16b, v20.16b - mov v15.s[3], w19 + rbit V20.16B, V20.16B + mov V15.S[3], w19 rev w17, w17 - rbit v21.16b, v21.16b - mov v16.s[3], w17 + rbit V21.16B, V21.16B + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - mov v28.d[1], v31.d[0] - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b + mov V28.D[1], V31.D[0] + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 bge L_aes_gcm_decrypt_arm64_crypto_eor3_256_both_4 L_aes_gcm_decrypt_arm64_crypto_eor3_256_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_1 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_done L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w16, w15 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - ld1 {v29.2d, v30.2d}, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + ld1 {V29.2D, V30.2D}, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_decrypt_arm64_crypto_eor3_256_done L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - st1 {v14.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + st1 {V14.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_eor3_256_done ands w14, w2, #15 beq L_aes_gcm_decrypt_arm64_crypto_eor3_256_partial_done - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B mov w19, w14 - st1 {v15.2d}, [x11] + st1 {V15.2D}, [x11] cmp x19, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_dw ldr x17, [x0], #8 @@ -22697,61 +22697,61 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_256_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_256_end_bytes sub x11, x11, x14 - ld1 {v15.2d}, [x11] + ld1 {V15.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] ; Done GHASH - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.2d}, [x11] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.2D}, [x11] cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_out_start_dw ldr x17, [x11], #8 @@ -22777,70 +22777,70 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_256_out_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_256_out_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_256_out_end_bytes L_aes_gcm_decrypt_arm64_crypto_eor3_256_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v28.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v26.16b, v26.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V28.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V26.16B, V26.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - ldr q11, [x9, #-32] - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - ldr q12, [x9, #-16] - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x9] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - ldr q30, [x9, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + ldr Q11, [x9, #-32] + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + ldr Q12, [x9, #-16] + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x9] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + ldr Q30, [x9, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_part_tag - ld1 {v28.16b}, [x5] + ld1 {V28.16B}, [x5] b L_aes_gcm_decrypt_arm64_crypto_eor3_256_tag_loaded L_aes_gcm_decrypt_arm64_crypto_eor3_256_part_tag ubfiz x6, x6, #0, #32 - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov x17, x6 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp x17, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_256_tag_start_dw ldr x16, [x5], #8 @@ -22866,9 +22866,9 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_256_tag_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_256_tag_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_256_tag_end_bytes sub x11, x11, x6 - ld1 {v28.2d}, [x11] + ld1 {V28.2D}, [x11] mov x17, #16 - st1 {v26.2d}, [x11] + st1 {V26.2D}, [x11] sub x17, x17, x6 add x11, x11, x6 L_aes_gcm_decrypt_arm64_crypto_eor3_256_calc_tag_byte @@ -22876,11 +22876,11 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_256_calc_tag_byte subs x17, x17, #1 bne L_aes_gcm_decrypt_arm64_crypto_eor3_256_calc_tag_byte subs x11, x11, #16 - ld1 {v26.2d}, [x11] + ld1 {V26.2D}, [x11] L_aes_gcm_decrypt_arm64_crypto_eor3_256_tag_loaded - eor v28.16b, v28.16b, v26.16b - mov x16, v28.d[0] - mov x17, v28.d[1] + eor V28.16B, V28.16B, V26.16B + mov x16, V28.D[0] + mov x17, V28.D[1] mov w19, #-180 orr x16, x16, x17 cmp x16, #0 @@ -22894,1088 +22894,1088 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_start_128 cmp w14, #32 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_4 L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w24, w24 - mov v14.s[3], w24 + mov V14.S[3], w24 rev w23, w23 - mov v15.s[3], w23 + mov V15.S[3], w23 rev w22, w22 - mov v16.s[3], w22 + mov V16.S[3], w22 rev w21, w21 - mov v17.s[3], w21 + mov V17.S[3], w21 rev w20, w20 - mov v8.s[3], w20 + mov V8.S[3], w20 rev w19, w19 - mov v9.s[3], w19 + mov V9.S[3], w19 rev w17, w17 - mov v10.s[3], w17 + mov V10.S[3], w17 rev w16, w15 - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - ld1 {v0.16b}, [x0], #16 - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - ld1 {v1.16b}, [x0], #16 - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - ld1 {v2.16b}, [x0], #16 - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - ld1 {v3.16b}, [x0], #16 - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x12] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + ld1 {V0.16B}, [x0], #16 + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + ld1 {V1.16B}, [x0], #16 + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + ld1 {V2.16B}, [x0], #16 + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + ld1 {V3.16B}, [x0], #16 + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x12] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_end_8 L_aes_gcm_decrypt_arm64_crypto_eor3_128_both_8 - ldr q12, [x9] + ldr Q12, [x9] add w24, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w23, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w22, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w21, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w20, w15, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w19, w15, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w17, w15, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w15, w15, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w24, w24 - rbit v19.16b, v19.16b - mov v14.s[3], w24 + rbit V19.16B, V19.16B + mov V14.S[3], w24 rev w23, w23 - rbit v20.16b, v20.16b - mov v15.s[3], w23 + rbit V20.16B, V20.16B + mov V15.S[3], w23 rev w22, w22 - rbit v21.16b, v21.16b - mov v16.s[3], w22 + rbit V21.16B, V21.16B + mov V16.S[3], w22 rev w21, w21 - rbit v0.16b, v0.16b - mov v17.s[3], w21 + rbit V0.16B, V0.16B + mov V17.S[3], w21 rev w20, w20 - rbit v1.16b, v1.16b - mov v8.s[3], w20 + rbit V1.16B, V1.16B + mov V8.S[3], w20 rev w19, w19 - rbit v2.16b, v2.16b - mov v9.s[3], w19 + rbit V2.16B, V2.16B + mov V9.S[3], w19 rev w17, w17 - rbit v3.16b, v3.16b - mov v10.s[3], w17 + rbit V3.16B, V3.16B + mov V10.S[3], w17 rev w16, w15 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w16 - ldr q13, [x9, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w16 + ldr Q13, [x9, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w14, w14, #8 - ldr q12, [x9, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + ldr Q12, [x9, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x0], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x0], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x0], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x9, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x0], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x0], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x0], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x0], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x0], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x9, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x12] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x1], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x0], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x0], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x0], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x9, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x0], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x0], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x0], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x0], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x0], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x9, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x12] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x1], #0x40 cmp w14, #8 bge L_aes_gcm_decrypt_arm64_crypto_eor3_128_both_8 L_aes_gcm_decrypt_arm64_crypto_eor3_128_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x9], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x9], #0x40 - ld1 {v8.2d, v9.2d}, [x9], #32 - ld1 {v10.2d}, [x9] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x9], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x9], #0x40 + ld1 {V8.2D, V9.2D}, [x9], #32 + ld1 {V10.2D}, [x9] cmp w14, #1 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_done beq L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_1 cmp w14, #4 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w19, w19 - mov v15.s[3], w19 + mov V15.S[3], w19 rev w17, w17 - mov v16.s[3], w17 + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x0], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x0], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x0], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x0], #16 - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x0], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x0], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x0], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x0], #16 + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_end_4 L_aes_gcm_decrypt_arm64_crypto_eor3_128_both_4 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w19, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w17, w15, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w15, w15, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w20, w20 - rbit v19.16b, v19.16b - mov v14.s[3], w20 + rbit V19.16B, V19.16B + mov V14.S[3], w20 rev w19, w19 - rbit v20.16b, v20.16b - mov v15.s[3], w19 + rbit V20.16B, V20.16B + mov V15.S[3], w19 rev w17, w17 - rbit v21.16b, v21.16b - mov v16.s[3], w17 + rbit V21.16B, V21.16B + mov V16.S[3], w17 rev w16, w15 - mov v17.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w14, w14, #4 - mov v28.d[1], v31.d[0] - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b + mov V28.D[1], V31.D[0] + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x0], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x0], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w14, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x1], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x1], #0x40 bge L_aes_gcm_decrypt_arm64_crypto_eor3_128_both_4 L_aes_gcm_decrypt_arm64_crypto_eor3_128_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w14, #1 beq L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_1 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_done L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_2 add w20, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w15, w15, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w20, w20 - mov v14.s[3], w20 + mov V14.S[3], w20 rev w16, w15 - mov v15.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w14, w14, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x0], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v19.16b}, [x0], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x1], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x0], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V19.16B}, [x0], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x1], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w14, L_aes_gcm_decrypt_arm64_crypto_eor3_128_done L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_1 add w15, w15, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v18.16b}, [x0], #16 - eor v14.16b, v14.16b, v18.16b - st1 {v14.16b}, [x1], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V18.16B}, [x0], #16 + eor V14.16B, V14.16B, V18.16B + st1 {V14.16B}, [x1], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_arm64_crypto_eor3_128_done ands w14, w2, #15 beq L_aes_gcm_decrypt_arm64_crypto_eor3_128_partial_done - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B mov w19, w14 - st1 {v15.2d}, [x11] + st1 {V15.2D}, [x11] cmp x19, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_dw ldr x17, [x0], #8 @@ -24001,51 +24001,51 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_128_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_128_end_bytes sub x11, x11, x14 - ld1 {v15.2d}, [x11] + ld1 {V15.2D}, [x11] add w15, w15, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w16, w15 - mov v14.s[3], w16 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w16 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.2d}, [x11] + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.2D}, [x11] cmp w14, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_out_start_dw ldr x17, [x11], #8 @@ -24071,58 +24071,58 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_128_out_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_128_out_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_128_out_end_bytes L_aes_gcm_decrypt_arm64_crypto_eor3_128_partial_done - ld1 {v14.2d}, [x12] + ld1 {V14.2D}, [x12] ubfiz x8, x8, #3, #32 rbit x8, x8 - mov v28.d[0], x8 + mov V28.D[0], x8 ubfiz x2, x2, #3, #32 rbit x2, x2 - mov v28.d[1], x2 - eor v26.16b, v26.16b, v28.16b - pmull v28.1q, v26.1d, v22.1d - pmull2 v29.1q, v26.2d, v22.2d - ext v31.16b, v26.16b, v26.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V28.D[1], x2 + eor V26.16B, V26.16B, V28.16B + pmull V28.1Q, V26.1D, V22.1D + pmull2 V29.1Q, V26.2D, V22.2D + ext8 V31.16B, V26.16B, V26.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - rbit v26.16b, v26.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - eor v26.16b, v26.16b, v14.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + rbit V26.16B, V26.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + eor V26.16B, V26.16B, V14.16B cmp w6, #16 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_part_tag - ld1 {v28.16b}, [x5] + ld1 {V28.16B}, [x5] b L_aes_gcm_decrypt_arm64_crypto_eor3_128_tag_loaded L_aes_gcm_decrypt_arm64_crypto_eor3_128_part_tag ubfiz x6, x6, #0, #32 - eor v28.16b, v28.16b, v28.16b + eor V28.16B, V28.16B, V28.16B mov x17, x6 - st1 {v28.2d}, [x11] + st1 {V28.2D}, [x11] cmp x17, #8 blt L_aes_gcm_decrypt_arm64_crypto_eor3_128_tag_start_dw ldr x16, [x5], #8 @@ -24148,9 +24148,9 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_128_tag_start_byte bne L_aes_gcm_decrypt_arm64_crypto_eor3_128_tag_start_byte L_aes_gcm_decrypt_arm64_crypto_eor3_128_tag_end_bytes sub x11, x11, x6 - ld1 {v28.2d}, [x11] + ld1 {V28.2D}, [x11] mov x17, #16 - st1 {v26.2d}, [x11] + st1 {V26.2D}, [x11] sub x17, x17, x6 add x11, x11, x6 L_aes_gcm_decrypt_arm64_crypto_eor3_128_calc_tag_byte @@ -24158,11 +24158,11 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_128_calc_tag_byte subs x17, x17, #1 bne L_aes_gcm_decrypt_arm64_crypto_eor3_128_calc_tag_byte subs x11, x11, #16 - ld1 {v26.2d}, [x11] + ld1 {V26.2D}, [x11] L_aes_gcm_decrypt_arm64_crypto_eor3_128_tag_loaded - eor v28.16b, v28.16b, v26.16b - mov x16, v28.d[0] - mov x17, v28.d[1] + eor V28.16B, V28.16B, V26.16B + mov x16, V28.D[0] + mov x17, V28.D[1] mov w19, #-180 orr x16, x16, x17 cmp x16, #0 @@ -24174,10 +24174,10 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_done ldp x20, x21, [x29, #40] ldp x22, x23, [x29, #56] ldr x24, [x29, #72] - ldp d8, d9, [x29, #80] - ldp d10, d11, [x29, #96] - ldp d12, d13, [x29, #112] - ldp d14, d15, [x29, #128] + ldp D8, D9, [x29, #80] + ldp D10, D11, [x29, #96] + ldp D12, D13, [x29, #112] + ldp D14, D15, [x29, #128] ldp x29, x30, [sp], #0x90 ret ENDP @@ -24190,53 +24190,53 @@ L_aes_gcm_decrypt_arm64_crypto_eor3_done AES_GCM_init_AARCH64 PROC stp x29, x30, [sp, #-48]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - movi v6.16b, #0x87 - ld1 {v5.2d}, [x4] - ushr v6.2d, v6.2d, #56 + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + movi V6.16B, #0x87 + ld1 {V5.2D}, [x4] + ushr V6.2D, V6.2D, #56 ; Load Nonce cmp w3, #12 bne L_aes_gcm_init_arm64_crypto_ghash_nonce ldr x9, [x2] - movi v4.4s, #1, lsl 24 + movi V4.4S, #1, lsl 24 ldr w10, [x2, #8] - mov v4.d[0], x9 - mov v4.s[2], w10 + mov V4.D[0], x9 + mov V4.S[2], w10 mov w8, #1 b L_aes_gcm_init_arm64_crypto_done_nonce L_aes_gcm_init_arm64_crypto_ghash_nonce - eor v4.16b, v4.16b, v4.16b + eor V4.16B, V4.16B, V4.16B lsr w7, w3, #4 cbz w7, L_aes_gcm_init_arm64_crypto_done L_aes_gcm_init_arm64_crypto_start_1 - ld1 {v0.16b}, [x2], #16 - rbit v0.16b, v0.16b - eor v3.16b, v4.16b, v0.16b + ld1 {V0.16B}, [x2], #16 + rbit V0.16B, V0.16B + eor V3.16B, V4.16B, V0.16B ; X = C * H^1 - pmull v7.1q, v3.1d, v5.1d - pmull2 v8.1q, v3.2d, v5.2d - ext v10.16b, v3.16b, v3.16b, #8 - pmull v9.1q, v10.1d, v5.1d - pmull2 v10.1q, v10.2d, v5.2d - eor v9.16b, v9.16b, v10.16b + pmull V7.1Q, V3.1D, V5.1D + pmull2 V8.1Q, V3.2D, V5.2D + ext8 V10.16B, V3.16B, V3.16B, #8 + pmull V9.1Q, V10.1D, V5.1D + pmull2 V10.1Q, V10.2D, V5.2D + eor V9.16B, V9.16B, V10.16B ; Reduce - ext v10.16b, v7.16b, v8.16b, #8 - pmull2 v8.1q, v8.2d, v6.2d - eor v10.16b, v10.16b, v8.16b - eor v10.16b, v10.16b, v9.16b - pmull2 v9.1q, v10.2d, v6.2d - mov v7.d[1], v10.d[0] - eor v4.16b, v7.16b, v9.16b + ext8 V10.16B, V7.16B, V8.16B, #8 + pmull2 V8.1Q, V8.2D, V6.2D + eor V10.16B, V10.16B, V8.16B + eor V10.16B, V10.16B, V9.16B + pmull2 V9.1Q, V10.2D, V6.2D + mov V7.D[1], V10.D[0] + eor V4.16B, V7.16B, V9.16B ; Done GHASH subs w7, w7, #1 bne L_aes_gcm_init_arm64_crypto_start_1 L_aes_gcm_init_arm64_crypto_done and w13, w3, #15 cbz x13, L_aes_gcm_init_arm64_crypto_partial_done - eor v7.16b, v7.16b, v7.16b + eor V7.16B, V7.16B, V7.16B mov w12, w13 - st1 {v7.2d}, [x6] + st1 {V7.2D}, [x6] cmp w12, #8 blt L_aes_gcm_init_arm64_crypto_start_dw ldr x11, [x2], #8 @@ -24262,93 +24262,93 @@ L_aes_gcm_init_arm64_crypto_start_byte bne L_aes_gcm_init_arm64_crypto_start_byte L_aes_gcm_init_arm64_crypto_end_bytes sub x6, x6, x13 - ld1 {v0.2d}, [x6] - rbit v0.16b, v0.16b - eor v3.16b, v4.16b, v0.16b + ld1 {V0.2D}, [x6] + rbit V0.16B, V0.16B + eor V3.16B, V4.16B, V0.16B ; X = C * H^1 - pmull v7.1q, v3.1d, v5.1d - pmull2 v8.1q, v3.2d, v5.2d - ext v10.16b, v3.16b, v3.16b, #8 - pmull v9.1q, v10.1d, v5.1d - pmull2 v10.1q, v10.2d, v5.2d - eor v9.16b, v9.16b, v10.16b + pmull V7.1Q, V3.1D, V5.1D + pmull2 V8.1Q, V3.2D, V5.2D + ext8 V10.16B, V3.16B, V3.16B, #8 + pmull V9.1Q, V10.1D, V5.1D + pmull2 V10.1Q, V10.2D, V5.2D + eor V9.16B, V9.16B, V10.16B ; Reduce - ext v10.16b, v7.16b, v8.16b, #8 - pmull2 v8.1q, v8.2d, v6.2d - eor v10.16b, v10.16b, v8.16b - eor v10.16b, v10.16b, v9.16b - pmull2 v9.1q, v10.2d, v6.2d - mov v7.d[1], v10.d[0] - eor v4.16b, v7.16b, v9.16b + ext8 V10.16B, V7.16B, V8.16B, #8 + pmull2 V8.1Q, V8.2D, V6.2D + eor V10.16B, V10.16B, V8.16B + eor V10.16B, V10.16B, V9.16B + pmull2 V9.1Q, V10.2D, V6.2D + mov V7.D[1], V10.D[0] + eor V4.16B, V7.16B, V9.16B ; Done GHASH L_aes_gcm_init_arm64_crypto_partial_done eor x7, x7, x7 ubfiz x13, x3, #3, #32 - mov v7.d[0], x7 - mov v7.d[1], x13 - rev64 v7.16b, v7.16b - rbit v7.16b, v7.16b - eor v4.16b, v4.16b, v7.16b - pmull v7.1q, v4.1d, v5.1d - pmull2 v8.1q, v4.2d, v5.2d - ext v10.16b, v4.16b, v4.16b, #8 - pmull v9.1q, v10.1d, v5.1d - pmull2 v10.1q, v10.2d, v5.2d - eor v9.16b, v9.16b, v10.16b - ext v10.16b, v7.16b, v8.16b, #8 - pmull2 v8.1q, v8.2d, v6.2d - eor v10.16b, v10.16b, v8.16b - eor v10.16b, v10.16b, v9.16b - pmull2 v9.1q, v10.2d, v6.2d - mov v7.d[1], v10.d[0] - eor v4.16b, v7.16b, v9.16b - rbit v4.16b, v4.16b - mov w8, v4.s[3] + mov V7.D[0], x7 + mov V7.D[1], x13 + rev64 V7.16B, V7.16B + rbit V7.16B, V7.16B + eor V4.16B, V4.16B, V7.16B + pmull V7.1Q, V4.1D, V5.1D + pmull2 V8.1Q, V4.2D, V5.2D + ext8 V10.16B, V4.16B, V4.16B, #8 + pmull V9.1Q, V10.1D, V5.1D + pmull2 V10.1Q, V10.2D, V5.2D + eor V9.16B, V9.16B, V10.16B + ext8 V10.16B, V7.16B, V8.16B, #8 + pmull2 V8.1Q, V8.2D, V6.2D + eor V10.16B, V10.16B, V8.16B + eor V10.16B, V10.16B, V9.16B + pmull2 V9.1Q, V10.2D, V6.2D + mov V7.D[1], V10.D[0] + eor V4.16B, V7.16B, V9.16B + rbit V4.16B, V4.16B + mov w8, V4.S[3] rev w8, w8 L_aes_gcm_init_arm64_crypto_done_nonce - st1 {v4.2d}, [x5] - ld1 {v7.2d, v8.2d, v9.2d, v10.2d}, [x0], #0x40 - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b - aesmc v4.16b, v4.16b - aese v4.16b, v9.16b - aesmc v4.16b, v4.16b - aese v4.16b, v10.16b - aesmc v4.16b, v4.16b - ld1 {v7.2d, v8.2d, v9.2d, v10.2d}, [x0], #0x40 - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b - aesmc v4.16b, v4.16b - aese v4.16b, v9.16b - aesmc v4.16b, v4.16b - aese v4.16b, v10.16b - aesmc v4.16b, v4.16b + st1 {V4.2D}, [x5] + ld1 {V7.2D, V8.2D, V9.2D, V10.2D}, [x0], #0x40 + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B + aesmc V4.16B, V4.16B + aese V4.16B, V9.16B + aesmc V4.16B, V4.16B + aese V4.16B, V10.16B + aesmc V4.16B, V4.16B + ld1 {V7.2D, V8.2D, V9.2D, V10.2D}, [x0], #0x40 + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B + aesmc V4.16B, V4.16B + aese V4.16B, V9.16B + aesmc V4.16B, V4.16B + aese V4.16B, V10.16B + aesmc V4.16B, V4.16B subs w1, w1, #10 - ld1 {v7.2d, v8.2d}, [x0], #32 - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b + ld1 {V7.2D, V8.2D}, [x0], #32 + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B beq L_aes_gcm_init_arm64_crypto_round_done - ld1 {v7.2d, v8.2d}, [x0], #32 + ld1 {V7.2D, V8.2D}, [x0], #32 subs w1, w1, #2 - aesmc v4.16b, v4.16b - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b + aesmc V4.16B, V4.16B + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B beq L_aes_gcm_init_arm64_crypto_round_done - ld1 {v7.2d, v8.2d}, [x0], #32 - aesmc v4.16b, v4.16b - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b + ld1 {V7.2D, V8.2D}, [x0], #32 + aesmc V4.16B, V4.16B + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B L_aes_gcm_init_arm64_crypto_round_done - ld1 {v7.2d}, [x0] - eor v4.16b, v4.16b, v7.16b - st1 {v4.2d}, [x6] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] + ld1 {V7.2D}, [x0] + eor V4.16B, V4.16B, V7.16B + st1 {V4.2D}, [x6] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] ldp x29, x30, [sp], #48 ret ENDP @@ -24358,32 +24358,32 @@ L_aes_gcm_init_arm64_crypto_round_done AES_GCM_ghash_block_AARCH64 PROC stp x29, x30, [sp, #-32]! add x29, sp, #0 - stp d8, d9, [x29, #16] - ld1 {v6.2d}, [x1] - movi v7.16b, #0x87 - ld1 {v5.2d}, [x2] - ushr v7.2d, v7.2d, #56 - ld1 {v4.2d}, [x0] - rbit v4.16b, v4.16b - eor v8.16b, v6.16b, v4.16b + stp D8, D9, [x29, #16] + ld1 {V6.2D}, [x1] + movi V7.16B, #0x87 + ld1 {V5.2D}, [x2] + ushr V7.2D, V7.2D, #56 + ld1 {V4.2D}, [x0] + rbit V4.16B, V4.16B + eor V8.16B, V6.16B, V4.16B ; X = C * H^1 - pmull v0.1q, v8.1d, v5.1d - pmull2 v1.1q, v8.2d, v5.2d - ext v3.16b, v8.16b, v8.16b, #8 - pmull v2.1q, v3.1d, v5.1d - pmull2 v3.1q, v3.2d, v5.2d - eor v2.16b, v2.16b, v3.16b + pmull V0.1Q, V8.1D, V5.1D + pmull2 V1.1Q, V8.2D, V5.2D + ext8 V3.16B, V8.16B, V8.16B, #8 + pmull V2.1Q, V3.1D, V5.1D + pmull2 V3.1Q, V3.2D, V5.2D + eor V2.16B, V2.16B, V3.16B ; Reduce - ext v3.16b, v0.16b, v1.16b, #8 - pmull2 v1.1q, v1.2d, v7.2d - eor v3.16b, v3.16b, v1.16b - eor v3.16b, v3.16b, v2.16b - pmull2 v2.1q, v3.2d, v7.2d - mov v0.d[1], v3.d[0] - eor v6.16b, v0.16b, v2.16b + ext8 V3.16B, V0.16B, V1.16B, #8 + pmull2 V1.1Q, V1.2D, V7.2D + eor V3.16B, V3.16B, V1.16B + eor V3.16B, V3.16B, V2.16B + pmull2 V2.1Q, V3.2D, V7.2D + mov V0.D[1], V3.D[0] + eor V6.16B, V0.16B, V2.16B ; Done GHASH - st1 {v6.2d}, [x1] - ldp d8, d9, [x29, #16] + st1 {V6.2D}, [x1] + ldp D8, D9, [x29, #16] ldp x29, x30, [sp], #32 ret ENDP @@ -24393,102 +24393,102 @@ AES_GCM_ghash_block_AARCH64 PROC AES_GCM_aad_update_AARCH64 PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] - ld1 {v20.2d}, [x2] - movi v21.16b, #0x87 - ld1 {v12.2d}, [x3] - ushr v21.2d, v21.2d, #56 + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] + ld1 {V20.2D}, [x2] + movi V21.16B, #0x87 + ld1 {V12.2D}, [x3] + ushr V21.2D, V21.2D, #56 cmp x1, #0x40 blt L_aes_gcm_aad_update_arm64_crypto_h_done ; Square H => H^2 - pmull2 v11.1q, v12.2d, v12.2d - pmull v10.1q, v12.1d, v12.1d - pmull2 v8.1q, v11.2d, v21.2d - ext v9.16b, v10.16b, v11.16b, #8 - eor v9.16b, v9.16b, v8.16b - pmull2 v11.1q, v9.2d, v21.2d - mov v10.d[1], v9.d[0] - eor v13.16b, v10.16b, v11.16b + pmull2 V11.1Q, V12.2D, V12.2D + pmull V10.1Q, V12.1D, V12.1D + pmull2 V8.1Q, V11.2D, V21.2D + ext8 V9.16B, V10.16B, V11.16B, #8 + eor V9.16B, V9.16B, V8.16B + pmull2 V11.1Q, V9.2D, V21.2D + mov V10.D[1], V9.D[0] + eor V13.16B, V10.16B, V11.16B cmp x1, #0x100 blt L_aes_gcm_aad_update_arm64_crypto_h_done ; Multiply H and H^2 => H^3 - pmull v8.1q, v12.1d, v13.1d - pmull2 v9.1q, v12.2d, v13.2d - ext v11.16b, v12.16b, v12.16b, #8 - pmull v10.1q, v11.1d, v13.1d - pmull2 v11.1q, v11.2d, v13.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V12.1D, V13.1D + pmull2 V9.1Q, V12.2D, V13.2D + ext8 V11.16B, V12.16B, V12.16B, #8 + pmull V10.1Q, V11.1D, V13.1D + pmull2 V11.1Q, V11.2D, V13.2D + eor V10.16B, V10.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor v11.16b, v11.16b, v9.16b - eor v11.16b, v11.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v14.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor V11.16B, V11.16B, V9.16B + eor V11.16B, V11.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V14.16B, V8.16B, V10.16B ; Square H^2 => H^4 - pmull2 v11.1q, v13.2d, v13.2d - pmull v10.1q, v13.1d, v13.1d - pmull2 v8.1q, v11.2d, v21.2d - ext v9.16b, v10.16b, v11.16b, #8 - eor v9.16b, v9.16b, v8.16b - pmull2 v11.1q, v9.2d, v21.2d - mov v10.d[1], v9.d[0] - eor v15.16b, v10.16b, v11.16b + pmull2 V11.1Q, V13.2D, V13.2D + pmull V10.1Q, V13.1D, V13.1D + pmull2 V8.1Q, V11.2D, V21.2D + ext8 V9.16B, V10.16B, V11.16B, #8 + eor V9.16B, V9.16B, V8.16B + pmull2 V11.1Q, V9.2D, V21.2D + mov V10.D[1], V9.D[0] + eor V15.16B, V10.16B, V11.16B ; Done cmp x1, #0x400 blt L_aes_gcm_aad_update_arm64_crypto_h_done ; Multiply H and H^4 => H^5 - pmull v8.1q, v12.1d, v15.1d - pmull2 v9.1q, v12.2d, v15.2d - ext v11.16b, v12.16b, v12.16b, #8 - pmull v10.1q, v11.1d, v15.1d - pmull2 v11.1q, v11.2d, v15.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V12.1D, V15.1D + pmull2 V9.1Q, V12.2D, V15.2D + ext8 V11.16B, V12.16B, V12.16B, #8 + pmull V10.1Q, V11.1D, V15.1D + pmull2 V11.1Q, V11.2D, V15.2D + eor V10.16B, V10.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor v11.16b, v11.16b, v9.16b - eor v11.16b, v11.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v16.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor V11.16B, V11.16B, V9.16B + eor V11.16B, V11.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V16.16B, V8.16B, V10.16B ; Square H^3 => H^6 - pmull2 v11.1q, v14.2d, v14.2d - pmull v10.1q, v14.1d, v14.1d - pmull2 v8.1q, v11.2d, v21.2d - ext v9.16b, v10.16b, v11.16b, #8 - eor v9.16b, v9.16b, v8.16b - pmull2 v11.1q, v9.2d, v21.2d - mov v10.d[1], v9.d[0] - eor v17.16b, v10.16b, v11.16b + pmull2 V11.1Q, V14.2D, V14.2D + pmull V10.1Q, V14.1D, V14.1D + pmull2 V8.1Q, V11.2D, V21.2D + ext8 V9.16B, V10.16B, V11.16B, #8 + eor V9.16B, V9.16B, V8.16B + pmull2 V11.1Q, V9.2D, V21.2D + mov V10.D[1], V9.D[0] + eor V17.16B, V10.16B, V11.16B ; Multiply H and H^6 => H^7 - pmull v8.1q, v12.1d, v17.1d - pmull2 v9.1q, v12.2d, v17.2d - ext v11.16b, v12.16b, v12.16b, #8 - pmull v10.1q, v11.1d, v17.1d - pmull2 v11.1q, v11.2d, v17.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V12.1D, V17.1D + pmull2 V9.1Q, V12.2D, V17.2D + ext8 V11.16B, V12.16B, V12.16B, #8 + pmull V10.1Q, V11.1D, V17.1D + pmull2 V11.1Q, V11.2D, V17.2D + eor V10.16B, V10.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor v11.16b, v11.16b, v9.16b - eor v11.16b, v11.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v18.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor V11.16B, V11.16B, V9.16B + eor V11.16B, V11.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V18.16B, V8.16B, V10.16B ; Square H^4 => H^8 - pmull2 v11.1q, v15.2d, v15.2d - pmull v10.1q, v15.1d, v15.1d - pmull2 v8.1q, v11.2d, v21.2d - ext v9.16b, v10.16b, v11.16b, #8 - eor v9.16b, v9.16b, v8.16b - pmull2 v11.1q, v9.2d, v21.2d - mov v10.d[1], v9.d[0] - eor v19.16b, v10.16b, v11.16b + pmull2 V11.1Q, V15.2D, V15.2D + pmull V10.1Q, V15.1D, V15.1D + pmull2 V8.1Q, V11.2D, V21.2D + ext8 V9.16B, V10.16B, V11.16B, #8 + eor V9.16B, V9.16B, V8.16B + pmull2 V11.1Q, V9.2D, V21.2D + mov V10.D[1], V9.D[0] + eor V19.16B, V10.16B, V11.16B ; Done L_aes_gcm_aad_update_arm64_crypto_h_done lsr x1, x1, #4 @@ -24499,102 +24499,102 @@ L_aes_gcm_aad_update_arm64_crypto_h_done cmp x1, #0x40 blt L_aes_gcm_aad_update_arm64_crypto_start_4 L_aes_gcm_aad_update_arm64_crypto_start_8 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - rbit v4.16b, v4.16b - rbit v5.16b, v5.16b - rbit v6.16b, v6.16b - rbit v7.16b, v7.16b - eor v0.16b, v0.16b, v20.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + rbit V4.16B, V4.16B + rbit V5.16B, V5.16B + rbit V6.16B, V6.16B + rbit V7.16B, V7.16B + eor V0.16B, V0.16B, V20.16B ; X = C * H^1 - pmull v8.1q, v7.1d, v12.1d - pmull2 v9.1q, v7.2d, v12.2d - ext v11.16b, v7.16b, v7.16b, #8 - pmull v10.1q, v11.1d, v12.1d - pmull2 v11.1q, v11.2d, v12.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V7.1D, V12.1D + pmull2 V9.1Q, V7.2D, V12.2D + ext8 V11.16B, V7.16B, V7.16B, #8 + pmull V10.1Q, V11.1D, V12.1D + pmull2 V11.1Q, V11.2D, V12.2D + eor V10.16B, V10.16B, V11.16B ; X += C * H^2 - pmull v11.1q, v13.1d, v6.1d - pmull2 v20.1q, v13.2d, v6.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v6.16b, v6.16b, #8 - pmull v11.1q, v20.1d, v13.1d - pmull2 v20.1q, v20.2d, v13.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V13.1D, V6.1D + pmull2 V20.1Q, V13.2D, V6.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V6.16B, V6.16B, #8 + pmull V11.1Q, V20.1D, V13.1D + pmull2 V20.1Q, V20.2D, V13.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; X += C * H^3 - pmull v11.1q, v14.1d, v5.1d - pmull2 v20.1q, v14.2d, v5.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v5.16b, v5.16b, #8 - pmull v11.1q, v20.1d, v14.1d - pmull2 v20.1q, v20.2d, v14.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V14.1D, V5.1D + pmull2 V20.1Q, V14.2D, V5.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V5.16B, V5.16B, #8 + pmull V11.1Q, V20.1D, V14.1D + pmull2 V20.1Q, V20.2D, V14.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; X += C * H^4 - pmull v11.1q, v15.1d, v4.1d - pmull2 v20.1q, v15.2d, v4.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v4.16b, v4.16b, #8 - pmull v11.1q, v20.1d, v15.1d - pmull2 v20.1q, v20.2d, v15.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V15.1D, V4.1D + pmull2 V20.1Q, V15.2D, V4.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V4.16B, V4.16B, #8 + pmull V11.1Q, V20.1D, V15.1D + pmull2 V20.1Q, V20.2D, V15.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; X += C * H^5 - pmull v11.1q, v16.1d, v3.1d - pmull2 v20.1q, v16.2d, v3.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v3.16b, v3.16b, #8 - pmull v11.1q, v20.1d, v16.1d - pmull2 v20.1q, v20.2d, v16.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V16.1D, V3.1D + pmull2 V20.1Q, V16.2D, V3.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V3.16B, V3.16B, #8 + pmull V11.1Q, V20.1D, V16.1D + pmull2 V20.1Q, V20.2D, V16.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; X += C * H^6 - pmull v11.1q, v17.1d, v2.1d - pmull2 v20.1q, v17.2d, v2.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v2.16b, v2.16b, #8 - pmull v11.1q, v20.1d, v17.1d - pmull2 v20.1q, v20.2d, v17.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V17.1D, V2.1D + pmull2 V20.1Q, V17.2D, V2.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V2.16B, V2.16B, #8 + pmull V11.1Q, V20.1D, V17.1D + pmull2 V20.1Q, V20.2D, V17.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; X += C * H^7 - pmull v11.1q, v18.1d, v1.1d - pmull2 v20.1q, v18.2d, v1.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v1.16b, v1.16b, #8 - pmull v11.1q, v20.1d, v18.1d - pmull2 v20.1q, v20.2d, v18.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V18.1D, V1.1D + pmull2 V20.1Q, V18.2D, V1.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V1.16B, V1.16B, #8 + pmull V11.1Q, V20.1D, V18.1D + pmull2 V20.1Q, V20.2D, V18.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; X += C * H^8 - pmull v11.1q, v19.1d, v0.1d - pmull2 v20.1q, v19.2d, v0.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v0.16b, v0.16b, #8 - pmull v11.1q, v20.1d, v19.1d - pmull2 v20.1q, v20.2d, v19.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V19.1D, V0.1D + pmull2 V20.1Q, V19.2D, V0.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V0.16B, V0.16B, #8 + pmull V11.1Q, V20.1D, V19.1D + pmull2 V20.1Q, V20.2D, V19.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor v11.16b, v11.16b, v9.16b - eor v11.16b, v11.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v20.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor V11.16B, V11.16B, V9.16B + eor V11.16B, V11.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V20.16B, V8.16B, V10.16B ; Done GHASH sub x1, x1, #8 cmp x1, #8 @@ -24605,57 +24605,57 @@ L_aes_gcm_aad_update_arm64_crypto_start_8 cmp x1, #16 blt L_aes_gcm_aad_update_arm64_crypto_start_2 L_aes_gcm_aad_update_arm64_crypto_start_4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v0.16b, v0.16b, v20.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V0.16B, V0.16B, V20.16B ; X = C * H^1 - pmull v8.1q, v3.1d, v12.1d - pmull2 v9.1q, v3.2d, v12.2d - ext v11.16b, v3.16b, v3.16b, #8 - pmull v10.1q, v11.1d, v12.1d - pmull2 v11.1q, v11.2d, v12.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V3.1D, V12.1D + pmull2 V9.1Q, V3.2D, V12.2D + ext8 V11.16B, V3.16B, V3.16B, #8 + pmull V10.1Q, V11.1D, V12.1D + pmull2 V11.1Q, V11.2D, V12.2D + eor V10.16B, V10.16B, V11.16B ; X += C * H^2 - pmull v11.1q, v13.1d, v2.1d - pmull2 v20.1q, v13.2d, v2.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v2.16b, v2.16b, #8 - pmull v11.1q, v20.1d, v13.1d - pmull2 v20.1q, v20.2d, v13.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V13.1D, V2.1D + pmull2 V20.1Q, V13.2D, V2.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V2.16B, V2.16B, #8 + pmull V11.1Q, V20.1D, V13.1D + pmull2 V20.1Q, V20.2D, V13.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; X += C * H^3 - pmull v11.1q, v14.1d, v1.1d - pmull2 v20.1q, v14.2d, v1.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v1.16b, v1.16b, #8 - pmull v11.1q, v20.1d, v14.1d - pmull2 v20.1q, v20.2d, v14.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V14.1D, V1.1D + pmull2 V20.1Q, V14.2D, V1.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V1.16B, V1.16B, #8 + pmull V11.1Q, V20.1D, V14.1D + pmull2 V20.1Q, V20.2D, V14.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; X += C * H^4 - pmull v11.1q, v15.1d, v0.1d - pmull2 v20.1q, v15.2d, v0.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v0.16b, v0.16b, #8 - pmull v11.1q, v20.1d, v15.1d - pmull2 v20.1q, v20.2d, v15.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V15.1D, V0.1D + pmull2 V20.1Q, V15.2D, V0.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V0.16B, V0.16B, #8 + pmull V11.1Q, V20.1D, V15.1D + pmull2 V20.1Q, V20.2D, V15.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor v11.16b, v11.16b, v9.16b - eor v11.16b, v11.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v20.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor V11.16B, V11.16B, V9.16B + eor V11.16B, V11.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V20.16B, V8.16B, V10.16B ; Done GHASH sub x1, x1, #4 cmp x1, #4 @@ -24664,35 +24664,35 @@ L_aes_gcm_aad_update_arm64_crypto_start_4 blt L_aes_gcm_aad_update_arm64_crypto_done beq L_aes_gcm_aad_update_arm64_crypto_start_1 L_aes_gcm_aad_update_arm64_crypto_start_2 - ld1 {v0.16b, v1.16b}, [x0], #32 - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - eor v3.16b, v20.16b, v0.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + eor V3.16B, V20.16B, V0.16B ; X = C * H^1 - pmull v8.1q, v1.1d, v12.1d - pmull2 v9.1q, v1.2d, v12.2d - ext v11.16b, v1.16b, v1.16b, #8 - pmull v10.1q, v11.1d, v12.1d - pmull2 v11.1q, v11.2d, v12.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V1.1D, V12.1D + pmull2 V9.1Q, V1.2D, V12.2D + ext8 V11.16B, V1.16B, V1.16B, #8 + pmull V10.1Q, V11.1D, V12.1D + pmull2 V11.1Q, V11.2D, V12.2D + eor V10.16B, V10.16B, V11.16B ; X += C * H^2 - pmull v11.1q, v13.1d, v3.1d - pmull2 v20.1q, v13.2d, v3.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v3.16b, v3.16b, #8 - pmull v11.1q, v20.1d, v13.1d - pmull2 v20.1q, v20.2d, v13.2d - eor v20.16b, v20.16b, v11.16b - eor v10.16b, v10.16b, v20.16b + pmull V11.1Q, V13.1D, V3.1D + pmull2 V20.1Q, V13.2D, V3.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V3.16B, V3.16B, #8 + pmull V11.1Q, V20.1D, V13.1D + pmull2 V20.1Q, V20.2D, V13.2D + eor V20.16B, V20.16B, V11.16B + eor V10.16B, V10.16B, V20.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor v11.16b, v11.16b, v9.16b - eor v11.16b, v11.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v20.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor V11.16B, V11.16B, V9.16B + eor V11.16B, V11.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V20.16B, V8.16B, V10.16B ; Done GHASH sub x1, x1, #2 cmp x1, #1 @@ -24701,33 +24701,33 @@ L_aes_gcm_aad_update_arm64_crypto_start_2 L_aes_gcm_aad_update_arm64_crypto_start_1 cbz x1, L_aes_gcm_aad_update_arm64_crypto_done L_aes_gcm_aad_update_arm64_crypto_both_1 - ld1 {v0.16b}, [x0], #16 - rbit v0.16b, v0.16b - eor v3.16b, v20.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + rbit V0.16B, V0.16B + eor V3.16B, V20.16B, V0.16B ; X = C * H^1 - pmull v8.1q, v3.1d, v12.1d - pmull2 v9.1q, v3.2d, v12.2d - ext v11.16b, v3.16b, v3.16b, #8 - pmull v10.1q, v11.1d, v12.1d - pmull2 v11.1q, v11.2d, v12.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V3.1D, V12.1D + pmull2 V9.1Q, V3.2D, V12.2D + ext8 V11.16B, V3.16B, V3.16B, #8 + pmull V10.1Q, V11.1D, V12.1D + pmull2 V11.1Q, V11.2D, V12.2D + eor V10.16B, V10.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor v11.16b, v11.16b, v9.16b - eor v11.16b, v11.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v20.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor V11.16B, V11.16B, V9.16B + eor V11.16B, V11.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V20.16B, V8.16B, V10.16B ; Done GHASH subs x1, x1, #1 bne L_aes_gcm_aad_update_arm64_crypto_both_1 L_aes_gcm_aad_update_arm64_crypto_done - st1 {v20.2d}, [x2] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + st1 {V20.2D}, [x2] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -24735,55 +24735,55 @@ L_aes_gcm_aad_update_arm64_crypto_done ALIGN 4 EXPORT AES_GCM_encrypt_block_AARCH64 AES_GCM_encrypt_block_AARCH64 PROC - ld1 {v5.2d}, [x4] - ld1 {v4.2d}, [x3] - mov w5, v5.s[3] + ld1 {V5.2D}, [x4] + ld1 {V4.2D}, [x3] + mov w5, V5.S[3] rev w5, w5 add w5, w5, #1 rev w5, w5 - mov v5.s[3], w5 - st1 {v5.2d}, [x4] - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b - aesmc v5.16b, v5.16b - aese v5.16b, v2.16b - aesmc v5.16b, v5.16b - aese v5.16b, v3.16b - aesmc v5.16b, v5.16b - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b - aesmc v5.16b, v5.16b - aese v5.16b, v2.16b - aesmc v5.16b, v5.16b - aese v5.16b, v3.16b - aesmc v5.16b, v5.16b + mov V5.S[3], w5 + st1 {V5.2D}, [x4] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B + aesmc V5.16B, V5.16B + aese V5.16B, V2.16B + aesmc V5.16B, V5.16B + aese V5.16B, V3.16B + aesmc V5.16B, V5.16B + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B + aesmc V5.16B, V5.16B + aese V5.16B, V2.16B + aesmc V5.16B, V5.16B + aese V5.16B, V3.16B + aesmc V5.16B, V5.16B subs w1, w1, #10 - ld1 {v0.2d, v1.2d}, [x0], #32 - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b + ld1 {V0.2D, V1.2D}, [x0], #32 + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B beq L_aes_gcm_encrypt_block_arm64_crypto_round_done - ld1 {v0.2d, v1.2d}, [x0], #32 + ld1 {V0.2D, V1.2D}, [x0], #32 subs w1, w1, #2 - aesmc v5.16b, v5.16b - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b + aesmc V5.16B, V5.16B + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B beq L_aes_gcm_encrypt_block_arm64_crypto_round_done - ld1 {v0.2d, v1.2d}, [x0], #32 - aesmc v5.16b, v5.16b - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b + ld1 {V0.2D, V1.2D}, [x0], #32 + aesmc V5.16B, V5.16B + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B L_aes_gcm_encrypt_block_arm64_crypto_round_done - ld1 {v0.2d}, [x0] - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v5.16b - st1 {v4.2d}, [x2] + ld1 {V0.2D}, [x0] + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V5.16B + st1 {V4.2D}, [x2] ret ENDP AREA |.text|, CODE, READONLY @@ -24793,105 +24793,105 @@ AES_GCM_encrypt_update_AARCH64 PROC stp x29, x30, [sp, #-96]! add x29, sp, #0 str x17, [x29, #24] - stp d8, d9, [x29, #32] - stp d10, d11, [x29, #48] - stp d12, d13, [x29, #64] - stp d14, d15, [x29, #80] - ld1 {v13.2d}, [x7] - movi v27.16b, #0x87 - ld1 {v26.2d}, [x5] - ushr v27.2d, v27.2d, #56 - ld1 {v22.2d}, [x6] - mov w9, v13.s[3] + stp D8, D9, [x29, #32] + stp D10, D11, [x29, #48] + stp D12, D13, [x29, #64] + stp D14, D15, [x29, #80] + ld1 {V13.2D}, [x7] + movi V27.16B, #0x87 + ld1 {V26.2D}, [x5] + ushr V27.2D, V27.2D, #56 + ld1 {V22.2D}, [x6] + mov w9, V13.S[3] rev w9, w9 cmp w4, #32 blt L_aes_gcm_encrypt_update_arm64_crypto_h_done ; Square H => H^2 - pmull2 v31.1q, v22.2d, v22.2d - pmull v30.1q, v22.1d, v22.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v23.16b, v30.16b, v31.16b + pmull2 V31.1Q, V22.2D, V22.2D + pmull V30.1Q, V22.1D, V22.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V23.16B, V30.16B, V31.16B cmp w4, #0x40 blt L_aes_gcm_encrypt_update_arm64_crypto_h_done ; Multiply H and H^2 => H^3 - pmull v28.1q, v22.1d, v23.1d - pmull2 v29.1q, v22.2d, v23.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v23.1d - pmull2 v31.1q, v31.2d, v23.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V23.1D + pmull2 V29.1Q, V22.2D, V23.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V23.1D + pmull2 V31.1Q, V31.2D, V23.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v24.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V24.16B, V28.16B, V30.16B ; Square H^2 => H^4 - pmull2 v31.1q, v23.2d, v23.2d - pmull v30.1q, v23.1d, v23.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v25.16b, v30.16b, v31.16b + pmull2 V31.1Q, V23.2D, V23.2D + pmull V30.1Q, V23.1D, V23.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V25.16B, V30.16B, V31.16B ; Done cmp w4, #0x200 blt L_aes_gcm_encrypt_update_arm64_crypto_h_done ; Multiply H and H^4 => H^5 - pmull v28.1q, v22.1d, v25.1d - pmull2 v29.1q, v22.2d, v25.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v25.1d - pmull2 v31.1q, v31.2d, v25.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V25.1D + pmull2 V29.1Q, V22.2D, V25.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V25.1D + pmull2 V31.1Q, V31.2D, V25.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v4.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V4.16B, V28.16B, V30.16B ; Square H^3 => H^6 - pmull2 v31.1q, v24.2d, v24.2d - pmull v30.1q, v24.1d, v24.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v5.16b, v30.16b, v31.16b + pmull2 V31.1Q, V24.2D, V24.2D + pmull V30.1Q, V24.1D, V24.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V5.16B, V30.16B, V31.16B ; Multiply H and H^6 => H^7 - pmull v28.1q, v22.1d, v5.1d - pmull2 v29.1q, v22.2d, v5.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v5.1d - pmull2 v31.1q, v31.2d, v5.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V5.1D + pmull2 V29.1Q, V22.2D, V5.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V5.1D + pmull2 V31.1Q, V31.2D, V5.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v6.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V6.16B, V28.16B, V30.16B ; Square H^4 => H^8 - pmull2 v31.1q, v25.2d, v25.2d - pmull v30.1q, v25.1d, v25.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v7.16b, v30.16b, v31.16b + pmull2 V31.1Q, V25.2D, V25.2D + pmull V30.1Q, V25.1D, V25.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V7.16B, V30.16B, V31.16B ; Done L_aes_gcm_encrypt_update_arm64_crypto_h_done lsr w8, w4, #4 @@ -24903,23 +24903,23 @@ L_aes_gcm_encrypt_update_arm64_crypto_h_done cmp w8, #32 blt L_aes_gcm_encrypt_update_arm64_crypto_192_start_4 L_aes_gcm_encrypt_update_arm64_crypto_192_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 rev w16, w16 rev w15, w15 @@ -24928,1195 +24928,1195 @@ L_aes_gcm_encrypt_update_arm64_crypto_192_start_8 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v0.16b}, [x3], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v1.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v2.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v3.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x7] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V0.16B}, [x3], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V1.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V2.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V3.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x7] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_encrypt_update_arm64_crypto_192_end_8 L_aes_gcm_encrypt_update_arm64_crypto_192_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w16 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w15, w15 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w14, w14 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w13, w13 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w12, w12 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w11, w11 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v30.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - mov v28.d[1], v31.d[0] - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V30.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + mov V28.D[1], V31.D[0] + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_encrypt_update_arm64_crypto_192_both_8 L_aes_gcm_encrypt_update_arm64_crypto_192_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_192_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #0x40 - ld1 {v12.2d}, [x0] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x0], #0x40 + ld1 {V12.2D}, [x0] cmp w8, #1 blt L_aes_gcm_encrypt_update_arm64_crypto_192_done beq L_aes_gcm_encrypt_update_arm64_crypto_192_start_1 cmp w8, #4 blt L_aes_gcm_encrypt_update_arm64_crypto_192_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x3], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x3], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 blt L_aes_gcm_encrypt_update_arm64_crypto_192_end_4 L_aes_gcm_encrypt_update_arm64_crypto_192_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 rev w12, w12 rev w11, w11 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 bge L_aes_gcm_encrypt_update_arm64_crypto_192_both_4 L_aes_gcm_encrypt_update_arm64_crypto_192_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_encrypt_update_arm64_crypto_192_start_1 blt L_aes_gcm_encrypt_update_arm64_crypto_192_done L_aes_gcm_encrypt_update_arm64_crypto_192_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w13 + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_encrypt_update_arm64_crypto_192_done L_aes_gcm_encrypt_update_arm64_crypto_192_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_192_done ENDIF @@ -26127,23 +26127,23 @@ L_aes_gcm_encrypt_update_arm64_crypto_start_256 cmp w8, #32 blt L_aes_gcm_encrypt_update_arm64_crypto_256_start_4 L_aes_gcm_encrypt_update_arm64_crypto_256_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 rev w16, w16 rev w15, w15 @@ -26152,1312 +26152,1312 @@ L_aes_gcm_encrypt_update_arm64_crypto_256_start_8 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v0.16b}, [x3], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v1.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v2.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v3.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x7] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V0.16B}, [x3], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V1.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V2.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V3.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x7] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_encrypt_update_arm64_crypto_256_end_8 L_aes_gcm_encrypt_update_arm64_crypto_256_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w16 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w15, w15 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w14, w14 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w13, w13 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w12, w12 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w11, w11 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v30.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - mov v28.d[1], v31.d[0] - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V30.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + mov V28.D[1], V31.D[0] + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_encrypt_update_arm64_crypto_256_both_8 L_aes_gcm_encrypt_update_arm64_crypto_256_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_256_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #0x40 - ld1 {v12.2d}, [x0], #16 + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x0], #0x40 + ld1 {V12.2D}, [x0], #16 cmp w8, #1 blt L_aes_gcm_encrypt_update_arm64_crypto_256_done beq L_aes_gcm_encrypt_update_arm64_crypto_256_start_1 cmp w8, #4 blt L_aes_gcm_encrypt_update_arm64_crypto_256_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x3], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x3], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 blt L_aes_gcm_encrypt_update_arm64_crypto_256_end_4 L_aes_gcm_encrypt_update_arm64_crypto_256_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 rev w12, w12 rev w11, w11 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 bge L_aes_gcm_encrypt_update_arm64_crypto_256_both_4 L_aes_gcm_encrypt_update_arm64_crypto_256_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_encrypt_update_arm64_crypto_256_start_1 blt L_aes_gcm_encrypt_update_arm64_crypto_256_done L_aes_gcm_encrypt_update_arm64_crypto_256_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w13 + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_encrypt_update_arm64_crypto_256_done L_aes_gcm_encrypt_update_arm64_crypto_256_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x0, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x0, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_256_done ENDIF @@ -27468,23 +27468,23 @@ L_aes_gcm_encrypt_update_arm64_crypto_start_128 cmp w8, #32 blt L_aes_gcm_encrypt_update_arm64_crypto_128_start_4 L_aes_gcm_encrypt_update_arm64_crypto_128_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 rev w16, w16 rev w15, w15 @@ -27493,1096 +27493,1096 @@ L_aes_gcm_encrypt_update_arm64_crypto_128_start_8 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - ld1 {v0.16b}, [x3], #16 - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - ld1 {v1.16b}, [x3], #16 - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - ld1 {v2.16b}, [x3], #16 - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - ld1 {v3.16b}, [x3], #16 - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x7] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + ld1 {V0.16B}, [x3], #16 + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + ld1 {V1.16B}, [x3], #16 + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + ld1 {V2.16B}, [x3], #16 + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + ld1 {V3.16B}, [x3], #16 + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x7] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_encrypt_update_arm64_crypto_128_end_8 L_aes_gcm_encrypt_update_arm64_crypto_128_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w16 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w15, w15 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w14, w14 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w13, w13 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w12, w12 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w11, w11 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v30.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - mov v28.d[1], v31.d[0] - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V30.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + mov V28.D[1], V31.D[0] + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_encrypt_update_arm64_crypto_128_both_8 L_aes_gcm_encrypt_update_arm64_crypto_128_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_128_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d}, [x0], #32 - ld1 {v10.2d}, [x0] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D}, [x0], #32 + ld1 {V10.2D}, [x0] cmp w8, #1 blt L_aes_gcm_encrypt_update_arm64_crypto_128_done beq L_aes_gcm_encrypt_update_arm64_crypto_128_start_1 cmp w8, #4 blt L_aes_gcm_encrypt_update_arm64_crypto_128_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x3], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x3], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 blt L_aes_gcm_encrypt_update_arm64_crypto_128_end_4 L_aes_gcm_encrypt_update_arm64_crypto_128_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 rev w12, w12 rev w11, w11 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 bge L_aes_gcm_encrypt_update_arm64_crypto_128_both_4 L_aes_gcm_encrypt_update_arm64_crypto_128_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_encrypt_update_arm64_crypto_128_start_1 blt L_aes_gcm_encrypt_update_arm64_crypto_128_done L_aes_gcm_encrypt_update_arm64_crypto_128_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w13 + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_encrypt_update_arm64_crypto_128_done L_aes_gcm_encrypt_update_arm64_crypto_128_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v18.16b}, [x3], #16 - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V18.16B}, [x3], #16 + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_128_done ENDIF L_aes_gcm_encrypt_update_arm64_crypto_done rev w9, w9 - mov v13.s[3], w9 - st1 {v26.2d}, [x5] - st1 {v13.2d}, [x7] + mov V13.S[3], w9 + st1 {V26.2D}, [x5] + st1 {V13.2D}, [x7] ldr x17, [x29, #24] - ldp d8, d9, [x29, #32] - ldp d10, d11, [x29, #48] - ldp d12, d13, [x29, #64] - ldp d14, d15, [x29, #80] + ldp D8, D9, [x29, #32] + ldp D10, D11, [x29, #48] + ldp D12, D13, [x29, #64] + ldp D14, D15, [x29, #80] ldp x29, x30, [sp], #0x60 ret ENDP @@ -28590,40 +28590,40 @@ L_aes_gcm_encrypt_update_arm64_crypto_done ALIGN 4 EXPORT AES_GCM_encrypt_final_AARCH64 AES_GCM_encrypt_final_AARCH64 PROC - ld1 {v5.2d}, [x0] - movi v6.16b, #0x87 - ld1 {v4.2d}, [x5] - ushr v6.2d, v6.2d, #56 - ld1 {v7.2d}, [x6] + ld1 {V5.2D}, [x0] + movi V6.16B, #0x87 + ld1 {V4.2D}, [x5] + ushr V6.2D, V6.2D, #56 + ld1 {V7.2D}, [x6] ubfiz x4, x4, #3, #32 rbit x4, x4 - mov v0.d[0], x4 + mov V0.D[0], x4 ubfiz x3, x3, #3, #32 rbit x3, x3 - mov v0.d[1], x3 - eor v5.16b, v5.16b, v0.16b - pmull v0.1q, v5.1d, v4.1d - pmull2 v1.1q, v5.2d, v4.2d - ext v3.16b, v5.16b, v5.16b, #8 - pmull v2.1q, v3.1d, v4.1d - pmull2 v3.1q, v3.2d, v4.2d - eor v2.16b, v2.16b, v3.16b + mov V0.D[1], x3 + eor V5.16B, V5.16B, V0.16B + pmull V0.1Q, V5.1D, V4.1D + pmull2 V1.1Q, V5.2D, V4.2D + ext8 V3.16B, V5.16B, V5.16B, #8 + pmull V2.1Q, V3.1D, V4.1D + pmull2 V3.1Q, V3.2D, V4.2D + eor V2.16B, V2.16B, V3.16B ; Reduce - ext v3.16b, v0.16b, v1.16b, #8 - pmull2 v1.1q, v1.2d, v6.2d - eor v3.16b, v3.16b, v1.16b - eor v3.16b, v3.16b, v2.16b - pmull2 v2.1q, v3.2d, v6.2d - mov v0.d[1], v3.d[0] - eor v5.16b, v0.16b, v2.16b - rbit v5.16b, v5.16b - eor v5.16b, v5.16b, v7.16b + ext8 V3.16B, V0.16B, V1.16B, #8 + pmull2 V1.1Q, V1.2D, V6.2D + eor V3.16B, V3.16B, V1.16B + eor V3.16B, V3.16B, V2.16B + pmull2 V2.1Q, V3.2D, V6.2D + mov V0.D[1], V3.D[0] + eor V5.16B, V0.16B, V2.16B + rbit V5.16B, V5.16B + eor V5.16B, V5.16B, V7.16B cmp w2, #16 bne L_aes_gcm_encrypt_final_arm64_crypto_tag_partial - st1 {v5.16b}, [x1] + st1 {V5.16B}, [x1] b L_aes_gcm_encrypt_final_arm64_crypto_done L_aes_gcm_encrypt_final_arm64_crypto_tag_partial - st1 {v5.16b}, [x0] + st1 {V5.16B}, [x0] cmp w2, #8 blt L_aes_gcm_encrypt_final_arm64_crypto_tag_start_dw ldr x8, [x0], #8 @@ -28658,105 +28658,105 @@ AES_GCM_decrypt_update_AARCH64 PROC stp x29, x30, [sp, #-96]! add x29, sp, #0 str x17, [x29, #24] - stp d8, d9, [x29, #32] - stp d10, d11, [x29, #48] - stp d12, d13, [x29, #64] - stp d14, d15, [x29, #80] - ld1 {v13.2d}, [x7] - movi v27.16b, #0x87 - ld1 {v26.2d}, [x5] - ushr v27.2d, v27.2d, #56 - ld1 {v22.2d}, [x6] - mov w9, v13.s[3] + stp D8, D9, [x29, #32] + stp D10, D11, [x29, #48] + stp D12, D13, [x29, #64] + stp D14, D15, [x29, #80] + ld1 {V13.2D}, [x7] + movi V27.16B, #0x87 + ld1 {V26.2D}, [x5] + ushr V27.2D, V27.2D, #56 + ld1 {V22.2D}, [x6] + mov w9, V13.S[3] rev w9, w9 cmp w4, #32 blt L_aes_gcm_decrypt_update_arm64_crypto_h_done ; Square H => H^2 - pmull2 v31.1q, v22.2d, v22.2d - pmull v30.1q, v22.1d, v22.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v23.16b, v30.16b, v31.16b + pmull2 V31.1Q, V22.2D, V22.2D + pmull V30.1Q, V22.1D, V22.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V23.16B, V30.16B, V31.16B cmp w4, #0x40 blt L_aes_gcm_decrypt_update_arm64_crypto_h_done ; Multiply H and H^2 => H^3 - pmull v28.1q, v22.1d, v23.1d - pmull2 v29.1q, v22.2d, v23.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v23.1d - pmull2 v31.1q, v31.2d, v23.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V23.1D + pmull2 V29.1Q, V22.2D, V23.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V23.1D + pmull2 V31.1Q, V31.2D, V23.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v24.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V24.16B, V28.16B, V30.16B ; Square H^2 => H^4 - pmull2 v31.1q, v23.2d, v23.2d - pmull v30.1q, v23.1d, v23.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v25.16b, v30.16b, v31.16b + pmull2 V31.1Q, V23.2D, V23.2D + pmull V30.1Q, V23.1D, V23.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V25.16B, V30.16B, V31.16B ; Done cmp w4, #0x200 blt L_aes_gcm_decrypt_update_arm64_crypto_h_done ; Multiply H and H^4 => H^5 - pmull v28.1q, v22.1d, v25.1d - pmull2 v29.1q, v22.2d, v25.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v25.1d - pmull2 v31.1q, v31.2d, v25.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V25.1D + pmull2 V29.1Q, V22.2D, V25.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V25.1D + pmull2 V31.1Q, V31.2D, V25.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v4.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V4.16B, V28.16B, V30.16B ; Square H^3 => H^6 - pmull2 v31.1q, v24.2d, v24.2d - pmull v30.1q, v24.1d, v24.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v5.16b, v30.16b, v31.16b + pmull2 V31.1Q, V24.2D, V24.2D + pmull V30.1Q, V24.1D, V24.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V5.16B, V30.16B, V31.16B ; Multiply H and H^6 => H^7 - pmull v28.1q, v22.1d, v5.1d - pmull2 v29.1q, v22.2d, v5.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v5.1d - pmull2 v31.1q, v31.2d, v5.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V5.1D + pmull2 V29.1Q, V22.2D, V5.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V5.1D + pmull2 V31.1Q, V31.2D, V5.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v6.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V6.16B, V28.16B, V30.16B ; Square H^4 => H^8 - pmull2 v31.1q, v25.2d, v25.2d - pmull v30.1q, v25.1d, v25.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v7.16b, v30.16b, v31.16b + pmull2 V31.1Q, V25.2D, V25.2D + pmull V30.1Q, V25.1D, V25.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V7.16B, V30.16B, V31.16B ; Done L_aes_gcm_decrypt_update_arm64_crypto_h_done lsr w8, w4, #4 @@ -28768,1222 +28768,1222 @@ L_aes_gcm_decrypt_update_arm64_crypto_h_done cmp w8, #32 blt L_aes_gcm_decrypt_update_arm64_crypto_192_start_4 L_aes_gcm_decrypt_update_arm64_crypto_192_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 - mov v14.s[3], w17 + mov V14.S[3], w17 rev w16, w16 - mov v15.s[3], w16 + mov V15.S[3], w16 rev w15, w15 - mov v16.s[3], w15 + mov V16.S[3], w15 rev w14, w14 - mov v17.s[3], w14 + mov V17.S[3], w14 rev w13, w13 - mov v8.s[3], w13 + mov V8.S[3], w13 rev w12, w12 - mov v9.s[3], w12 + mov V9.S[3], w12 rev w11, w11 - mov v10.s[3], w11 + mov V10.S[3], w11 rev w10, w9 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x7] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x7] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_decrypt_update_arm64_crypto_192_end_8 L_aes_gcm_decrypt_update_arm64_crypto_192_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b - mov v14.s[3], w17 + rbit V19.16B, V19.16B + mov V14.S[3], w17 rev w16, w16 - rbit v20.16b, v20.16b - mov v15.s[3], w16 + rbit V20.16B, V20.16B + mov V15.S[3], w16 rev w15, w15 - rbit v21.16b, v21.16b - mov v16.s[3], w15 + rbit V21.16B, V21.16B + mov V16.S[3], w15 rev w14, w14 - rbit v0.16b, v0.16b - mov v17.s[3], w14 + rbit V0.16B, V0.16B + mov V17.S[3], w14 rev w13, w13 - rbit v1.16b, v1.16b - mov v8.s[3], w13 + rbit V1.16B, V1.16B + mov V8.S[3], w13 rev w12, w12 - rbit v2.16b, v2.16b - mov v9.s[3], w12 + rbit V2.16B, V2.16B + mov V9.S[3], w12 rev w11, w11 - rbit v3.16b, v3.16b - mov v10.s[3], w11 + rbit V3.16B, V3.16B + mov V10.S[3], w11 rev w10, w9 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v31.16b, v31.16b, v29.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V31.16B, V31.16B, V29.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_decrypt_update_arm64_crypto_192_both_8 L_aes_gcm_decrypt_update_arm64_crypto_192_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_192_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #0x40 - ld1 {v12.2d}, [x0] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x0], #0x40 + ld1 {V12.2D}, [x0] cmp w8, #1 blt L_aes_gcm_decrypt_update_arm64_crypto_192_done beq L_aes_gcm_decrypt_update_arm64_crypto_192_start_1 cmp w8, #4 blt L_aes_gcm_decrypt_update_arm64_crypto_192_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w12, w12 - mov v15.s[3], w12 + mov V15.S[3], w12 rev w11, w11 - mov v16.s[3], w11 + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x3], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x3], #16 - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x3], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x3], #16 + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 blt L_aes_gcm_decrypt_update_arm64_crypto_192_end_4 L_aes_gcm_decrypt_update_arm64_crypto_192_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 - rbit v19.16b, v19.16b - mov v14.s[3], w13 + rbit V19.16B, V19.16B + mov V14.S[3], w13 rev w12, w12 - rbit v20.16b, v20.16b - mov v15.s[3], w12 + rbit V20.16B, V20.16B + mov V15.S[3], w12 rev w11, w11 - rbit v21.16b, v21.16b - mov v16.s[3], w11 + rbit V21.16B, V21.16B + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v29.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - eor v31.16b, v31.16b, v30.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V29.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + eor V31.16B, V31.16B, V30.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - eor v26.16b, v28.16b, v30.16b + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 bge L_aes_gcm_decrypt_update_arm64_crypto_192_both_4 L_aes_gcm_decrypt_update_arm64_crypto_192_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_decrypt_update_arm64_crypto_192_start_1 blt L_aes_gcm_decrypt_update_arm64_crypto_192_done L_aes_gcm_decrypt_update_arm64_crypto_192_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w10, w9 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_decrypt_update_arm64_crypto_192_done L_aes_gcm_decrypt_update_arm64_crypto_192_start_1 - ld1 {v15.16b}, [x3], #16 + ld1 {V15.16B}, [x3], #16 add w9, w9, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v29.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V29.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.16b}, [x2], #16 + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.16B}, [x2], #16 L_aes_gcm_decrypt_update_arm64_crypto_192_done ENDIF b L_aes_gcm_decrypt_update_arm64_crypto_done @@ -29993,1337 +29993,1337 @@ L_aes_gcm_decrypt_update_arm64_crypto_start_256 cmp w8, #32 blt L_aes_gcm_decrypt_update_arm64_crypto_256_start_4 L_aes_gcm_decrypt_update_arm64_crypto_256_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 - mov v14.s[3], w17 + mov V14.S[3], w17 rev w16, w16 - mov v15.s[3], w16 + mov V15.S[3], w16 rev w15, w15 - mov v16.s[3], w15 + mov V16.S[3], w15 rev w14, w14 - mov v17.s[3], w14 + mov V17.S[3], w14 rev w13, w13 - mov v8.s[3], w13 + mov V8.S[3], w13 rev w12, w12 - mov v9.s[3], w12 + mov V9.S[3], w12 rev w11, w11 - mov v10.s[3], w11 + mov V10.S[3], w11 rev w10, w9 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x7] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x7] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_decrypt_update_arm64_crypto_256_end_8 L_aes_gcm_decrypt_update_arm64_crypto_256_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b - mov v14.s[3], w17 + rbit V19.16B, V19.16B + mov V14.S[3], w17 rev w16, w16 - rbit v20.16b, v20.16b - mov v15.s[3], w16 + rbit V20.16B, V20.16B + mov V15.S[3], w16 rev w15, w15 - rbit v21.16b, v21.16b - mov v16.s[3], w15 + rbit V21.16B, V21.16B + mov V16.S[3], w15 rev w14, w14 - rbit v0.16b, v0.16b - mov v17.s[3], w14 + rbit V0.16B, V0.16B + mov V17.S[3], w14 rev w13, w13 - rbit v1.16b, v1.16b - mov v8.s[3], w13 + rbit V1.16B, V1.16B + mov V8.S[3], w13 rev w12, w12 - rbit v2.16b, v2.16b - mov v9.s[3], w12 + rbit V2.16B, V2.16B + mov V9.S[3], w12 rev w11, w11 - rbit v3.16b, v3.16b - mov v10.s[3], w11 + rbit V3.16B, V3.16B + mov V10.S[3], w11 rev w10, w9 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v31.16b, v31.16b, v29.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V31.16B, V31.16B, V29.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_decrypt_update_arm64_crypto_256_both_8 L_aes_gcm_decrypt_update_arm64_crypto_256_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_256_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #0x40 - ld1 {v12.2d}, [x0], #16 + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x0], #0x40 + ld1 {V12.2D}, [x0], #16 cmp w8, #1 blt L_aes_gcm_decrypt_update_arm64_crypto_256_done beq L_aes_gcm_decrypt_update_arm64_crypto_256_start_1 cmp w8, #4 blt L_aes_gcm_decrypt_update_arm64_crypto_256_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w12, w12 - mov v15.s[3], w12 + mov V15.S[3], w12 rev w11, w11 - mov v16.s[3], w11 + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x3], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x3], #16 - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x3], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x3], #16 + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 blt L_aes_gcm_decrypt_update_arm64_crypto_256_end_4 L_aes_gcm_decrypt_update_arm64_crypto_256_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 - rbit v19.16b, v19.16b - mov v14.s[3], w13 + rbit V19.16B, V19.16B + mov V14.S[3], w13 rev w12, w12 - rbit v20.16b, v20.16b - mov v15.s[3], w12 + rbit V20.16B, V20.16B + mov V15.S[3], w12 rev w11, w11 - rbit v21.16b, v21.16b - mov v16.s[3], w11 + rbit V21.16B, V21.16B + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v29.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - eor v31.16b, v31.16b, v30.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V29.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + eor V31.16B, V31.16B, V30.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - eor v26.16b, v28.16b, v30.16b + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 bge L_aes_gcm_decrypt_update_arm64_crypto_256_both_4 L_aes_gcm_decrypt_update_arm64_crypto_256_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_decrypt_update_arm64_crypto_256_start_1 blt L_aes_gcm_decrypt_update_arm64_crypto_256_done L_aes_gcm_decrypt_update_arm64_crypto_256_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w10, w9 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_decrypt_update_arm64_crypto_256_done L_aes_gcm_decrypt_update_arm64_crypto_256_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x0, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - st1 {v14.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x0, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + st1 {V14.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_256_done ENDIF @@ -31334,1121 +31334,1121 @@ L_aes_gcm_decrypt_update_arm64_crypto_start_128 cmp w8, #32 blt L_aes_gcm_decrypt_update_arm64_crypto_128_start_4 L_aes_gcm_decrypt_update_arm64_crypto_128_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 - mov v14.s[3], w17 + mov V14.S[3], w17 rev w16, w16 - mov v15.s[3], w16 + mov V15.S[3], w16 rev w15, w15 - mov v16.s[3], w15 + mov V16.S[3], w15 rev w14, w14 - mov v17.s[3], w14 + mov V17.S[3], w14 rev w13, w13 - mov v8.s[3], w13 + mov V8.S[3], w13 rev w12, w12 - mov v9.s[3], w12 + mov V9.S[3], w12 rev w11, w11 - mov v10.s[3], w11 + mov V10.S[3], w11 rev w10, w9 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x7] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x7] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_decrypt_update_arm64_crypto_128_end_8 L_aes_gcm_decrypt_update_arm64_crypto_128_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b - mov v14.s[3], w17 + rbit V19.16B, V19.16B + mov V14.S[3], w17 rev w16, w16 - rbit v20.16b, v20.16b - mov v15.s[3], w16 + rbit V20.16B, V20.16B + mov V15.S[3], w16 rev w15, w15 - rbit v21.16b, v21.16b - mov v16.s[3], w15 + rbit V21.16B, V21.16B + mov V16.S[3], w15 rev w14, w14 - rbit v0.16b, v0.16b - mov v17.s[3], w14 + rbit V0.16B, V0.16B + mov V17.S[3], w14 rev w13, w13 - rbit v1.16b, v1.16b - mov v8.s[3], w13 + rbit V1.16B, V1.16B + mov V8.S[3], w13 rev w12, w12 - rbit v2.16b, v2.16b - mov v9.s[3], w12 + rbit V2.16B, V2.16B + mov V9.S[3], w12 rev w11, w11 - rbit v3.16b, v3.16b - mov v10.s[3], w11 + rbit V3.16B, V3.16B + mov V10.S[3], w11 rev w10, w9 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v26.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v30.16b, v30.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V26.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V30.16B, V30.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v26.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V26.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v26.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v30.16b, v30.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V26.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V30.16B, V30.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v26.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v30.16b, v30.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V26.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V30.16B, V30.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v26.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V26.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v31.16b, v31.16b, v29.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V31.16B, V31.16B, V29.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v31.16b, v31.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V31.16B, V31.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_decrypt_update_arm64_crypto_128_both_8 L_aes_gcm_decrypt_update_arm64_crypto_128_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_128_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d}, [x0], #32 - ld1 {v10.2d}, [x0] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D}, [x0], #32 + ld1 {V10.2D}, [x0] cmp w8, #1 blt L_aes_gcm_decrypt_update_arm64_crypto_128_done beq L_aes_gcm_decrypt_update_arm64_crypto_128_start_1 cmp w8, #4 blt L_aes_gcm_decrypt_update_arm64_crypto_128_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w12, w12 - mov v15.s[3], w12 + mov V15.S[3], w12 rev w11, w11 - mov v16.s[3], w11 + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x3], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x3], #16 - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x3], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x3], #16 + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 blt L_aes_gcm_decrypt_update_arm64_crypto_128_end_4 L_aes_gcm_decrypt_update_arm64_crypto_128_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 - rbit v19.16b, v19.16b - mov v14.s[3], w13 + rbit V19.16B, V19.16B + mov V14.S[3], w13 rev w12, w12 - rbit v20.16b, v20.16b - mov v15.s[3], w12 + rbit V20.16B, V20.16B + mov V15.S[3], w12 rev w11, w11 - rbit v21.16b, v21.16b - mov v16.s[3], w11 + rbit V21.16B, V21.16B + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor v26.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v26.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor V26.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V26.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor v26.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v26.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor V26.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V26.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor v31.16b, v31.16b, v29.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - eor v31.16b, v31.16b, v30.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor V31.16B, V31.16B, V29.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + eor V31.16B, V31.16B, V30.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - eor v26.16b, v28.16b, v30.16b + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + eor V26.16B, V28.16B, V30.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 bge L_aes_gcm_decrypt_update_arm64_crypto_128_both_4 L_aes_gcm_decrypt_update_arm64_crypto_128_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_decrypt_update_arm64_crypto_128_start_1 blt L_aes_gcm_decrypt_update_arm64_crypto_128_done L_aes_gcm_decrypt_update_arm64_crypto_128_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w10, w9 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor v26.16b, v26.16b, v31.16b - eor v30.16b, v30.16b, v26.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor V26.16B, V26.16B, V31.16B + eor V30.16B, V30.16B, V26.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_decrypt_update_arm64_crypto_128_done L_aes_gcm_decrypt_update_arm64_crypto_128_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v18.16b}, [x3], #16 - eor v14.16b, v14.16b, v18.16b - st1 {v14.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V18.16B}, [x3], #16 + eor V14.16B, V14.16B, V18.16B + st1 {V14.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor v31.16b, v31.16b, v29.16b - eor v31.16b, v31.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor V31.16B, V31.16B, V29.16B + eor V31.16B, V31.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_128_done ENDIF L_aes_gcm_decrypt_update_arm64_crypto_done rev w9, w9 - mov v13.s[3], w9 - st1 {v26.2d}, [x5] - st1 {v13.2d}, [x7] + mov V13.S[3], w9 + st1 {V26.2D}, [x5] + st1 {V13.2D}, [x7] ldr x17, [x29, #24] - ldp d8, d9, [x29, #32] - ldp d10, d11, [x29, #48] - ldp d12, d13, [x29, #64] - ldp d14, d15, [x29, #80] + ldp D8, D9, [x29, #32] + ldp D10, D11, [x29, #48] + ldp D12, D13, [x29, #64] + ldp D14, D15, [x29, #80] ldp x29, x30, [sp], #0x60 ret ENDP @@ -32456,43 +32456,43 @@ L_aes_gcm_decrypt_update_arm64_crypto_done ALIGN 4 EXPORT AES_GCM_decrypt_final_AARCH64 AES_GCM_decrypt_final_AARCH64 PROC - ld1 {v5.2d}, [x0] - movi v6.16b, #0x87 - ld1 {v4.2d}, [x5] - ushr v6.2d, v6.2d, #56 - ld1 {v7.2d}, [x6] + ld1 {V5.2D}, [x0] + movi V6.16B, #0x87 + ld1 {V4.2D}, [x5] + ushr V6.2D, V6.2D, #56 + ld1 {V7.2D}, [x6] ubfiz x4, x4, #3, #32 rbit x4, x4 - mov v0.d[0], x4 + mov V0.D[0], x4 ubfiz x3, x3, #3, #32 rbit x3, x3 - mov v0.d[1], x3 - eor v5.16b, v5.16b, v0.16b - pmull v0.1q, v5.1d, v4.1d - pmull2 v1.1q, v5.2d, v4.2d - ext v3.16b, v5.16b, v5.16b, #8 - pmull v2.1q, v3.1d, v4.1d - pmull2 v3.1q, v3.2d, v4.2d - eor v2.16b, v2.16b, v3.16b + mov V0.D[1], x3 + eor V5.16B, V5.16B, V0.16B + pmull V0.1Q, V5.1D, V4.1D + pmull2 V1.1Q, V5.2D, V4.2D + ext8 V3.16B, V5.16B, V5.16B, #8 + pmull V2.1Q, V3.1D, V4.1D + pmull2 V3.1Q, V3.2D, V4.2D + eor V2.16B, V2.16B, V3.16B ; Reduce - ext v3.16b, v0.16b, v1.16b, #8 - pmull2 v1.1q, v1.2d, v6.2d - eor v3.16b, v3.16b, v1.16b - eor v3.16b, v3.16b, v2.16b - pmull2 v2.1q, v3.2d, v6.2d - mov v0.d[1], v3.d[0] - eor v5.16b, v0.16b, v2.16b - rbit v5.16b, v5.16b - eor v5.16b, v5.16b, v7.16b + ext8 V3.16B, V0.16B, V1.16B, #8 + pmull2 V1.1Q, V1.2D, V6.2D + eor V3.16B, V3.16B, V1.16B + eor V3.16B, V3.16B, V2.16B + pmull2 V2.1Q, V3.2D, V6.2D + mov V0.D[1], V3.D[0] + eor V5.16B, V0.16B, V2.16B + rbit V5.16B, V5.16B + eor V5.16B, V5.16B, V7.16B cmp w2, #16 blt L_aes_gcm_decrypt_final_arm64_crypto_part_tag - ld1 {v0.16b}, [x1] + ld1 {V0.16B}, [x1] b L_aes_gcm_decrypt_final_arm64_crypto_tag_loaded L_aes_gcm_decrypt_final_arm64_crypto_part_tag ubfiz x2, x2, #0, #32 - eor v0.16b, v0.16b, v0.16b + eor V0.16B, V0.16B, V0.16B mov x10, x2 - st1 {v0.2d}, [x0] + st1 {V0.2D}, [x0] cmp x10, #8 blt L_aes_gcm_decrypt_final_arm64_crypto_tag_start_dw ldr x9, [x1], #8 @@ -32518,9 +32518,9 @@ L_aes_gcm_decrypt_final_arm64_crypto_tag_start_byte bne L_aes_gcm_decrypt_final_arm64_crypto_tag_start_byte L_aes_gcm_decrypt_final_arm64_crypto_tag_end_bytes sub x0, x0, x2 - ld1 {v0.2d}, [x0] + ld1 {V0.2D}, [x0] mov x10, #16 - st1 {v5.2d}, [x0] + st1 {V5.2D}, [x0] sub x10, x10, x2 add x0, x0, x2 L_aes_gcm_decrypt_final_arm64_crypto_calc_tag_byte @@ -32528,11 +32528,11 @@ L_aes_gcm_decrypt_final_arm64_crypto_calc_tag_byte subs x10, x10, #1 bne L_aes_gcm_decrypt_final_arm64_crypto_calc_tag_byte subs x0, x0, #16 - ld1 {v5.2d}, [x0] + ld1 {V5.2D}, [x0] L_aes_gcm_decrypt_final_arm64_crypto_tag_loaded - eor v0.16b, v0.16b, v5.16b - mov x9, v0.d[0] - mov x10, v0.d[1] + eor V0.16B, V0.16B, V5.16B + mov x9, V0.D[0] + mov x10, V0.D[1] mov w11, #-180 orr x9, x9, x10 cmp x9, #0 @@ -32549,52 +32549,52 @@ L_aes_gcm_decrypt_final_arm64_crypto_tag_loaded AES_GCM_init_AARCH64_EOR3 PROC stp x29, x30, [sp, #-48]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - movi v6.16b, #0x87 - ld1 {v5.2d}, [x4] - ushr v6.2d, v6.2d, #56 + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + movi V6.16B, #0x87 + ld1 {V5.2D}, [x4] + ushr V6.2D, V6.2D, #56 ; Load Nonce cmp w3, #12 bne L_aes_gcm_init_arm64_crypto_eor3_ghash_nonce ldr x9, [x2] - movi v4.4s, #1, lsl 24 + movi V4.4S, #1, lsl 24 ldr w10, [x2, #8] - mov v4.d[0], x9 - mov v4.s[2], w10 + mov V4.D[0], x9 + mov V4.S[2], w10 mov w8, #1 b L_aes_gcm_init_arm64_crypto_eor3_done_nonce L_aes_gcm_init_arm64_crypto_eor3_ghash_nonce - eor v4.16b, v4.16b, v4.16b + eor V4.16B, V4.16B, V4.16B lsr w7, w3, #4 cbz w7, L_aes_gcm_init_arm64_crypto_eor3_done L_aes_gcm_init_arm64_crypto_eor3_start_1 - ld1 {v0.16b}, [x2], #16 - rbit v0.16b, v0.16b - eor v3.16b, v4.16b, v0.16b + ld1 {V0.16B}, [x2], #16 + rbit V0.16B, V0.16B + eor V3.16B, V4.16B, V0.16B ; X = C * H^1 - pmull v7.1q, v3.1d, v5.1d - pmull2 v8.1q, v3.2d, v5.2d - ext v10.16b, v3.16b, v3.16b, #8 - pmull v9.1q, v10.1d, v5.1d - pmull2 v10.1q, v10.2d, v5.2d - eor v9.16b, v9.16b, v10.16b + pmull V7.1Q, V3.1D, V5.1D + pmull2 V8.1Q, V3.2D, V5.2D + ext8 V10.16B, V3.16B, V3.16B, #8 + pmull V9.1Q, V10.1D, V5.1D + pmull2 V10.1Q, V10.2D, V5.2D + eor V9.16B, V9.16B, V10.16B ; Reduce - ext v10.16b, v7.16b, v8.16b, #8 - pmull2 v8.1q, v8.2d, v6.2d - eor3 v10.16b, v10.16b, v8.16b, v9.16b - pmull2 v9.1q, v10.2d, v6.2d - mov v7.d[1], v10.d[0] - eor v4.16b, v7.16b, v9.16b + ext8 V10.16B, V7.16B, V8.16B, #8 + pmull2 V8.1Q, V8.2D, V6.2D + eor3 V10.16B, V10.16B, V8.16B, V9.16B + pmull2 V9.1Q, V10.2D, V6.2D + mov V7.D[1], V10.D[0] + eor V4.16B, V7.16B, V9.16B ; Done GHASH subs w7, w7, #1 bne L_aes_gcm_init_arm64_crypto_eor3_start_1 L_aes_gcm_init_arm64_crypto_eor3_done and w13, w3, #15 cbz x13, L_aes_gcm_init_arm64_crypto_eor3_partial_done - eor v7.16b, v7.16b, v7.16b + eor V7.16B, V7.16B, V7.16B mov w12, w13 - st1 {v7.2d}, [x6] + st1 {V7.2D}, [x6] cmp w12, #8 blt L_aes_gcm_init_arm64_crypto_eor3_start_dw ldr x11, [x2], #8 @@ -32620,91 +32620,91 @@ L_aes_gcm_init_arm64_crypto_eor3_start_byte bne L_aes_gcm_init_arm64_crypto_eor3_start_byte L_aes_gcm_init_arm64_crypto_eor3_end_bytes sub x6, x6, x13 - ld1 {v0.2d}, [x6] - rbit v0.16b, v0.16b - eor v3.16b, v4.16b, v0.16b + ld1 {V0.2D}, [x6] + rbit V0.16B, V0.16B + eor V3.16B, V4.16B, V0.16B ; X = C * H^1 - pmull v7.1q, v3.1d, v5.1d - pmull2 v8.1q, v3.2d, v5.2d - ext v10.16b, v3.16b, v3.16b, #8 - pmull v9.1q, v10.1d, v5.1d - pmull2 v10.1q, v10.2d, v5.2d - eor v9.16b, v9.16b, v10.16b + pmull V7.1Q, V3.1D, V5.1D + pmull2 V8.1Q, V3.2D, V5.2D + ext8 V10.16B, V3.16B, V3.16B, #8 + pmull V9.1Q, V10.1D, V5.1D + pmull2 V10.1Q, V10.2D, V5.2D + eor V9.16B, V9.16B, V10.16B ; Reduce - ext v10.16b, v7.16b, v8.16b, #8 - pmull2 v8.1q, v8.2d, v6.2d - eor3 v10.16b, v10.16b, v8.16b, v9.16b - pmull2 v9.1q, v10.2d, v6.2d - mov v7.d[1], v10.d[0] - eor v4.16b, v7.16b, v9.16b + ext8 V10.16B, V7.16B, V8.16B, #8 + pmull2 V8.1Q, V8.2D, V6.2D + eor3 V10.16B, V10.16B, V8.16B, V9.16B + pmull2 V9.1Q, V10.2D, V6.2D + mov V7.D[1], V10.D[0] + eor V4.16B, V7.16B, V9.16B ; Done GHASH L_aes_gcm_init_arm64_crypto_eor3_partial_done eor x7, x7, x7 ubfiz x13, x3, #3, #32 - mov v7.d[0], x7 - mov v7.d[1], x13 - rev64 v7.16b, v7.16b - rbit v7.16b, v7.16b - eor v4.16b, v4.16b, v7.16b - pmull v7.1q, v4.1d, v5.1d - pmull2 v8.1q, v4.2d, v5.2d - ext v10.16b, v4.16b, v4.16b, #8 - pmull v9.1q, v10.1d, v5.1d - pmull2 v10.1q, v10.2d, v5.2d - eor v9.16b, v9.16b, v10.16b - ext v10.16b, v7.16b, v8.16b, #8 - pmull2 v8.1q, v8.2d, v6.2d - eor3 v10.16b, v10.16b, v8.16b, v9.16b - pmull2 v9.1q, v10.2d, v6.2d - mov v7.d[1], v10.d[0] - eor v4.16b, v7.16b, v9.16b - rbit v4.16b, v4.16b - mov w8, v4.s[3] + mov V7.D[0], x7 + mov V7.D[1], x13 + rev64 V7.16B, V7.16B + rbit V7.16B, V7.16B + eor V4.16B, V4.16B, V7.16B + pmull V7.1Q, V4.1D, V5.1D + pmull2 V8.1Q, V4.2D, V5.2D + ext8 V10.16B, V4.16B, V4.16B, #8 + pmull V9.1Q, V10.1D, V5.1D + pmull2 V10.1Q, V10.2D, V5.2D + eor V9.16B, V9.16B, V10.16B + ext8 V10.16B, V7.16B, V8.16B, #8 + pmull2 V8.1Q, V8.2D, V6.2D + eor3 V10.16B, V10.16B, V8.16B, V9.16B + pmull2 V9.1Q, V10.2D, V6.2D + mov V7.D[1], V10.D[0] + eor V4.16B, V7.16B, V9.16B + rbit V4.16B, V4.16B + mov w8, V4.S[3] rev w8, w8 L_aes_gcm_init_arm64_crypto_eor3_done_nonce - st1 {v4.2d}, [x5] - ld1 {v7.2d, v8.2d, v9.2d, v10.2d}, [x0], #0x40 - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b - aesmc v4.16b, v4.16b - aese v4.16b, v9.16b - aesmc v4.16b, v4.16b - aese v4.16b, v10.16b - aesmc v4.16b, v4.16b - ld1 {v7.2d, v8.2d, v9.2d, v10.2d}, [x0], #0x40 - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b - aesmc v4.16b, v4.16b - aese v4.16b, v9.16b - aesmc v4.16b, v4.16b - aese v4.16b, v10.16b - aesmc v4.16b, v4.16b + st1 {V4.2D}, [x5] + ld1 {V7.2D, V8.2D, V9.2D, V10.2D}, [x0], #0x40 + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B + aesmc V4.16B, V4.16B + aese V4.16B, V9.16B + aesmc V4.16B, V4.16B + aese V4.16B, V10.16B + aesmc V4.16B, V4.16B + ld1 {V7.2D, V8.2D, V9.2D, V10.2D}, [x0], #0x40 + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B + aesmc V4.16B, V4.16B + aese V4.16B, V9.16B + aesmc V4.16B, V4.16B + aese V4.16B, V10.16B + aesmc V4.16B, V4.16B subs w1, w1, #10 - ld1 {v7.2d, v8.2d}, [x0], #32 - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b + ld1 {V7.2D, V8.2D}, [x0], #32 + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B beq L_aes_gcm_init_arm64_crypto_eor3_round_done - ld1 {v7.2d, v8.2d}, [x0], #32 + ld1 {V7.2D, V8.2D}, [x0], #32 subs w1, w1, #2 - aesmc v4.16b, v4.16b - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b + aesmc V4.16B, V4.16B + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B beq L_aes_gcm_init_arm64_crypto_eor3_round_done - ld1 {v7.2d, v8.2d}, [x0], #32 - aesmc v4.16b, v4.16b - aese v4.16b, v7.16b - aesmc v4.16b, v4.16b - aese v4.16b, v8.16b + ld1 {V7.2D, V8.2D}, [x0], #32 + aesmc V4.16B, V4.16B + aese V4.16B, V7.16B + aesmc V4.16B, V4.16B + aese V4.16B, V8.16B L_aes_gcm_init_arm64_crypto_eor3_round_done - ld1 {v7.2d}, [x0] - eor v4.16b, v4.16b, v7.16b - st1 {v4.2d}, [x6] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] + ld1 {V7.2D}, [x0] + eor V4.16B, V4.16B, V7.16B + st1 {V4.2D}, [x6] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] ldp x29, x30, [sp], #48 ret ENDP @@ -32714,31 +32714,31 @@ L_aes_gcm_init_arm64_crypto_eor3_round_done AES_GCM_ghash_block_AARCH64_EOR3 PROC stp x29, x30, [sp, #-32]! add x29, sp, #0 - stp d8, d9, [x29, #16] - ld1 {v6.2d}, [x1] - movi v7.16b, #0x87 - ld1 {v5.2d}, [x2] - ushr v7.2d, v7.2d, #56 - ld1 {v4.2d}, [x0] - rbit v4.16b, v4.16b - eor v8.16b, v6.16b, v4.16b + stp D8, D9, [x29, #16] + ld1 {V6.2D}, [x1] + movi V7.16B, #0x87 + ld1 {V5.2D}, [x2] + ushr V7.2D, V7.2D, #56 + ld1 {V4.2D}, [x0] + rbit V4.16B, V4.16B + eor V8.16B, V6.16B, V4.16B ; X = C * H^1 - pmull v0.1q, v8.1d, v5.1d - pmull2 v1.1q, v8.2d, v5.2d - ext v3.16b, v8.16b, v8.16b, #8 - pmull v2.1q, v3.1d, v5.1d - pmull2 v3.1q, v3.2d, v5.2d - eor v2.16b, v2.16b, v3.16b + pmull V0.1Q, V8.1D, V5.1D + pmull2 V1.1Q, V8.2D, V5.2D + ext8 V3.16B, V8.16B, V8.16B, #8 + pmull V2.1Q, V3.1D, V5.1D + pmull2 V3.1Q, V3.2D, V5.2D + eor V2.16B, V2.16B, V3.16B ; Reduce - ext v3.16b, v0.16b, v1.16b, #8 - pmull2 v1.1q, v1.2d, v7.2d - eor3 v3.16b, v3.16b, v1.16b, v2.16b - pmull2 v2.1q, v3.2d, v7.2d - mov v0.d[1], v3.d[0] - eor v6.16b, v0.16b, v2.16b + ext8 V3.16B, V0.16B, V1.16B, #8 + pmull2 V1.1Q, V1.2D, V7.2D + eor3 V3.16B, V3.16B, V1.16B, V2.16B + pmull2 V2.1Q, V3.2D, V7.2D + mov V0.D[1], V3.D[0] + eor V6.16B, V0.16B, V2.16B ; Done GHASH - st1 {v6.2d}, [x1] - ldp d8, d9, [x29, #16] + st1 {V6.2D}, [x1] + ldp D8, D9, [x29, #16] ldp x29, x30, [sp], #32 ret ENDP @@ -32748,99 +32748,99 @@ AES_GCM_ghash_block_AARCH64_EOR3 PROC AES_GCM_aad_update_AARCH64_EOR3 PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] - ld1 {v20.2d}, [x2] - movi v21.16b, #0x87 - ld1 {v12.2d}, [x3] - ushr v21.2d, v21.2d, #56 + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] + ld1 {V20.2D}, [x2] + movi V21.16B, #0x87 + ld1 {V12.2D}, [x3] + ushr V21.2D, V21.2D, #56 cmp x1, #0x40 blt L_aes_gcm_aad_update_arm64_crypto_eor3_h_done ; Square H => H^2 - pmull2 v11.1q, v12.2d, v12.2d - pmull v10.1q, v12.1d, v12.1d - pmull2 v8.1q, v11.2d, v21.2d - ext v9.16b, v10.16b, v11.16b, #8 - eor v9.16b, v9.16b, v8.16b - pmull2 v11.1q, v9.2d, v21.2d - mov v10.d[1], v9.d[0] - eor v13.16b, v10.16b, v11.16b + pmull2 V11.1Q, V12.2D, V12.2D + pmull V10.1Q, V12.1D, V12.1D + pmull2 V8.1Q, V11.2D, V21.2D + ext8 V9.16B, V10.16B, V11.16B, #8 + eor V9.16B, V9.16B, V8.16B + pmull2 V11.1Q, V9.2D, V21.2D + mov V10.D[1], V9.D[0] + eor V13.16B, V10.16B, V11.16B cmp x1, #0x100 blt L_aes_gcm_aad_update_arm64_crypto_eor3_h_done ; Multiply H and H^2 => H^3 - pmull v8.1q, v12.1d, v13.1d - pmull2 v9.1q, v12.2d, v13.2d - ext v11.16b, v12.16b, v12.16b, #8 - pmull v10.1q, v11.1d, v13.1d - pmull2 v11.1q, v11.2d, v13.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V12.1D, V13.1D + pmull2 V9.1Q, V12.2D, V13.2D + ext8 V11.16B, V12.16B, V12.16B, #8 + pmull V10.1Q, V11.1D, V13.1D + pmull2 V11.1Q, V11.2D, V13.2D + eor V10.16B, V10.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor3 v11.16b, v11.16b, v9.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v14.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor3 V11.16B, V11.16B, V9.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V14.16B, V8.16B, V10.16B ; Square H^2 => H^4 - pmull2 v11.1q, v13.2d, v13.2d - pmull v10.1q, v13.1d, v13.1d - pmull2 v8.1q, v11.2d, v21.2d - ext v9.16b, v10.16b, v11.16b, #8 - eor v9.16b, v9.16b, v8.16b - pmull2 v11.1q, v9.2d, v21.2d - mov v10.d[1], v9.d[0] - eor v15.16b, v10.16b, v11.16b + pmull2 V11.1Q, V13.2D, V13.2D + pmull V10.1Q, V13.1D, V13.1D + pmull2 V8.1Q, V11.2D, V21.2D + ext8 V9.16B, V10.16B, V11.16B, #8 + eor V9.16B, V9.16B, V8.16B + pmull2 V11.1Q, V9.2D, V21.2D + mov V10.D[1], V9.D[0] + eor V15.16B, V10.16B, V11.16B ; Done cmp x1, #0x400 blt L_aes_gcm_aad_update_arm64_crypto_eor3_h_done ; Multiply H and H^4 => H^5 - pmull v8.1q, v12.1d, v15.1d - pmull2 v9.1q, v12.2d, v15.2d - ext v11.16b, v12.16b, v12.16b, #8 - pmull v10.1q, v11.1d, v15.1d - pmull2 v11.1q, v11.2d, v15.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V12.1D, V15.1D + pmull2 V9.1Q, V12.2D, V15.2D + ext8 V11.16B, V12.16B, V12.16B, #8 + pmull V10.1Q, V11.1D, V15.1D + pmull2 V11.1Q, V11.2D, V15.2D + eor V10.16B, V10.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor3 v11.16b, v11.16b, v9.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v16.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor3 V11.16B, V11.16B, V9.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V16.16B, V8.16B, V10.16B ; Square H^3 => H^6 - pmull2 v11.1q, v14.2d, v14.2d - pmull v10.1q, v14.1d, v14.1d - pmull2 v8.1q, v11.2d, v21.2d - ext v9.16b, v10.16b, v11.16b, #8 - eor v9.16b, v9.16b, v8.16b - pmull2 v11.1q, v9.2d, v21.2d - mov v10.d[1], v9.d[0] - eor v17.16b, v10.16b, v11.16b + pmull2 V11.1Q, V14.2D, V14.2D + pmull V10.1Q, V14.1D, V14.1D + pmull2 V8.1Q, V11.2D, V21.2D + ext8 V9.16B, V10.16B, V11.16B, #8 + eor V9.16B, V9.16B, V8.16B + pmull2 V11.1Q, V9.2D, V21.2D + mov V10.D[1], V9.D[0] + eor V17.16B, V10.16B, V11.16B ; Multiply H and H^6 => H^7 - pmull v8.1q, v12.1d, v17.1d - pmull2 v9.1q, v12.2d, v17.2d - ext v11.16b, v12.16b, v12.16b, #8 - pmull v10.1q, v11.1d, v17.1d - pmull2 v11.1q, v11.2d, v17.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V12.1D, V17.1D + pmull2 V9.1Q, V12.2D, V17.2D + ext8 V11.16B, V12.16B, V12.16B, #8 + pmull V10.1Q, V11.1D, V17.1D + pmull2 V11.1Q, V11.2D, V17.2D + eor V10.16B, V10.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor3 v11.16b, v11.16b, v9.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v18.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor3 V11.16B, V11.16B, V9.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V18.16B, V8.16B, V10.16B ; Square H^4 => H^8 - pmull2 v11.1q, v15.2d, v15.2d - pmull v10.1q, v15.1d, v15.1d - pmull2 v8.1q, v11.2d, v21.2d - ext v9.16b, v10.16b, v11.16b, #8 - eor v9.16b, v9.16b, v8.16b - pmull2 v11.1q, v9.2d, v21.2d - mov v10.d[1], v9.d[0] - eor v19.16b, v10.16b, v11.16b + pmull2 V11.1Q, V15.2D, V15.2D + pmull V10.1Q, V15.1D, V15.1D + pmull2 V8.1Q, V11.2D, V21.2D + ext8 V9.16B, V10.16B, V11.16B, #8 + eor V9.16B, V9.16B, V8.16B + pmull2 V11.1Q, V9.2D, V21.2D + mov V10.D[1], V9.D[0] + eor V19.16B, V10.16B, V11.16B ; Done L_aes_gcm_aad_update_arm64_crypto_eor3_h_done lsr x1, x1, #4 @@ -32851,94 +32851,94 @@ L_aes_gcm_aad_update_arm64_crypto_eor3_h_done cmp x1, #0x40 blt L_aes_gcm_aad_update_arm64_crypto_eor3_start_4 L_aes_gcm_aad_update_arm64_crypto_eor3_start_8 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - rbit v4.16b, v4.16b - rbit v5.16b, v5.16b - rbit v6.16b, v6.16b - rbit v7.16b, v7.16b - eor v0.16b, v0.16b, v20.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + rbit V4.16B, V4.16B + rbit V5.16B, V5.16B + rbit V6.16B, V6.16B + rbit V7.16B, V7.16B + eor V0.16B, V0.16B, V20.16B ; X = C * H^1 - pmull v8.1q, v7.1d, v12.1d - pmull2 v9.1q, v7.2d, v12.2d - ext v11.16b, v7.16b, v7.16b, #8 - pmull v10.1q, v11.1d, v12.1d - pmull2 v11.1q, v11.2d, v12.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V7.1D, V12.1D + pmull2 V9.1Q, V7.2D, V12.2D + ext8 V11.16B, V7.16B, V7.16B, #8 + pmull V10.1Q, V11.1D, V12.1D + pmull2 V11.1Q, V11.2D, V12.2D + eor V10.16B, V10.16B, V11.16B ; X += C * H^2 - pmull v11.1q, v13.1d, v6.1d - pmull2 v20.1q, v13.2d, v6.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v6.16b, v6.16b, #8 - pmull v11.1q, v20.1d, v13.1d - pmull2 v20.1q, v20.2d, v13.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V13.1D, V6.1D + pmull2 V20.1Q, V13.2D, V6.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V6.16B, V6.16B, #8 + pmull V11.1Q, V20.1D, V13.1D + pmull2 V20.1Q, V20.2D, V13.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; X += C * H^3 - pmull v11.1q, v14.1d, v5.1d - pmull2 v20.1q, v14.2d, v5.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v5.16b, v5.16b, #8 - pmull v11.1q, v20.1d, v14.1d - pmull2 v20.1q, v20.2d, v14.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V14.1D, V5.1D + pmull2 V20.1Q, V14.2D, V5.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V5.16B, V5.16B, #8 + pmull V11.1Q, V20.1D, V14.1D + pmull2 V20.1Q, V20.2D, V14.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; X += C * H^4 - pmull v11.1q, v15.1d, v4.1d - pmull2 v20.1q, v15.2d, v4.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v4.16b, v4.16b, #8 - pmull v11.1q, v20.1d, v15.1d - pmull2 v20.1q, v20.2d, v15.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V15.1D, V4.1D + pmull2 V20.1Q, V15.2D, V4.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V4.16B, V4.16B, #8 + pmull V11.1Q, V20.1D, V15.1D + pmull2 V20.1Q, V20.2D, V15.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; X += C * H^5 - pmull v11.1q, v16.1d, v3.1d - pmull2 v20.1q, v16.2d, v3.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v3.16b, v3.16b, #8 - pmull v11.1q, v20.1d, v16.1d - pmull2 v20.1q, v20.2d, v16.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V16.1D, V3.1D + pmull2 V20.1Q, V16.2D, V3.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V3.16B, V3.16B, #8 + pmull V11.1Q, V20.1D, V16.1D + pmull2 V20.1Q, V20.2D, V16.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; X += C * H^6 - pmull v11.1q, v17.1d, v2.1d - pmull2 v20.1q, v17.2d, v2.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v2.16b, v2.16b, #8 - pmull v11.1q, v20.1d, v17.1d - pmull2 v20.1q, v20.2d, v17.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V17.1D, V2.1D + pmull2 V20.1Q, V17.2D, V2.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V2.16B, V2.16B, #8 + pmull V11.1Q, V20.1D, V17.1D + pmull2 V20.1Q, V20.2D, V17.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; X += C * H^7 - pmull v11.1q, v18.1d, v1.1d - pmull2 v20.1q, v18.2d, v1.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v1.16b, v1.16b, #8 - pmull v11.1q, v20.1d, v18.1d - pmull2 v20.1q, v20.2d, v18.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V18.1D, V1.1D + pmull2 V20.1Q, V18.2D, V1.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V1.16B, V1.16B, #8 + pmull V11.1Q, V20.1D, V18.1D + pmull2 V20.1Q, V20.2D, V18.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; X += C * H^8 - pmull v11.1q, v19.1d, v0.1d - pmull2 v20.1q, v19.2d, v0.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v0.16b, v0.16b, #8 - pmull v11.1q, v20.1d, v19.1d - pmull2 v20.1q, v20.2d, v19.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V19.1D, V0.1D + pmull2 V20.1Q, V19.2D, V0.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V0.16B, V0.16B, #8 + pmull V11.1Q, V20.1D, V19.1D + pmull2 V20.1Q, V20.2D, V19.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor3 v11.16b, v11.16b, v9.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v20.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor3 V11.16B, V11.16B, V9.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V20.16B, V8.16B, V10.16B ; Done GHASH sub x1, x1, #8 cmp x1, #8 @@ -32949,53 +32949,53 @@ L_aes_gcm_aad_update_arm64_crypto_eor3_start_8 cmp x1, #16 blt L_aes_gcm_aad_update_arm64_crypto_eor3_start_2 L_aes_gcm_aad_update_arm64_crypto_eor3_start_4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v0.16b, v0.16b, v20.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V0.16B, V0.16B, V20.16B ; X = C * H^1 - pmull v8.1q, v3.1d, v12.1d - pmull2 v9.1q, v3.2d, v12.2d - ext v11.16b, v3.16b, v3.16b, #8 - pmull v10.1q, v11.1d, v12.1d - pmull2 v11.1q, v11.2d, v12.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V3.1D, V12.1D + pmull2 V9.1Q, V3.2D, V12.2D + ext8 V11.16B, V3.16B, V3.16B, #8 + pmull V10.1Q, V11.1D, V12.1D + pmull2 V11.1Q, V11.2D, V12.2D + eor V10.16B, V10.16B, V11.16B ; X += C * H^2 - pmull v11.1q, v13.1d, v2.1d - pmull2 v20.1q, v13.2d, v2.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v2.16b, v2.16b, #8 - pmull v11.1q, v20.1d, v13.1d - pmull2 v20.1q, v20.2d, v13.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V13.1D, V2.1D + pmull2 V20.1Q, V13.2D, V2.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V2.16B, V2.16B, #8 + pmull V11.1Q, V20.1D, V13.1D + pmull2 V20.1Q, V20.2D, V13.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; X += C * H^3 - pmull v11.1q, v14.1d, v1.1d - pmull2 v20.1q, v14.2d, v1.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v1.16b, v1.16b, #8 - pmull v11.1q, v20.1d, v14.1d - pmull2 v20.1q, v20.2d, v14.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V14.1D, V1.1D + pmull2 V20.1Q, V14.2D, V1.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V1.16B, V1.16B, #8 + pmull V11.1Q, V20.1D, V14.1D + pmull2 V20.1Q, V20.2D, V14.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; X += C * H^4 - pmull v11.1q, v15.1d, v0.1d - pmull2 v20.1q, v15.2d, v0.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v0.16b, v0.16b, #8 - pmull v11.1q, v20.1d, v15.1d - pmull2 v20.1q, v20.2d, v15.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V15.1D, V0.1D + pmull2 V20.1Q, V15.2D, V0.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V0.16B, V0.16B, #8 + pmull V11.1Q, V20.1D, V15.1D + pmull2 V20.1Q, V20.2D, V15.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor3 v11.16b, v11.16b, v9.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v20.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor3 V11.16B, V11.16B, V9.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V20.16B, V8.16B, V10.16B ; Done GHASH sub x1, x1, #4 cmp x1, #4 @@ -33004,33 +33004,33 @@ L_aes_gcm_aad_update_arm64_crypto_eor3_start_4 blt L_aes_gcm_aad_update_arm64_crypto_eor3_done beq L_aes_gcm_aad_update_arm64_crypto_eor3_start_1 L_aes_gcm_aad_update_arm64_crypto_eor3_start_2 - ld1 {v0.16b, v1.16b}, [x0], #32 - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - eor v3.16b, v20.16b, v0.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + eor V3.16B, V20.16B, V0.16B ; X = C * H^1 - pmull v8.1q, v1.1d, v12.1d - pmull2 v9.1q, v1.2d, v12.2d - ext v11.16b, v1.16b, v1.16b, #8 - pmull v10.1q, v11.1d, v12.1d - pmull2 v11.1q, v11.2d, v12.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V1.1D, V12.1D + pmull2 V9.1Q, V1.2D, V12.2D + ext8 V11.16B, V1.16B, V1.16B, #8 + pmull V10.1Q, V11.1D, V12.1D + pmull2 V11.1Q, V11.2D, V12.2D + eor V10.16B, V10.16B, V11.16B ; X += C * H^2 - pmull v11.1q, v13.1d, v3.1d - pmull2 v20.1q, v13.2d, v3.2d - eor v8.16b, v8.16b, v11.16b - eor v9.16b, v9.16b, v20.16b - ext v20.16b, v3.16b, v3.16b, #8 - pmull v11.1q, v20.1d, v13.1d - pmull2 v20.1q, v20.2d, v13.2d - eor3 v10.16b, v10.16b, v20.16b, v11.16b + pmull V11.1Q, V13.1D, V3.1D + pmull2 V20.1Q, V13.2D, V3.2D + eor V8.16B, V8.16B, V11.16B + eor V9.16B, V9.16B, V20.16B + ext8 V20.16B, V3.16B, V3.16B, #8 + pmull V11.1Q, V20.1D, V13.1D + pmull2 V20.1Q, V20.2D, V13.2D + eor3 V10.16B, V10.16B, V20.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor3 v11.16b, v11.16b, v9.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v20.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor3 V11.16B, V11.16B, V9.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V20.16B, V8.16B, V10.16B ; Done GHASH sub x1, x1, #2 cmp x1, #1 @@ -33039,32 +33039,32 @@ L_aes_gcm_aad_update_arm64_crypto_eor3_start_2 L_aes_gcm_aad_update_arm64_crypto_eor3_start_1 cbz x1, L_aes_gcm_aad_update_arm64_crypto_eor3_done L_aes_gcm_aad_update_arm64_crypto_eor3_both_1 - ld1 {v0.16b}, [x0], #16 - rbit v0.16b, v0.16b - eor v3.16b, v20.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + rbit V0.16B, V0.16B + eor V3.16B, V20.16B, V0.16B ; X = C * H^1 - pmull v8.1q, v3.1d, v12.1d - pmull2 v9.1q, v3.2d, v12.2d - ext v11.16b, v3.16b, v3.16b, #8 - pmull v10.1q, v11.1d, v12.1d - pmull2 v11.1q, v11.2d, v12.2d - eor v10.16b, v10.16b, v11.16b + pmull V8.1Q, V3.1D, V12.1D + pmull2 V9.1Q, V3.2D, V12.2D + ext8 V11.16B, V3.16B, V3.16B, #8 + pmull V10.1Q, V11.1D, V12.1D + pmull2 V11.1Q, V11.2D, V12.2D + eor V10.16B, V10.16B, V11.16B ; Reduce - ext v11.16b, v8.16b, v9.16b, #8 - pmull2 v9.1q, v9.2d, v21.2d - eor3 v11.16b, v11.16b, v9.16b, v10.16b - pmull2 v10.1q, v11.2d, v21.2d - mov v8.d[1], v11.d[0] - eor v20.16b, v8.16b, v10.16b + ext8 V11.16B, V8.16B, V9.16B, #8 + pmull2 V9.1Q, V9.2D, V21.2D + eor3 V11.16B, V11.16B, V9.16B, V10.16B + pmull2 V10.1Q, V11.2D, V21.2D + mov V8.D[1], V11.D[0] + eor V20.16B, V8.16B, V10.16B ; Done GHASH subs x1, x1, #1 bne L_aes_gcm_aad_update_arm64_crypto_eor3_both_1 L_aes_gcm_aad_update_arm64_crypto_eor3_done - st1 {v20.2d}, [x2] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + st1 {V20.2D}, [x2] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -33072,55 +33072,55 @@ L_aes_gcm_aad_update_arm64_crypto_eor3_done ALIGN 4 EXPORT AES_GCM_encrypt_block_AARCH64_EOR3 AES_GCM_encrypt_block_AARCH64_EOR3 PROC - ld1 {v5.2d}, [x4] - ld1 {v4.2d}, [x3] - mov w5, v5.s[3] + ld1 {V5.2D}, [x4] + ld1 {V4.2D}, [x3] + mov w5, V5.S[3] rev w5, w5 add w5, w5, #1 rev w5, w5 - mov v5.s[3], w5 - st1 {v5.2d}, [x4] - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b - aesmc v5.16b, v5.16b - aese v5.16b, v2.16b - aesmc v5.16b, v5.16b - aese v5.16b, v3.16b - aesmc v5.16b, v5.16b - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b - aesmc v5.16b, v5.16b - aese v5.16b, v2.16b - aesmc v5.16b, v5.16b - aese v5.16b, v3.16b - aesmc v5.16b, v5.16b + mov V5.S[3], w5 + st1 {V5.2D}, [x4] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B + aesmc V5.16B, V5.16B + aese V5.16B, V2.16B + aesmc V5.16B, V5.16B + aese V5.16B, V3.16B + aesmc V5.16B, V5.16B + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B + aesmc V5.16B, V5.16B + aese V5.16B, V2.16B + aesmc V5.16B, V5.16B + aese V5.16B, V3.16B + aesmc V5.16B, V5.16B subs w1, w1, #10 - ld1 {v0.2d, v1.2d}, [x0], #32 - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b + ld1 {V0.2D, V1.2D}, [x0], #32 + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B beq L_aes_gcm_encrypt_block_arm64_crypto_eor3_round_done - ld1 {v0.2d, v1.2d}, [x0], #32 + ld1 {V0.2D, V1.2D}, [x0], #32 subs w1, w1, #2 - aesmc v5.16b, v5.16b - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b + aesmc V5.16B, V5.16B + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B beq L_aes_gcm_encrypt_block_arm64_crypto_eor3_round_done - ld1 {v0.2d, v1.2d}, [x0], #32 - aesmc v5.16b, v5.16b - aese v5.16b, v0.16b - aesmc v5.16b, v5.16b - aese v5.16b, v1.16b + ld1 {V0.2D, V1.2D}, [x0], #32 + aesmc V5.16B, V5.16B + aese V5.16B, V0.16B + aesmc V5.16B, V5.16B + aese V5.16B, V1.16B L_aes_gcm_encrypt_block_arm64_crypto_eor3_round_done - ld1 {v0.2d}, [x0] - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v5.16b - st1 {v4.2d}, [x2] + ld1 {V0.2D}, [x0] + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V5.16B + st1 {V4.2D}, [x2] ret ENDP AREA |.text|, CODE, READONLY @@ -33130,102 +33130,102 @@ AES_GCM_encrypt_update_AARCH64_EOR3 PROC stp x29, x30, [sp, #-96]! add x29, sp, #0 str x17, [x29, #24] - stp d8, d9, [x29, #32] - stp d10, d11, [x29, #48] - stp d12, d13, [x29, #64] - stp d14, d15, [x29, #80] - ld1 {v13.2d}, [x7] - movi v27.16b, #0x87 - ld1 {v26.2d}, [x5] - ushr v27.2d, v27.2d, #56 - ld1 {v22.2d}, [x6] - mov w9, v13.s[3] + stp D8, D9, [x29, #32] + stp D10, D11, [x29, #48] + stp D12, D13, [x29, #64] + stp D14, D15, [x29, #80] + ld1 {V13.2D}, [x7] + movi V27.16B, #0x87 + ld1 {V26.2D}, [x5] + ushr V27.2D, V27.2D, #56 + ld1 {V22.2D}, [x6] + mov w9, V13.S[3] rev w9, w9 cmp w4, #32 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_h_done ; Square H => H^2 - pmull2 v31.1q, v22.2d, v22.2d - pmull v30.1q, v22.1d, v22.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v23.16b, v30.16b, v31.16b + pmull2 V31.1Q, V22.2D, V22.2D + pmull V30.1Q, V22.1D, V22.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V23.16B, V30.16B, V31.16B cmp w4, #0x40 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_h_done ; Multiply H and H^2 => H^3 - pmull v28.1q, v22.1d, v23.1d - pmull2 v29.1q, v22.2d, v23.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v23.1d - pmull2 v31.1q, v31.2d, v23.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V23.1D + pmull2 V29.1Q, V22.2D, V23.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V23.1D + pmull2 V31.1Q, V31.2D, V23.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v24.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V24.16B, V28.16B, V30.16B ; Square H^2 => H^4 - pmull2 v31.1q, v23.2d, v23.2d - pmull v30.1q, v23.1d, v23.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v25.16b, v30.16b, v31.16b + pmull2 V31.1Q, V23.2D, V23.2D + pmull V30.1Q, V23.1D, V23.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V25.16B, V30.16B, V31.16B ; Done cmp w4, #0x200 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_h_done ; Multiply H and H^4 => H^5 - pmull v28.1q, v22.1d, v25.1d - pmull2 v29.1q, v22.2d, v25.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v25.1d - pmull2 v31.1q, v31.2d, v25.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V25.1D + pmull2 V29.1Q, V22.2D, V25.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V25.1D + pmull2 V31.1Q, V31.2D, V25.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v4.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V4.16B, V28.16B, V30.16B ; Square H^3 => H^6 - pmull2 v31.1q, v24.2d, v24.2d - pmull v30.1q, v24.1d, v24.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v5.16b, v30.16b, v31.16b + pmull2 V31.1Q, V24.2D, V24.2D + pmull V30.1Q, V24.1D, V24.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V5.16B, V30.16B, V31.16B ; Multiply H and H^6 => H^7 - pmull v28.1q, v22.1d, v5.1d - pmull2 v29.1q, v22.2d, v5.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v5.1d - pmull2 v31.1q, v31.2d, v5.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V5.1D + pmull2 V29.1Q, V22.2D, V5.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V5.1D + pmull2 V31.1Q, V31.2D, V5.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v6.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V6.16B, V28.16B, V30.16B ; Square H^4 => H^8 - pmull2 v31.1q, v25.2d, v25.2d - pmull v30.1q, v25.1d, v25.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v7.16b, v30.16b, v31.16b + pmull2 V31.1Q, V25.2D, V25.2D + pmull V30.1Q, V25.1D, V25.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V7.16B, V30.16B, V31.16B ; Done L_aes_gcm_encrypt_update_arm64_crypto_eor3_h_done lsr w8, w4, #4 @@ -33237,23 +33237,23 @@ L_aes_gcm_encrypt_update_arm64_crypto_eor3_h_done cmp w8, #32 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 rev w16, w16 rev w15, w15 @@ -33262,1168 +33262,1168 @@ L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_8 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v0.16b}, [x3], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v1.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v2.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v3.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x7] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V0.16B}, [x3], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V1.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V2.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V3.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x7] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_end_8 L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w16 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w15, w15 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w14, w14 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w13, w13 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w12, w12 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w11, w11 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_both_8 L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #0x40 - ld1 {v12.2d}, [x0] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x0], #0x40 + ld1 {V12.2D}, [x0] cmp w8, #1 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_done beq L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_1 cmp w8, #4 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x3], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x3], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_end_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 rev w12, w12 rev w11, w11 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 bge L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_both_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_1 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_done L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w13 + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_done L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_eor3_192_done ENDIF @@ -34434,23 +34434,23 @@ L_aes_gcm_encrypt_update_arm64_crypto_eor3_start_256 cmp w8, #32 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 rev w16, w16 rev w15, w15 @@ -34459,1285 +34459,1285 @@ L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_8 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v0.16b}, [x3], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v1.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v2.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v3.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x7] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V0.16B}, [x3], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V1.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V2.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V3.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x7] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_end_8 L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w16 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w15, w15 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w14, w14 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w13, w13 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w12, w12 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w11, w11 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_both_8 L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #0x40 - ld1 {v12.2d}, [x0], #16 + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x0], #0x40 + ld1 {V12.2D}, [x0], #16 cmp w8, #1 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_done beq L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_1 cmp w8, #4 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x3], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x3], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_end_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 rev w12, w12 rev w11, w11 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 bge L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_both_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_1 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_done L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w13 + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_done L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x0, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x0, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_eor3_256_done ENDIF @@ -35748,23 +35748,23 @@ L_aes_gcm_encrypt_update_arm64_crypto_eor3_start_128 cmp w8, #32 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 rev w16, w16 rev w15, w15 @@ -35773,1069 +35773,1069 @@ L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_8 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v20.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v21.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - ld1 {v0.16b}, [x3], #16 - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - ld1 {v1.16b}, [x3], #16 - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - ld1 {v2.16b}, [x3], #16 - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - ld1 {v3.16b}, [x3], #16 - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - ld1 {v13.2d}, [x7] - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V20.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V21.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + ld1 {V0.16B}, [x3], #16 + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + ld1 {V1.16B}, [x3], #16 + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + ld1 {V2.16B}, [x3], #16 + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + ld1 {V3.16B}, [x3], #16 + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + ld1 {V13.2D}, [x7] + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_end_8 L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w16, w16 - rbit v20.16b, v20.16b + rbit V20.16B, V20.16B rev w15, w15 - rbit v21.16b, v21.16b + rbit V21.16B, V21.16B rev w14, w14 - rbit v0.16b, v0.16b + rbit V0.16B, V0.16B rev w13, w13 - rbit v1.16b, v1.16b + rbit V1.16B, V1.16B rev w12, w12 - rbit v2.16b, v2.16b + rbit V2.16B, V2.16B rev w11, w11 - rbit v3.16b, v3.16b + rbit V3.16B, V3.16B rev w10, w9 - mov v14.s[3], w17 - mov v15.s[3], w16 - mov v16.s[3], w15 - mov v17.s[3], w14 - mov v8.s[3], w13 - mov v9.s[3], w12 - mov v10.s[3], w11 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w17 + mov V15.S[3], w16 + mov V16.S[3], w15 + mov V17.S[3], w14 + mov V8.S[3], w13 + mov V9.S[3], w12 + mov V10.S[3], w11 + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v30.16b, v30.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V30.16B, V30.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - mov v28.d[1], v31.d[0] - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor v26.16b, v28.16b, v30.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + mov V28.D[1], V31.D[0] + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor V26.16B, V28.16B, V30.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B ; Done GHASH - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v18.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x2], #0x40 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V18.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_both_8 L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d}, [x0], #32 - ld1 {v10.2d}, [x0] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D}, [x0], #32 + ld1 {V10.2D}, [x0] cmp w8, #1 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_done beq L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_1 cmp w8, #4 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 rev w12, w12 rev w11, w11 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - ld1 {v19.16b}, [x3], #16 - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v20.16b}, [x3], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - ld1 {v21.16b}, [x3], #16 - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + ld1 {V19.16B}, [x3], #16 + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V20.16B}, [x3], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + ld1 {V21.16B}, [x3], #16 + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_end_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 rev w12, w12 rev w11, w11 - rbit v19.16b, v19.16b + rbit V19.16B, V19.16B rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w12 - mov v16.s[3], w11 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - rbit v20.16b, v20.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - rbit v21.16b, v21.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - eor v18.16b, v18.16b, v26.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b + mov V14.S[3], w13 + mov V15.S[3], w12 + mov V16.S[3], w11 + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + rbit V20.16B, V20.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + rbit V21.16B, V21.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + eor V18.16B, V18.16B, V26.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v30.16b, v30.16b, v31.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V30.16B, V30.16B, V31.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - eor v20.16b, v20.16b, v16.16b - eor v21.16b, v21.16b, v17.16b + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + eor V20.16B, V20.16B, V16.16B + eor V21.16B, V21.16B, V17.16B cmp w8, #4 - st1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x2], #0x40 + st1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x2], #0x40 bge L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_both_4 L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_1 blt L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_done L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 rev w10, w9 - mov v14.s[3], w13 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V14.S[3], w13 + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - eor v18.16b, v18.16b, v14.16b - eor v19.16b, v19.16b, v15.16b - st1 {v18.16b, v19.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + eor V18.16B, V18.16B, V14.16B + eor V19.16B, V19.16B, V15.16B + st1 {V18.16B, V19.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_done L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v18.16b}, [x3], #16 - eor v18.16b, v18.16b, v14.16b - st1 {v18.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V18.16B}, [x3], #16 + eor V18.16B, V18.16B, V14.16B + st1 {V18.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_encrypt_update_arm64_crypto_eor3_128_done ENDIF L_aes_gcm_encrypt_update_arm64_crypto_eor3_done rev w9, w9 - mov v13.s[3], w9 - st1 {v26.2d}, [x5] - st1 {v13.2d}, [x7] + mov V13.S[3], w9 + st1 {V26.2D}, [x5] + st1 {V13.2D}, [x7] ldr x17, [x29, #24] - ldp d8, d9, [x29, #32] - ldp d10, d11, [x29, #48] - ldp d12, d13, [x29, #64] - ldp d14, d15, [x29, #80] + ldp D8, D9, [x29, #32] + ldp D10, D11, [x29, #48] + ldp D12, D13, [x29, #64] + ldp D14, D15, [x29, #80] ldp x29, x30, [sp], #0x60 ret ENDP @@ -36843,39 +36843,39 @@ L_aes_gcm_encrypt_update_arm64_crypto_eor3_done ALIGN 4 EXPORT AES_GCM_encrypt_final_AARCH64_EOR3 AES_GCM_encrypt_final_AARCH64_EOR3 PROC - ld1 {v5.2d}, [x0] - movi v6.16b, #0x87 - ld1 {v4.2d}, [x5] - ushr v6.2d, v6.2d, #56 - ld1 {v7.2d}, [x6] + ld1 {V5.2D}, [x0] + movi V6.16B, #0x87 + ld1 {V4.2D}, [x5] + ushr V6.2D, V6.2D, #56 + ld1 {V7.2D}, [x6] ubfiz x4, x4, #3, #32 rbit x4, x4 - mov v0.d[0], x4 + mov V0.D[0], x4 ubfiz x3, x3, #3, #32 rbit x3, x3 - mov v0.d[1], x3 - eor v5.16b, v5.16b, v0.16b - pmull v0.1q, v5.1d, v4.1d - pmull2 v1.1q, v5.2d, v4.2d - ext v3.16b, v5.16b, v5.16b, #8 - pmull v2.1q, v3.1d, v4.1d - pmull2 v3.1q, v3.2d, v4.2d - eor v2.16b, v2.16b, v3.16b + mov V0.D[1], x3 + eor V5.16B, V5.16B, V0.16B + pmull V0.1Q, V5.1D, V4.1D + pmull2 V1.1Q, V5.2D, V4.2D + ext8 V3.16B, V5.16B, V5.16B, #8 + pmull V2.1Q, V3.1D, V4.1D + pmull2 V3.1Q, V3.2D, V4.2D + eor V2.16B, V2.16B, V3.16B ; Reduce - ext v3.16b, v0.16b, v1.16b, #8 - pmull2 v1.1q, v1.2d, v6.2d - eor3 v3.16b, v3.16b, v1.16b, v2.16b - pmull2 v2.1q, v3.2d, v6.2d - mov v0.d[1], v3.d[0] - eor v5.16b, v0.16b, v2.16b - rbit v5.16b, v5.16b - eor v5.16b, v5.16b, v7.16b + ext8 V3.16B, V0.16B, V1.16B, #8 + pmull2 V1.1Q, V1.2D, V6.2D + eor3 V3.16B, V3.16B, V1.16B, V2.16B + pmull2 V2.1Q, V3.2D, V6.2D + mov V0.D[1], V3.D[0] + eor V5.16B, V0.16B, V2.16B + rbit V5.16B, V5.16B + eor V5.16B, V5.16B, V7.16B cmp w2, #16 bne L_aes_gcm_encrypt_final_arm64_crypto_eor3_tag_partial - st1 {v5.16b}, [x1] + st1 {V5.16B}, [x1] b L_aes_gcm_encrypt_final_arm64_crypto_eor3_done L_aes_gcm_encrypt_final_arm64_crypto_eor3_tag_partial - st1 {v5.16b}, [x0] + st1 {V5.16B}, [x0] cmp w2, #8 blt L_aes_gcm_encrypt_final_arm64_crypto_eor3_tag_start_dw ldr x8, [x0], #8 @@ -36910,102 +36910,102 @@ AES_GCM_decrypt_update_AARCH64_EOR3 PROC stp x29, x30, [sp, #-96]! add x29, sp, #0 str x17, [x29, #24] - stp d8, d9, [x29, #32] - stp d10, d11, [x29, #48] - stp d12, d13, [x29, #64] - stp d14, d15, [x29, #80] - ld1 {v13.2d}, [x7] - movi v27.16b, #0x87 - ld1 {v26.2d}, [x5] - ushr v27.2d, v27.2d, #56 - ld1 {v22.2d}, [x6] - mov w9, v13.s[3] + stp D8, D9, [x29, #32] + stp D10, D11, [x29, #48] + stp D12, D13, [x29, #64] + stp D14, D15, [x29, #80] + ld1 {V13.2D}, [x7] + movi V27.16B, #0x87 + ld1 {V26.2D}, [x5] + ushr V27.2D, V27.2D, #56 + ld1 {V22.2D}, [x6] + mov w9, V13.S[3] rev w9, w9 cmp w4, #32 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_h_done ; Square H => H^2 - pmull2 v31.1q, v22.2d, v22.2d - pmull v30.1q, v22.1d, v22.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v23.16b, v30.16b, v31.16b + pmull2 V31.1Q, V22.2D, V22.2D + pmull V30.1Q, V22.1D, V22.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V23.16B, V30.16B, V31.16B cmp w4, #0x40 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_h_done ; Multiply H and H^2 => H^3 - pmull v28.1q, v22.1d, v23.1d - pmull2 v29.1q, v22.2d, v23.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v23.1d - pmull2 v31.1q, v31.2d, v23.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V23.1D + pmull2 V29.1Q, V22.2D, V23.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V23.1D + pmull2 V31.1Q, V31.2D, V23.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v24.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V24.16B, V28.16B, V30.16B ; Square H^2 => H^4 - pmull2 v31.1q, v23.2d, v23.2d - pmull v30.1q, v23.1d, v23.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v25.16b, v30.16b, v31.16b + pmull2 V31.1Q, V23.2D, V23.2D + pmull V30.1Q, V23.1D, V23.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V25.16B, V30.16B, V31.16B ; Done cmp w4, #0x200 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_h_done ; Multiply H and H^4 => H^5 - pmull v28.1q, v22.1d, v25.1d - pmull2 v29.1q, v22.2d, v25.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v25.1d - pmull2 v31.1q, v31.2d, v25.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V25.1D + pmull2 V29.1Q, V22.2D, V25.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V25.1D + pmull2 V31.1Q, V31.2D, V25.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v4.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V4.16B, V28.16B, V30.16B ; Square H^3 => H^6 - pmull2 v31.1q, v24.2d, v24.2d - pmull v30.1q, v24.1d, v24.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v5.16b, v30.16b, v31.16b + pmull2 V31.1Q, V24.2D, V24.2D + pmull V30.1Q, V24.1D, V24.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V5.16B, V30.16B, V31.16B ; Multiply H and H^6 => H^7 - pmull v28.1q, v22.1d, v5.1d - pmull2 v29.1q, v22.2d, v5.2d - ext v31.16b, v22.16b, v22.16b, #8 - pmull v30.1q, v31.1d, v5.1d - pmull2 v31.1q, v31.2d, v5.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V22.1D, V5.1D + pmull2 V29.1Q, V22.2D, V5.2D + ext8 V31.16B, V22.16B, V22.16B, #8 + pmull V30.1Q, V31.1D, V5.1D + pmull2 V31.1Q, V31.2D, V5.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v6.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V6.16B, V28.16B, V30.16B ; Square H^4 => H^8 - pmull2 v31.1q, v25.2d, v25.2d - pmull v30.1q, v25.1d, v25.1d - pmull2 v28.1q, v31.2d, v27.2d - ext v29.16b, v30.16b, v31.16b, #8 - eor v29.16b, v29.16b, v28.16b - pmull2 v31.1q, v29.2d, v27.2d - mov v30.d[1], v29.d[0] - eor v7.16b, v30.16b, v31.16b + pmull2 V31.1Q, V25.2D, V25.2D + pmull V30.1Q, V25.1D, V25.1D + pmull2 V28.1Q, V31.2D, V27.2D + ext8 V29.16B, V30.16B, V31.16B, #8 + eor V29.16B, V29.16B, V28.16B + pmull2 V31.1Q, V29.2D, V27.2D + mov V30.D[1], V29.D[0] + eor V7.16B, V30.16B, V31.16B ; Done L_aes_gcm_decrypt_update_arm64_crypto_eor3_h_done lsr w8, w4, #4 @@ -37017,1195 +37017,1195 @@ L_aes_gcm_decrypt_update_arm64_crypto_eor3_h_done cmp w8, #32 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_start_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 - mov v14.s[3], w17 + mov V14.S[3], w17 rev w16, w16 - mov v15.s[3], w16 + mov V15.S[3], w16 rev w15, w15 - mov v16.s[3], w15 + mov V16.S[3], w15 rev w14, w14 - mov v17.s[3], w14 + mov V17.S[3], w14 rev w13, w13 - mov v8.s[3], w13 + mov V8.S[3], w13 rev w12, w12 - mov v9.s[3], w12 + mov V9.S[3], w12 rev w11, w11 - mov v10.s[3], w11 + mov V10.S[3], w11 rev w10, w9 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x7] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x7] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_end_8 L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b - mov v14.s[3], w17 + rbit V19.16B, V19.16B + mov V14.S[3], w17 rev w16, w16 - rbit v20.16b, v20.16b - mov v15.s[3], w16 + rbit V20.16B, V20.16B + mov V15.S[3], w16 rev w15, w15 - rbit v21.16b, v21.16b - mov v16.s[3], w15 + rbit V21.16B, V21.16B + mov V16.S[3], w15 rev w14, w14 - rbit v0.16b, v0.16b - mov v17.s[3], w14 + rbit V0.16B, V0.16B + mov V17.S[3], w14 rev w13, w13 - rbit v1.16b, v1.16b - mov v8.s[3], w13 + rbit V1.16B, V1.16B + mov V8.S[3], w13 rev w12, w12 - rbit v2.16b, v2.16b - mov v9.s[3], w12 + rbit V2.16B, V2.16B + mov V9.S[3], w12 rev w11, w11 - rbit v3.16b, v3.16b - mov v10.s[3], w11 + rbit V3.16B, V3.16B + mov V10.S[3], w11 rev w10, w9 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_both_8 L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #0x40 - ld1 {v12.2d}, [x0] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x0], #0x40 + ld1 {V12.2D}, [x0] cmp w8, #1 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_done beq L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_start_1 cmp w8, #4 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w12, w12 - mov v15.s[3], w12 + mov V15.S[3], w12 rev w11, w11 - mov v16.s[3], w11 + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x3], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x3], #16 - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x3], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x3], #16 + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_end_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 - rbit v19.16b, v19.16b - mov v14.s[3], w13 + rbit V19.16B, V19.16B + mov V14.S[3], w13 rev w12, w12 - rbit v20.16b, v20.16b - mov v15.s[3], w12 + rbit V20.16B, V20.16B + mov V15.S[3], w12 rev w11, w11 - rbit v21.16b, v21.16b - mov v16.s[3], w11 + rbit V21.16B, V21.16B + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - mov v28.d[1], v31.d[0] - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b + mov V28.D[1], V31.D[0] + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v11.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v11.16b - eor v17.16b, v17.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V11.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V11.16B + eor V17.16B, V17.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 bge L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_both_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_start_1 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_done L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w10, w9 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v11.16b - eor v15.16b, v15.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V11.16B + eor V15.16B, V15.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_done L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_start_1 - ld1 {v15.16b}, [x3], #16 + ld1 {V15.16B}, [x3], #16 add w9, w9, #1 - mov v14.16b, v13.16b - rbit v15.16b, v15.16b + mov V14.16B, V13.16B + rbit V15.16B, V15.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v16.16b, v26.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V16.16B, V26.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v16.1d, v22.1d - pmull2 v29.1q, v16.2d, v22.2d - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - ext v31.16b, v16.16b, v16.16b, #8 - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b + pmull V28.1Q, V16.1D, V22.1D + pmull2 V29.1Q, V16.2D, V22.2D + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + ext8 V31.16B, V16.16B, V16.16B, #8 + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - mov v28.d[1], v31.d[0] - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v14.16b, v11.16b - eor v14.16b, v14.16b, v12.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + mov V28.D[1], V31.D[0] + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V14.16B, V11.16B + eor V14.16B, V14.16B, V12.16B ; Done GHASH - rbit v15.16b, v15.16b - eor v14.16b, v14.16b, v15.16b - st1 {v14.16b}, [x2], #16 + rbit V15.16B, V15.16B + eor V14.16B, V14.16B, V15.16B + st1 {V14.16B}, [x2], #16 L_aes_gcm_decrypt_update_arm64_crypto_eor3_192_done ENDIF b L_aes_gcm_decrypt_update_arm64_crypto_eor3_done @@ -38215,1310 +38215,1310 @@ L_aes_gcm_decrypt_update_arm64_crypto_eor3_start_256 cmp w8, #32 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_start_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 - mov v14.s[3], w17 + mov V14.S[3], w17 rev w16, w16 - mov v15.s[3], w16 + mov V15.S[3], w16 rev w15, w15 - mov v16.s[3], w15 + mov V16.S[3], w15 rev w14, w14 - mov v17.s[3], w14 + mov V17.S[3], w14 rev w13, w13 - mov v8.s[3], w13 + mov V8.S[3], w13 rev w12, w12 - mov v9.s[3], w12 + mov V9.S[3], w12 rev w11, w11 - mov v10.s[3], w11 + mov V10.S[3], w11 rev w10, w9 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x7] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x7] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_end_8 L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b - mov v14.s[3], w17 + rbit V19.16B, V19.16B + mov V14.S[3], w17 rev w16, w16 - rbit v20.16b, v20.16b - mov v15.s[3], w16 + rbit V20.16B, V20.16B + mov V15.S[3], w16 rev w15, w15 - rbit v21.16b, v21.16b - mov v16.s[3], w15 + rbit V21.16B, V21.16B + mov V16.S[3], w15 rev w14, w14 - rbit v0.16b, v0.16b - mov v17.s[3], w14 + rbit V0.16B, V0.16B + mov V17.S[3], w14 rev w13, w13 - rbit v1.16b, v1.16b - mov v8.s[3], w13 + rbit V1.16B, V1.16B + mov V8.S[3], w13 rev w12, w12 - rbit v2.16b, v2.16b - mov v9.s[3], w12 + rbit V2.16B, V2.16B + mov V9.S[3], w12 rev w11, w11 - rbit v3.16b, v3.16b - mov v10.s[3], w11 + rbit V3.16B, V3.16B + mov V10.S[3], w11 rev w10, w9 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #176] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #192] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #208] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #224] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #176] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #192] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #208] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #224] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_both_8 L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x0], #0x40 - ld1 {v12.2d}, [x0], #16 + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x0], #0x40 + ld1 {V12.2D}, [x0], #16 cmp w8, #1 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_done beq L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_start_1 cmp w8, #4 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w12, w12 - mov v15.s[3], w12 + mov V15.S[3], w12 rev w11, w11 - mov v16.s[3], w11 + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x3], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x3], #16 - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x3], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x3], #16 + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_end_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 - rbit v19.16b, v19.16b - mov v14.s[3], w13 + rbit V19.16B, V19.16B + mov V14.S[3], w13 rev w12, w12 - rbit v20.16b, v20.16b - mov v15.s[3], w12 + rbit V20.16B, V20.16B + mov V15.S[3], w12 rev w11, w11 - rbit v21.16b, v21.16b - mov v16.s[3], w11 + rbit V21.16B, V21.16B + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - mov v28.d[1], v31.d[0] - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b + mov V28.D[1], V31.D[0] + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v16.16b, v9.16b - aesmc v16.16b, v16.16b - aese v17.16b, v9.16b - aesmc v17.16b, v17.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v16.16b, v10.16b - aesmc v16.16b, v16.16b - aese v17.16b, v10.16b - aesmc v17.16b, v17.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - aese v16.16b, v11.16b - aesmc v16.16b, v16.16b - aese v17.16b, v11.16b - aesmc v17.16b, v17.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - aese v16.16b, v29.16b - eor v16.16b, v16.16b, v30.16b - aese v17.16b, v29.16b - eor v17.16b, v17.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V16.16B, V9.16B + aesmc V16.16B, V16.16B + aese V17.16B, V9.16B + aesmc V17.16B, V17.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V16.16B, V10.16B + aesmc V16.16B, V16.16B + aese V17.16B, V10.16B + aesmc V17.16B, V17.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + aese V16.16B, V11.16B + aesmc V16.16B, V16.16B + aese V17.16B, V11.16B + aesmc V17.16B, V17.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + aese V16.16B, V29.16B + eor V16.16B, V16.16B, V30.16B + aese V17.16B, V29.16B + eor V17.16B, V17.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 bge L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_both_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_start_1 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_done L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w10, w9 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - aesmc v15.16b, v15.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - aese v15.16b, v10.16b - aesmc v15.16b, v15.16b - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - aese v15.16b, v11.16b - aesmc v15.16b, v15.16b - ld1 {v29.2d, v30.2d}, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - aese v15.16b, v29.16b - eor v15.16b, v15.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + aesmc V15.16B, V15.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + aese V15.16B, V10.16B + aesmc V15.16B, V15.16B + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + aese V15.16B, V11.16B + aesmc V15.16B, V15.16B + ld1 {V29.2D, V30.2D}, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + aese V15.16B, V29.16B + eor V15.16B, V15.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_done L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - aesmc v14.16b, v14.16b - aese v14.16b, v10.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v14.16b, v11.16b - aesmc v14.16b, v14.16b - ldr q29, [x0] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ldr q30, [x0, #16] - aese v14.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v14.16b, v14.16b, v18.16b - st1 {v14.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + aesmc V14.16B, V14.16B + aese V14.16B, V10.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V14.16B, V11.16B + aesmc V14.16B, V14.16B + ldr Q29, [x0] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ldr Q30, [x0, #16] + aese V14.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V14.16B, V14.16B, V18.16B + st1 {V14.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_eor3_256_done ENDIF @@ -39529,1094 +39529,1094 @@ L_aes_gcm_decrypt_update_arm64_crypto_eor3_start_128 cmp w8, #32 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_start_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_start_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b + mov V11.16B, V13.16B rev w17, w17 - mov v14.s[3], w17 + mov V14.S[3], w17 rev w16, w16 - mov v15.s[3], w16 + mov V15.S[3], w16 rev w15, w15 - mov v16.s[3], w15 + mov V16.S[3], w15 rev w14, w14 - mov v17.s[3], w14 + mov V17.S[3], w14 rev w13, w13 - mov v8.s[3], w13 + mov V8.S[3], w13 rev w12, w12 - mov v9.s[3], w12 + mov V9.S[3], w12 rev w11, w11 - mov v10.s[3], w11 + mov V10.S[3], w11 rev w10, w9 - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v18.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v19.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v20.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v21.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - ld1 {v0.16b}, [x3], #16 - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - ld1 {v1.16b}, [x3], #16 - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - ld1 {v2.16b}, [x3], #16 - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - ld1 {v3.16b}, [x3], #16 - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - ld1 {v13.2d}, [x7] - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V18.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V19.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V20.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V21.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + ld1 {V0.16B}, [x3], #16 + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + ld1 {V1.16B}, [x3], #16 + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + ld1 {V2.16B}, [x3], #16 + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + ld1 {V3.16B}, [x3], #16 + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + ld1 {V13.2D}, [x7] + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_end_8 L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_both_8 - ldr q12, [x0] + ldr Q12, [x0] add w17, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w16, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w15, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w14, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B add w13, w9, #5 - mov v8.16b, v13.16b + mov V8.16B, V13.16B add w12, w9, #6 - mov v9.16b, v13.16b + mov V9.16B, V13.16B add w11, w9, #7 - mov v10.16b, v13.16b + mov V10.16B, V13.16B add w9, w9, #8 - mov v11.16b, v13.16b - rbit v18.16b, v18.16b + mov V11.16B, V13.16B + rbit V18.16B, V18.16B rev w17, w17 - rbit v19.16b, v19.16b - mov v14.s[3], w17 + rbit V19.16B, V19.16B + mov V14.S[3], w17 rev w16, w16 - rbit v20.16b, v20.16b - mov v15.s[3], w16 + rbit V20.16B, V20.16B + mov V15.S[3], w16 rev w15, w15 - rbit v21.16b, v21.16b - mov v16.s[3], w15 + rbit V21.16B, V21.16B + mov V16.S[3], w15 rev w14, w14 - rbit v0.16b, v0.16b - mov v17.s[3], w14 + rbit V0.16B, V0.16B + mov V17.S[3], w14 rev w13, w13 - rbit v1.16b, v1.16b - mov v8.s[3], w13 + rbit V1.16B, V1.16B + mov V8.S[3], w13 rev w12, w12 - rbit v2.16b, v2.16b - mov v9.s[3], w12 + rbit V2.16B, V2.16B + mov V9.S[3], w12 rev w11, w11 - rbit v3.16b, v3.16b - mov v10.s[3], w11 + rbit V3.16B, V3.16B + mov V10.S[3], w11 rev w10, w9 - eor v18.16b, v18.16b, v26.16b - mov v11.s[3], w10 - ldr q13, [x0, #16] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + eor V18.16B, V18.16B, V26.16B + mov V11.S[3], w10 + ldr Q13, [x0, #16] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ext v31.16b, v3.16b, v3.16b, #8 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v30.16b, v30.16b, v31.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ext8 V31.16B, V3.16B, V3.16B, #8 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V30.16B, V30.16B, V31.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - ext v26.16b, v2.16b, v2.16b, #8 - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #32] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #32] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ext v26.16b, v1.16b, v1.16b, #8 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #48] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #48] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ext v26.16b, v0.16b, v0.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #64] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #64] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - ext v26.16b, v21.16b, v21.16b, #8 - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #80] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #80] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #96] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #96] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #112] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #112] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B subs w8, w8, #8 - ldr q12, [x0, #128] - aese v14.16b, v13.16b - aesmc v14.16b, v14.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v15.16b, v13.16b - aesmc v15.16b, v15.16b - mov v28.d[1], v31.d[0] - aese v16.16b, v13.16b - aesmc v16.16b, v16.16b - eor v26.16b, v28.16b, v30.16b - aese v17.16b, v13.16b - aesmc v17.16b, v17.16b + ldr Q12, [x0, #128] + aese V14.16B, V13.16B + aesmc V14.16B, V14.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V15.16B, V13.16B + aesmc V15.16B, V15.16B + mov V28.D[1], V31.D[0] + aese V16.16B, V13.16B + aesmc V16.16B, V16.16B + eor V26.16B, V28.16B, V30.16B + aese V17.16B, V13.16B + aesmc V17.16B, V17.16B ; Done GHASH - aese v8.16b, v13.16b - aesmc v8.16b, v8.16b - ld1 {v18.16b}, [x3], #16 - aese v9.16b, v13.16b - aesmc v9.16b, v9.16b - ld1 {v19.16b}, [x3], #16 - aese v10.16b, v13.16b - aesmc v10.16b, v10.16b - ld1 {v20.16b}, [x3], #16 - aese v11.16b, v13.16b - aesmc v11.16b, v11.16b - ldr q13, [x0, #144] - aese v14.16b, v12.16b - aesmc v14.16b, v14.16b - ld1 {v21.16b}, [x3], #16 - aese v15.16b, v12.16b - aesmc v15.16b, v15.16b - ld1 {v0.16b}, [x3], #16 - aese v16.16b, v12.16b - aesmc v16.16b, v16.16b - ld1 {v1.16b}, [x3], #16 - aese v17.16b, v12.16b - aesmc v17.16b, v17.16b - ld1 {v2.16b}, [x3], #16 - aese v8.16b, v12.16b - aesmc v8.16b, v8.16b - ld1 {v3.16b}, [x3], #16 - aese v9.16b, v12.16b - aesmc v9.16b, v9.16b - aese v10.16b, v12.16b - aesmc v10.16b, v10.16b - aese v11.16b, v12.16b - aesmc v11.16b, v11.16b - ldr q12, [x0, #160] - aese v14.16b, v13.16b - eor v14.16b, v14.16b, v12.16b - aese v15.16b, v13.16b - eor v15.16b, v15.16b, v12.16b - aese v16.16b, v13.16b - eor v16.16b, v16.16b, v12.16b - aese v17.16b, v13.16b - eor v17.16b, v17.16b, v12.16b - aese v8.16b, v13.16b - eor v8.16b, v8.16b, v12.16b - aese v9.16b, v13.16b - eor v9.16b, v9.16b, v12.16b - aese v10.16b, v13.16b - eor v10.16b, v10.16b, v12.16b - aese v11.16b, v13.16b - eor v11.16b, v11.16b, v12.16b - ld1 {v13.2d}, [x7] - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - st1 {v8.16b, v9.16b, v10.16b, v11.16b}, [x2], #0x40 + aese V8.16B, V13.16B + aesmc V8.16B, V8.16B + ld1 {V18.16B}, [x3], #16 + aese V9.16B, V13.16B + aesmc V9.16B, V9.16B + ld1 {V19.16B}, [x3], #16 + aese V10.16B, V13.16B + aesmc V10.16B, V10.16B + ld1 {V20.16B}, [x3], #16 + aese V11.16B, V13.16B + aesmc V11.16B, V11.16B + ldr Q13, [x0, #144] + aese V14.16B, V12.16B + aesmc V14.16B, V14.16B + ld1 {V21.16B}, [x3], #16 + aese V15.16B, V12.16B + aesmc V15.16B, V15.16B + ld1 {V0.16B}, [x3], #16 + aese V16.16B, V12.16B + aesmc V16.16B, V16.16B + ld1 {V1.16B}, [x3], #16 + aese V17.16B, V12.16B + aesmc V17.16B, V17.16B + ld1 {V2.16B}, [x3], #16 + aese V8.16B, V12.16B + aesmc V8.16B, V8.16B + ld1 {V3.16B}, [x3], #16 + aese V9.16B, V12.16B + aesmc V9.16B, V9.16B + aese V10.16B, V12.16B + aesmc V10.16B, V10.16B + aese V11.16B, V12.16B + aesmc V11.16B, V11.16B + ldr Q12, [x0, #160] + aese V14.16B, V13.16B + eor V14.16B, V14.16B, V12.16B + aese V15.16B, V13.16B + eor V15.16B, V15.16B, V12.16B + aese V16.16B, V13.16B + eor V16.16B, V16.16B, V12.16B + aese V17.16B, V13.16B + eor V17.16B, V17.16B, V12.16B + aese V8.16B, V13.16B + eor V8.16B, V8.16B, V12.16B + aese V9.16B, V13.16B + eor V9.16B, V9.16B, V12.16B + aese V10.16B, V13.16B + eor V10.16B, V10.16B, V12.16B + aese V11.16B, V13.16B + eor V11.16B, V11.16B, V12.16B + ld1 {V13.2D}, [x7] + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + st1 {V8.16B, V9.16B, V10.16B, V11.16B}, [x2], #0x40 cmp w8, #8 bge L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_both_8 L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_end_8 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - rbit v0.16b, v0.16b - rbit v1.16b, v1.16b - rbit v2.16b, v2.16b - rbit v3.16b, v3.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + rbit V0.16B, V0.16B + rbit V1.16B, V1.16B + rbit V2.16B, V2.16B + rbit V3.16B, V3.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v3.1d, v22.1d - pmull2 v29.1q, v3.2d, v22.2d - ext v31.16b, v3.16b, v3.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V3.1D, V22.1D + pmull2 V29.1Q, V3.2D, V22.2D + ext8 V31.16B, V3.16B, V3.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v2.1d - pmull2 v26.1q, v23.2d, v2.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v2.16b, v2.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V2.1D + pmull2 V26.1Q, V23.2D, V2.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V2.16B, V2.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v1.1d - pmull2 v26.1q, v24.2d, v1.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v1.16b, v1.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V1.1D + pmull2 V26.1Q, V24.2D, V1.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V1.16B, V1.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v0.1d - pmull2 v26.1q, v25.2d, v0.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v0.16b, v0.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V0.1D + pmull2 V26.1Q, V25.2D, V0.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V0.16B, V0.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^5 - pmull v31.1q, v4.1d, v21.1d - pmull2 v26.1q, v4.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v4.1d - pmull2 v26.1q, v26.2d, v4.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V4.1D, V21.1D + pmull2 V26.1Q, V4.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V4.1D + pmull2 V26.1Q, V26.2D, V4.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^6 - pmull v31.1q, v5.1d, v20.1d - pmull2 v26.1q, v5.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v5.1d - pmull2 v26.1q, v26.2d, v5.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V5.1D, V20.1D + pmull2 V26.1Q, V5.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V5.1D + pmull2 V26.1Q, V26.2D, V5.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^7 - pmull v31.1q, v6.1d, v19.1d - pmull2 v26.1q, v6.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v6.1d - pmull2 v26.1q, v26.2d, v6.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V6.1D, V19.1D + pmull2 V26.1Q, V6.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V6.1D + pmull2 V26.1Q, V26.2D, V6.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^8 - pmull v31.1q, v7.1d, v18.1d - pmull2 v26.1q, v7.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v7.1d - pmull2 v26.1q, v26.2d, v7.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V7.1D, V18.1D + pmull2 V26.1Q, V7.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V7.1D + pmull2 V26.1Q, V26.2D, V7.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_start_4 - ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0], #0x40 - ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [x0], #0x40 - ld1 {v8.2d, v9.2d}, [x0], #32 - ld1 {v10.2d}, [x0] + ld1 {V0.2D, V1.2D, V2.2D, V3.2D}, [x0], #0x40 + ld1 {V4.2D, V5.2D, V6.2D, V7.2D}, [x0], #0x40 + ld1 {V8.2D, V9.2D}, [x0], #32 + ld1 {V10.2D}, [x0] cmp w8, #1 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_done beq L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_start_1 cmp w8, #4 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b + mov V17.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w12, w12 - mov v15.s[3], w12 + mov V15.S[3], w12 rev w11, w11 - mov v16.s[3], w11 + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - ld1 {v18.16b}, [x3], #16 - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - ld1 {v19.16b}, [x3], #16 - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - ld1 {v20.16b}, [x3], #16 - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - ld1 {v21.16b}, [x3], #16 - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + ld1 {V18.16B}, [x3], #16 + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + ld1 {V19.16B}, [x3], #16 + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + ld1 {V20.16B}, [x3], #16 + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + ld1 {V21.16B}, [x3], #16 + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_end_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_both_4 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w12, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B add w11, w9, #3 - mov v16.16b, v13.16b + mov V16.16B, V13.16B add w9, w9, #4 - mov v17.16b, v13.16b - rbit v18.16b, v18.16b + mov V17.16B, V13.16B + rbit V18.16B, V18.16B rev w13, w13 - rbit v19.16b, v19.16b - mov v14.s[3], w13 + rbit V19.16B, V19.16B + mov V14.S[3], w13 rev w12, w12 - rbit v20.16b, v20.16b - mov v15.s[3], w12 + rbit V20.16B, V20.16B + mov V15.S[3], w12 rev w11, w11 - rbit v21.16b, v21.16b - mov v16.s[3], w11 + rbit V21.16B, V21.16B + mov V16.S[3], w11 rev w10, w9 - mov v17.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - eor v18.16b, v18.16b, v26.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b + mov V17.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + eor V18.16B, V18.16B, V26.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - aese v16.16b, v0.16b - aesmc v16.16b, v16.16b - ext v31.16b, v21.16b, v21.16b, #8 - aese v17.16b, v0.16b - aesmc v17.16b, v17.16b - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - eor v30.16b, v30.16b, v31.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + aese V16.16B, V0.16B + aesmc V16.16B, V16.16B + ext8 V31.16B, V21.16B, V21.16B, #8 + aese V17.16B, V0.16B + aesmc V17.16B, V17.16B + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + eor V30.16B, V30.16B, V31.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - aese v16.16b, v1.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v1.16b - aesmc v17.16b, v17.16b - ext v26.16b, v20.16b, v20.16b, #8 - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v2.16b - aesmc v16.16b, v16.16b - aese v17.16b, v2.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + aese V16.16B, V1.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V1.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V2.16B + aesmc V16.16B, V16.16B + aese V17.16B, V2.16B + aesmc V17.16B, V17.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - ext v26.16b, v19.16b, v19.16b, #8 - aese v16.16b, v3.16b - aesmc v16.16b, v16.16b - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - aese v17.16b, v3.16b - aesmc v17.16b, v17.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + aese V16.16B, V3.16B + aesmc V16.16B, V16.16B + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + aese V17.16B, V3.16B + aesmc V17.16B, V17.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - aese v16.16b, v4.16b - aesmc v16.16b, v16.16b - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - aese v17.16b, v4.16b - aesmc v17.16b, v17.16b - ext v26.16b, v18.16b, v18.16b, #8 - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - eor3 v30.16b, v30.16b, v26.16b, v31.16b - aese v16.16b, v5.16b - aesmc v16.16b, v16.16b - aese v17.16b, v5.16b - aesmc v17.16b, v17.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + aese V16.16B, V4.16B + aesmc V16.16B, V16.16B + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + aese V17.16B, V4.16B + aesmc V17.16B, V17.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + eor3 V30.16B, V30.16B, V26.16B, V31.16B + aese V16.16B, V5.16B + aesmc V16.16B, V16.16B + aese V17.16B, V5.16B + aesmc V17.16B, V17.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - pmull2 v29.1q, v29.2d, v27.2d - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b - eor3 v31.16b, v31.16b, v29.16b, v30.16b - aese v16.16b, v6.16b - aesmc v16.16b, v16.16b - pmull2 v30.1q, v31.2d, v27.2d - aese v17.16b, v6.16b - aesmc v17.16b, v17.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + pmull2 V29.1Q, V29.2D, V27.2D + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B + eor3 V31.16B, V31.16B, V29.16B, V30.16B + aese V16.16B, V6.16B + aesmc V16.16B, V16.16B + pmull2 V30.1Q, V31.2D, V27.2D + aese V17.16B, V6.16B + aesmc V17.16B, V17.16B subs w8, w8, #4 - mov v28.d[1], v31.d[0] - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - eor v26.16b, v28.16b, v30.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b + mov V28.D[1], V31.D[0] + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + eor V26.16B, V28.16B, V30.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B ; Done GHASH - aese v16.16b, v7.16b - aesmc v16.16b, v16.16b - aese v17.16b, v7.16b - aesmc v17.16b, v17.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x3], #0x40 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v16.16b, v8.16b - aesmc v16.16b, v16.16b - aese v17.16b, v8.16b - aesmc v17.16b, v17.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - aese v16.16b, v9.16b - eor v16.16b, v16.16b, v10.16b - aese v17.16b, v9.16b - eor v17.16b, v17.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - eor v16.16b, v16.16b, v20.16b - eor v17.16b, v17.16b, v21.16b + aese V16.16B, V7.16B + aesmc V16.16B, V16.16B + aese V17.16B, V7.16B + aesmc V17.16B, V17.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x3], #0x40 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V16.16B, V8.16B + aesmc V16.16B, V16.16B + aese V17.16B, V8.16B + aesmc V17.16B, V17.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + aese V16.16B, V9.16B + eor V16.16B, V16.16B, V10.16B + aese V17.16B, V9.16B + eor V17.16B, V17.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + eor V16.16B, V16.16B, V20.16B + eor V17.16B, V17.16B, V21.16B cmp w8, #4 - st1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x2], #0x40 + st1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x2], #0x40 bge L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_both_4 L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_end_4 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - rbit v20.16b, v20.16b - rbit v21.16b, v21.16b - eor v18.16b, v18.16b, v26.16b + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + rbit V20.16B, V20.16B + rbit V21.16B, V21.16B + eor V18.16B, V18.16B, V26.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v20.1d - pmull2 v26.1q, v23.2d, v20.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v20.16b, v20.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V20.1D + pmull2 V26.1Q, V23.2D, V20.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V20.16B, V20.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^3 - pmull v31.1q, v24.1d, v19.1d - pmull2 v26.1q, v24.2d, v19.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v19.16b, v19.16b, #8 - pmull v31.1q, v26.1d, v24.1d - pmull2 v26.1q, v26.2d, v24.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V24.1D, V19.1D + pmull2 V26.1Q, V24.2D, V19.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V19.16B, V19.16B, #8 + pmull V31.1Q, V26.1D, V24.1D + pmull2 V26.1Q, V26.2D, V24.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; X += C * H^4 - pmull v31.1q, v25.1d, v18.1d - pmull2 v26.1q, v25.2d, v18.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v18.16b, v18.16b, #8 - pmull v31.1q, v26.1d, v25.1d - pmull2 v26.1q, v26.2d, v25.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V25.1D, V18.1D + pmull2 V26.1Q, V25.2D, V18.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V18.16B, V18.16B, #8 + pmull V31.1Q, V26.1D, V25.1D + pmull2 V26.1Q, V26.2D, V25.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cmp w8, #1 beq L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_start_1 blt L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_done L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_start_2 add w13, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B add w9, w9, #2 - mov v15.16b, v13.16b + mov V15.16B, V13.16B rev w13, w13 - mov v14.s[3], w13 + mov V14.S[3], w13 rev w10, w9 - mov v15.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v15.16b, v0.16b - aesmc v15.16b, v15.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v15.16b, v1.16b - aesmc v15.16b, v15.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v15.16b, v2.16b - aesmc v15.16b, v15.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v15.16b, v3.16b - aesmc v15.16b, v15.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v15.16b, v4.16b - aesmc v15.16b, v15.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v15.16b, v5.16b - aesmc v15.16b, v15.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v15.16b, v6.16b - aesmc v15.16b, v15.16b + mov V15.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V15.16B, V0.16B + aesmc V15.16B, V15.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V15.16B, V1.16B + aesmc V15.16B, V15.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V15.16B, V2.16B + aesmc V15.16B, V15.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V15.16B, V3.16B + aesmc V15.16B, V15.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V15.16B, V4.16B + aesmc V15.16B, V15.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V15.16B, V5.16B + aesmc V15.16B, V15.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V15.16B, V6.16B + aesmc V15.16B, V15.16B subs w8, w8, #2 - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v15.16b, v7.16b - aesmc v15.16b, v15.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - ld1 {v18.16b}, [x3], #16 - aese v15.16b, v8.16b - aesmc v15.16b, v15.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v19.16b}, [x3], #16 - aese v15.16b, v9.16b - eor v15.16b, v15.16b, v10.16b - eor v14.16b, v14.16b, v18.16b - eor v15.16b, v15.16b, v19.16b - st1 {v14.16b, v15.16b}, [x2], #32 - rbit v18.16b, v18.16b - rbit v19.16b, v19.16b - eor v21.16b, v26.16b, v18.16b + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V15.16B, V7.16B + aesmc V15.16B, V15.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + ld1 {V18.16B}, [x3], #16 + aese V15.16B, V8.16B + aesmc V15.16B, V15.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V19.16B}, [x3], #16 + aese V15.16B, V9.16B + eor V15.16B, V15.16B, V10.16B + eor V14.16B, V14.16B, V18.16B + eor V15.16B, V15.16B, V19.16B + st1 {V14.16B, V15.16B}, [x2], #32 + rbit V18.16B, V18.16B + rbit V19.16B, V19.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v19.1d, v22.1d - pmull2 v29.1q, v19.2d, v22.2d - ext v31.16b, v19.16b, v19.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V19.1D, V22.1D + pmull2 V29.1Q, V19.2D, V22.2D + ext8 V31.16B, V19.16B, V19.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; X += C * H^2 - pmull v31.1q, v23.1d, v21.1d - pmull2 v26.1q, v23.2d, v21.2d - eor v28.16b, v28.16b, v31.16b - eor v29.16b, v29.16b, v26.16b - ext v26.16b, v21.16b, v21.16b, #8 - pmull v31.1q, v26.1d, v23.1d - pmull2 v26.1q, v26.2d, v23.2d - eor3 v30.16b, v30.16b, v26.16b, v31.16b + pmull V31.1Q, V23.1D, V21.1D + pmull2 V26.1Q, V23.2D, V21.2D + eor V28.16B, V28.16B, V31.16B + eor V29.16B, V29.16B, V26.16B + ext8 V26.16B, V21.16B, V21.16B, #8 + pmull V31.1Q, V26.1D, V23.1D + pmull2 V26.1Q, V26.2D, V23.2D + eor3 V30.16B, V30.16B, V26.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH cbz w8, L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_done L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_start_1 add w9, w9, #1 - mov v14.16b, v13.16b + mov V14.16B, V13.16B rev w10, w9 - mov v14.s[3], w10 - aese v14.16b, v0.16b - aesmc v14.16b, v14.16b - aese v14.16b, v1.16b - aesmc v14.16b, v14.16b - aese v14.16b, v2.16b - aesmc v14.16b, v14.16b - aese v14.16b, v3.16b - aesmc v14.16b, v14.16b - aese v14.16b, v4.16b - aesmc v14.16b, v14.16b - aese v14.16b, v5.16b - aesmc v14.16b, v14.16b - aese v14.16b, v6.16b - aesmc v14.16b, v14.16b - aese v14.16b, v7.16b - aesmc v14.16b, v14.16b - aese v14.16b, v8.16b - aesmc v14.16b, v14.16b - aese v14.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - ld1 {v18.16b}, [x3], #16 - eor v14.16b, v14.16b, v18.16b - st1 {v14.16b}, [x2], #16 - rbit v18.16b, v18.16b - eor v21.16b, v26.16b, v18.16b + mov V14.S[3], w10 + aese V14.16B, V0.16B + aesmc V14.16B, V14.16B + aese V14.16B, V1.16B + aesmc V14.16B, V14.16B + aese V14.16B, V2.16B + aesmc V14.16B, V14.16B + aese V14.16B, V3.16B + aesmc V14.16B, V14.16B + aese V14.16B, V4.16B + aesmc V14.16B, V14.16B + aese V14.16B, V5.16B + aesmc V14.16B, V14.16B + aese V14.16B, V6.16B + aesmc V14.16B, V14.16B + aese V14.16B, V7.16B + aesmc V14.16B, V14.16B + aese V14.16B, V8.16B + aesmc V14.16B, V14.16B + aese V14.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + ld1 {V18.16B}, [x3], #16 + eor V14.16B, V14.16B, V18.16B + st1 {V14.16B}, [x2], #16 + rbit V18.16B, V18.16B + eor V21.16B, V26.16B, V18.16B ; X = C * H^1 - pmull v28.1q, v21.1d, v22.1d - pmull2 v29.1q, v21.2d, v22.2d - ext v31.16b, v21.16b, v21.16b, #8 - pmull v30.1q, v31.1d, v22.1d - pmull2 v31.1q, v31.2d, v22.2d - eor v30.16b, v30.16b, v31.16b + pmull V28.1Q, V21.1D, V22.1D + pmull2 V29.1Q, V21.2D, V22.2D + ext8 V31.16B, V21.16B, V21.16B, #8 + pmull V30.1Q, V31.1D, V22.1D + pmull2 V31.1Q, V31.2D, V22.2D + eor V30.16B, V30.16B, V31.16B ; Reduce - ext v31.16b, v28.16b, v29.16b, #8 - pmull2 v29.1q, v29.2d, v27.2d - eor3 v31.16b, v31.16b, v29.16b, v30.16b - pmull2 v30.1q, v31.2d, v27.2d - mov v28.d[1], v31.d[0] - eor v26.16b, v28.16b, v30.16b + ext8 V31.16B, V28.16B, V29.16B, #8 + pmull2 V29.1Q, V29.2D, V27.2D + eor3 V31.16B, V31.16B, V29.16B, V30.16B + pmull2 V30.1Q, V31.2D, V27.2D + mov V28.D[1], V31.D[0] + eor V26.16B, V28.16B, V30.16B ; Done GHASH L_aes_gcm_decrypt_update_arm64_crypto_eor3_128_done ENDIF L_aes_gcm_decrypt_update_arm64_crypto_eor3_done rev w9, w9 - mov v13.s[3], w9 - st1 {v26.2d}, [x5] - st1 {v13.2d}, [x7] + mov V13.S[3], w9 + st1 {V26.2D}, [x5] + st1 {V13.2D}, [x7] ldr x17, [x29, #24] - ldp d8, d9, [x29, #32] - ldp d10, d11, [x29, #48] - ldp d12, d13, [x29, #64] - ldp d14, d15, [x29, #80] + ldp D8, D9, [x29, #32] + ldp D10, D11, [x29, #48] + ldp D12, D13, [x29, #64] + ldp D14, D15, [x29, #80] ldp x29, x30, [sp], #0x60 ret ENDP @@ -40624,42 +40624,42 @@ L_aes_gcm_decrypt_update_arm64_crypto_eor3_done ALIGN 4 EXPORT AES_GCM_decrypt_final_AARCH64_EOR3 AES_GCM_decrypt_final_AARCH64_EOR3 PROC - ld1 {v5.2d}, [x0] - movi v6.16b, #0x87 - ld1 {v4.2d}, [x5] - ushr v6.2d, v6.2d, #56 - ld1 {v7.2d}, [x6] + ld1 {V5.2D}, [x0] + movi V6.16B, #0x87 + ld1 {V4.2D}, [x5] + ushr V6.2D, V6.2D, #56 + ld1 {V7.2D}, [x6] ubfiz x4, x4, #3, #32 rbit x4, x4 - mov v0.d[0], x4 + mov V0.D[0], x4 ubfiz x3, x3, #3, #32 rbit x3, x3 - mov v0.d[1], x3 - eor v5.16b, v5.16b, v0.16b - pmull v0.1q, v5.1d, v4.1d - pmull2 v1.1q, v5.2d, v4.2d - ext v3.16b, v5.16b, v5.16b, #8 - pmull v2.1q, v3.1d, v4.1d - pmull2 v3.1q, v3.2d, v4.2d - eor v2.16b, v2.16b, v3.16b + mov V0.D[1], x3 + eor V5.16B, V5.16B, V0.16B + pmull V0.1Q, V5.1D, V4.1D + pmull2 V1.1Q, V5.2D, V4.2D + ext8 V3.16B, V5.16B, V5.16B, #8 + pmull V2.1Q, V3.1D, V4.1D + pmull2 V3.1Q, V3.2D, V4.2D + eor V2.16B, V2.16B, V3.16B ; Reduce - ext v3.16b, v0.16b, v1.16b, #8 - pmull2 v1.1q, v1.2d, v6.2d - eor3 v3.16b, v3.16b, v1.16b, v2.16b - pmull2 v2.1q, v3.2d, v6.2d - mov v0.d[1], v3.d[0] - eor v5.16b, v0.16b, v2.16b - rbit v5.16b, v5.16b - eor v5.16b, v5.16b, v7.16b + ext8 V3.16B, V0.16B, V1.16B, #8 + pmull2 V1.1Q, V1.2D, V6.2D + eor3 V3.16B, V3.16B, V1.16B, V2.16B + pmull2 V2.1Q, V3.2D, V6.2D + mov V0.D[1], V3.D[0] + eor V5.16B, V0.16B, V2.16B + rbit V5.16B, V5.16B + eor V5.16B, V5.16B, V7.16B cmp w2, #16 blt L_aes_gcm_decrypt_final_arm64_crypto_eor3_part_tag - ld1 {v0.16b}, [x1] + ld1 {V0.16B}, [x1] b L_aes_gcm_decrypt_final_arm64_crypto_eor3_tag_loaded L_aes_gcm_decrypt_final_arm64_crypto_eor3_part_tag ubfiz x2, x2, #0, #32 - eor v0.16b, v0.16b, v0.16b + eor V0.16B, V0.16B, V0.16B mov x10, x2 - st1 {v0.2d}, [x0] + st1 {V0.2D}, [x0] cmp x10, #8 blt L_aes_gcm_decrypt_final_arm64_crypto_eor3_tag_start_dw ldr x9, [x1], #8 @@ -40685,9 +40685,9 @@ L_aes_gcm_decrypt_final_arm64_crypto_eor3_tag_start_byte bne L_aes_gcm_decrypt_final_arm64_crypto_eor3_tag_start_byte L_aes_gcm_decrypt_final_arm64_crypto_eor3_tag_end_bytes sub x0, x0, x2 - ld1 {v0.2d}, [x0] + ld1 {V0.2D}, [x0] mov x10, #16 - st1 {v5.2d}, [x0] + st1 {V5.2D}, [x0] sub x10, x10, x2 add x0, x0, x2 L_aes_gcm_decrypt_final_arm64_crypto_eor3_calc_tag_byte @@ -40695,11 +40695,11 @@ L_aes_gcm_decrypt_final_arm64_crypto_eor3_calc_tag_byte subs x10, x10, #1 bne L_aes_gcm_decrypt_final_arm64_crypto_eor3_calc_tag_byte subs x0, x0, #16 - ld1 {v5.2d}, [x0] + ld1 {V5.2D}, [x0] L_aes_gcm_decrypt_final_arm64_crypto_eor3_tag_loaded - eor v0.16b, v0.16b, v5.16b - mov x9, v0.d[0] - mov x10, v0.d[1] + eor V0.16B, V0.16B, V5.16B + mov x9, V0.D[0] + mov x10, V0.D[1] mov w11, #-180 orr x9, x9, x10 cmp x9, #0 @@ -40720,9 +40720,9 @@ AES_XTS_encrypt_AARCH64 PROC stp x29, x30, [sp, #-48]! add x29, sp, #0 stp x17, x19, [x29, #24] - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x5], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x5], #0x40 - ld1 {v4.16b}, [x3] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x5], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x5], #0x40 + ld1 {V4.16B}, [x3] lsr w8, w2, #4 and w2, w2, #15 mov x19, #0x87 @@ -40731,38 +40731,38 @@ AES_XTS_encrypt_AARCH64 PROC bgt L_aes_xts_encrypt_arm64_crypto_start_256 ; AES_XTS_192 IF :LNOT::DEF:NO_AES_192 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x5], #0x40 - ld1 {v28.2d}, [x5] - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v4.16b, v25.16b - aesmc v4.16b, v4.16b - aese v4.16b, v26.16b - aesmc v4.16b, v4.16b - aese v4.16b, v27.16b - eor v4.16b, v4.16b, v28.16b - mov x10, v4.d[0] - mov x11, v4.d[1] - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x4], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x4], #0x40 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x4], #0x40 - ld1 {v28.2d}, [x4] + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x5], #0x40 + ld1 {V28.2D}, [x5] + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V4.16B, V25.16B + aesmc V4.16B, V4.16B + aese V4.16B, V26.16B + aesmc V4.16B, V4.16B + aese V4.16B, V27.16B + eor V4.16B, V4.16B, V28.16B + mov x10, V4.D[0] + mov x11, V4.D[1] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x4], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x4], #0x40 + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x4], #0x40 + ld1 {V28.2D}, [x4] and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 @@ -40775,243 +40775,243 @@ AES_XTS_encrypt_AARCH64 PROC cmp w8, #4 blt L_aes_xts_encrypt_arm64_crypto_192_start_2 L_aes_xts_encrypt_arm64_crypto_192_start_4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - mov v5.d[0], x12 - mov v5.d[1], x13 - mov v6.d[0], x14 - mov v6.d[1], x15 - mov v7.d[0], x16 - mov v7.d[1], x17 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + mov V5.D[0], x12 + mov V5.D[1], x13 + mov V6.D[0], x14 + mov V6.D[1], x15 + mov V7.D[0], x16 + mov V7.D[1], x17 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x17, asr 63 - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B extr x11, x17, x16, #63 - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B eor x10, x9, x16, lsl 1 - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B and x9, x19, x11, asr 63 - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B extr x13, x11, x10, #63 - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B eor x12, x9, x10, lsl 1 - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B and x9, x19, x13, asr 63 - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B extr x15, x13, x12, #63 - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B eor x14, x9, x12, lsl 1 - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B and x9, x19, x15, asr 63 - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B extr x17, x15, x14, #63 - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B eor x16, x9, x14, lsl 1 - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v2.16b, v25.16b - aesmc v2.16b, v2.16b - aese v3.16b, v25.16b - aesmc v3.16b, v3.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v2.16b, v26.16b - aesmc v2.16b, v2.16b - aese v3.16b, v26.16b - aesmc v3.16b, v3.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aese v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b - aese v2.16b, v27.16b - eor v2.16b, v2.16b, v28.16b - aese v3.16b, v27.16b - eor v3.16b, v3.16b, v28.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V2.16B, V25.16B + aesmc V2.16B, V2.16B + aese V3.16B, V25.16B + aesmc V3.16B, V3.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V2.16B, V26.16B + aesmc V2.16B, V2.16B + aese V3.16B, V26.16B + aesmc V3.16B, V3.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aese V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B + aese V2.16B, V27.16B + eor V2.16B, V2.16B, V28.16B + aese V3.16B, V27.16B + eor V3.16B, V3.16B, V28.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w8, #4 bge L_aes_xts_encrypt_arm64_crypto_192_start_4 L_aes_xts_encrypt_arm64_crypto_192_start_2 cmp w8, #2 blt L_aes_xts_encrypt_arm64_crypto_192_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - mov v5.d[0], x12 - mov v5.d[1], x13 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + mov V5.D[0], x12 + mov V5.D[1], x13 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x13, asr 63 - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B extr x11, x13, x12, #63 - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B eor x10, x9, x12, lsl 1 - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B and x9, x19, x11, asr 63 - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B extr x13, x11, x10, #63 - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B eor x12, x9, x10, lsl 1 - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aese v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aese V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_xts_encrypt_arm64_crypto_192_start_1 cbz w8, L_aes_xts_encrypt_arm64_crypto_192_done - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v4.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V4.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x11, asr 63 - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B extr x11, x11, x10, #63 - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B eor x10, x9, x10, lsl 1 - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - eor v0.16b, v0.16b, v4.16b - mov v4.d[0], x10 - mov v4.d[1], x11 - st1 {v0.16b}, [x1], #16 + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + eor V0.16B, V0.16B, V4.16B + mov V4.D[0], x10 + mov V4.D[1], x11 + st1 {V0.16B}, [x1], #16 L_aes_xts_encrypt_arm64_crypto_192_done cbz w2, L_aes_xts_encrypt_arm64_crypto_192_partial_done sub x1, x1, #16 - ld1 {v0.16b}, [x1], #16 - st1 {v0.2d}, [x6] + ld1 {V0.16B}, [x1], #16 + st1 {V0.2D}, [x6] mov w9, w2 L_aes_xts_encrypt_arm64_crypto_192_start_byte ldrb w12, [x6] @@ -41023,78 +41023,78 @@ L_aes_xts_encrypt_arm64_crypto_192_start_byte sub x1, x1, x2 sub x6, x6, x2 sub x1, x1, #16 - ld1 {v0.2d}, [x6] - eor v0.16b, v0.16b, v4.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - eor v0.16b, v0.16b, v4.16b - st1 {v0.16b}, [x1] + ld1 {V0.2D}, [x6] + eor V0.16B, V0.16B, V4.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + eor V0.16B, V0.16B, V4.16B + st1 {V0.16B}, [x1] L_aes_xts_encrypt_arm64_crypto_192_partial_done ENDIF b L_aes_xts_encrypt_arm64_crypto_done ; AES_XTS_256 L_aes_xts_encrypt_arm64_crypto_start_256 IF :LNOT::DEF:NO_AES_256 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x5], #0x40 - ld1 {v28.2d, v29.2d}, [x5], #32 - ld1 {v30.2d}, [x5] - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v4.16b, v25.16b - aesmc v4.16b, v4.16b - aese v4.16b, v26.16b - aesmc v4.16b, v4.16b - aese v4.16b, v27.16b - aesmc v4.16b, v4.16b - aese v4.16b, v28.16b - aesmc v4.16b, v4.16b - aese v4.16b, v29.16b - eor v4.16b, v4.16b, v30.16b - mov x10, v4.d[0] - mov x11, v4.d[1] - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x4], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x4], #0x40 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x4], #0x40 - ld1 {v28.2d, v29.2d}, [x4], #32 - ld1 {v30.2d}, [x4] + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x5], #0x40 + ld1 {V28.2D, V29.2D}, [x5], #32 + ld1 {V30.2D}, [x5] + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V4.16B, V25.16B + aesmc V4.16B, V4.16B + aese V4.16B, V26.16B + aesmc V4.16B, V4.16B + aese V4.16B, V27.16B + aesmc V4.16B, V4.16B + aese V4.16B, V28.16B + aesmc V4.16B, V4.16B + aese V4.16B, V29.16B + eor V4.16B, V4.16B, V30.16B + mov x10, V4.D[0] + mov x11, V4.D[1] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x4], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x4], #0x40 + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x4], #0x40 + ld1 {V28.2D, V29.2D}, [x4], #32 + ld1 {V30.2D}, [x4] and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 @@ -41107,271 +41107,271 @@ L_aes_xts_encrypt_arm64_crypto_start_256 cmp w8, #4 blt L_aes_xts_encrypt_arm64_crypto_256_start_2 L_aes_xts_encrypt_arm64_crypto_256_start_4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - mov v5.d[0], x12 - mov v5.d[1], x13 - mov v6.d[0], x14 - mov v6.d[1], x15 - mov v7.d[0], x16 - mov v7.d[1], x17 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + mov V5.D[0], x12 + mov V5.D[1], x13 + mov V6.D[0], x14 + mov V6.D[1], x15 + mov V7.D[0], x16 + mov V7.D[1], x17 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x17, asr 63 - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B extr x11, x17, x16, #63 - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B eor x10, x9, x16, lsl 1 - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B and x9, x19, x11, asr 63 - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B extr x13, x11, x10, #63 - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B eor x12, x9, x10, lsl 1 - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B and x9, x19, x13, asr 63 - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B extr x15, x13, x12, #63 - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B eor x14, x9, x12, lsl 1 - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B and x9, x19, x15, asr 63 - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B extr x17, x15, x14, #63 - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B eor x16, x9, x14, lsl 1 - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v2.16b, v25.16b - aesmc v2.16b, v2.16b - aese v3.16b, v25.16b - aesmc v3.16b, v3.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v2.16b, v26.16b - aesmc v2.16b, v2.16b - aese v3.16b, v26.16b - aesmc v3.16b, v3.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v1.16b, v27.16b - aesmc v1.16b, v1.16b - aese v2.16b, v27.16b - aesmc v2.16b, v2.16b - aese v3.16b, v27.16b - aesmc v3.16b, v3.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v1.16b, v28.16b - aesmc v1.16b, v1.16b - aese v2.16b, v28.16b - aesmc v2.16b, v2.16b - aese v3.16b, v28.16b - aesmc v3.16b, v3.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aese v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b - aese v2.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - aese v3.16b, v29.16b - eor v3.16b, v3.16b, v30.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V2.16B, V25.16B + aesmc V2.16B, V2.16B + aese V3.16B, V25.16B + aesmc V3.16B, V3.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V2.16B, V26.16B + aesmc V2.16B, V2.16B + aese V3.16B, V26.16B + aesmc V3.16B, V3.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V1.16B, V27.16B + aesmc V1.16B, V1.16B + aese V2.16B, V27.16B + aesmc V2.16B, V2.16B + aese V3.16B, V27.16B + aesmc V3.16B, V3.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V1.16B, V28.16B + aesmc V1.16B, V1.16B + aese V2.16B, V28.16B + aesmc V2.16B, V2.16B + aese V3.16B, V28.16B + aesmc V3.16B, V3.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aese V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B + aese V2.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + aese V3.16B, V29.16B + eor V3.16B, V3.16B, V30.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w8, #4 bge L_aes_xts_encrypt_arm64_crypto_256_start_4 L_aes_xts_encrypt_arm64_crypto_256_start_2 cmp w8, #2 blt L_aes_xts_encrypt_arm64_crypto_256_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - mov v5.d[0], x12 - mov v5.d[1], x13 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + mov V5.D[0], x12 + mov V5.D[1], x13 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x13, asr 63 - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B extr x11, x13, x12, #63 - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B eor x10, x9, x12, lsl 1 - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B and x9, x19, x11, asr 63 - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B extr x13, x11, x10, #63 - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B eor x12, x9, x10, lsl 1 - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v1.16b, v25.16b - aesmc v1.16b, v1.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v1.16b, v26.16b - aesmc v1.16b, v1.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v1.16b, v27.16b - aesmc v1.16b, v1.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v1.16b, v28.16b - aesmc v1.16b, v1.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aese v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V1.16B, V25.16B + aesmc V1.16B, V1.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V1.16B, V26.16B + aesmc V1.16B, V1.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V1.16B, V27.16B + aesmc V1.16B, V1.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V1.16B, V28.16B + aesmc V1.16B, V1.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aese V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_xts_encrypt_arm64_crypto_256_start_1 cbz w8, L_aes_xts_encrypt_arm64_crypto_256_done - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v4.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V4.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x11, asr 63 - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B extr x11, x11, x10, #63 - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B eor x10, x9, x10, lsl 1 - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - eor v0.16b, v0.16b, v4.16b - mov v4.d[0], x10 - mov v4.d[1], x11 - st1 {v0.16b}, [x1], #16 + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + eor V0.16B, V0.16B, V4.16B + mov V4.D[0], x10 + mov V4.D[1], x11 + st1 {V0.16B}, [x1], #16 L_aes_xts_encrypt_arm64_crypto_256_done cbz w2, L_aes_xts_encrypt_arm64_crypto_256_partial_done sub x1, x1, #16 - ld1 {v0.16b}, [x1], #16 - st1 {v0.2d}, [x6] + ld1 {V0.16B}, [x1], #16 + st1 {V0.2D}, [x6] mov w9, w2 L_aes_xts_encrypt_arm64_crypto_256_start_byte ldrb w12, [x6] @@ -41383,72 +41383,72 @@ L_aes_xts_encrypt_arm64_crypto_256_start_byte sub x1, x1, x2 sub x6, x6, x2 sub x1, x1, #16 - ld1 {v0.2d}, [x6] - eor v0.16b, v0.16b, v4.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - aesmc v0.16b, v0.16b - aese v0.16b, v26.16b - aesmc v0.16b, v0.16b - aese v0.16b, v27.16b - aesmc v0.16b, v0.16b - aese v0.16b, v28.16b - aesmc v0.16b, v0.16b - aese v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - eor v0.16b, v0.16b, v4.16b - st1 {v0.16b}, [x1] + ld1 {V0.2D}, [x6] + eor V0.16B, V0.16B, V4.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + aesmc V0.16B, V0.16B + aese V0.16B, V26.16B + aesmc V0.16B, V0.16B + aese V0.16B, V27.16B + aesmc V0.16B, V0.16B + aese V0.16B, V28.16B + aesmc V0.16B, V0.16B + aese V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + eor V0.16B, V0.16B, V4.16B + st1 {V0.16B}, [x1] L_aes_xts_encrypt_arm64_crypto_256_partial_done ENDIF b L_aes_xts_encrypt_arm64_crypto_done ; AES_XTS_128 L_aes_xts_encrypt_arm64_crypto_start_128 IF :LNOT::DEF:NO_AES_128 - ld1 {v24.2d, v25.2d}, [x5], #32 - ld1 {v26.2d}, [x5] - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v4.16b, v25.16b - eor v4.16b, v4.16b, v26.16b - mov x10, v4.d[0] - mov x11, v4.d[1] - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x4], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x4], #0x40 - ld1 {v24.2d, v25.2d}, [x4], #32 - ld1 {v26.2d}, [x4] + ld1 {V24.2D, V25.2D}, [x5], #32 + ld1 {V26.2D}, [x5] + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V4.16B, V25.16B + eor V4.16B, V4.16B, V26.16B + mov x10, V4.D[0] + mov x11, V4.D[1] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x4], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x4], #0x40 + ld1 {V24.2D, V25.2D}, [x4], #32 + ld1 {V26.2D}, [x4] and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 @@ -41461,215 +41461,215 @@ L_aes_xts_encrypt_arm64_crypto_start_128 cmp w8, #4 blt L_aes_xts_encrypt_arm64_crypto_128_start_2 L_aes_xts_encrypt_arm64_crypto_128_start_4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - mov v5.d[0], x12 - mov v5.d[1], x13 - mov v6.d[0], x14 - mov v6.d[1], x15 - mov v7.d[0], x16 - mov v7.d[1], x17 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + mov V5.D[0], x12 + mov V5.D[1], x13 + mov V6.D[0], x14 + mov V6.D[1], x15 + mov V7.D[0], x16 + mov V7.D[1], x17 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x17, asr 63 - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v2.16b, v16.16b - aesmc v2.16b, v2.16b + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V2.16B, V16.16B + aesmc V2.16B, V2.16B extr x11, x17, x16, #63 - aese v3.16b, v16.16b - aesmc v3.16b, v3.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b + aese V3.16B, V16.16B + aesmc V3.16B, V3.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B eor x10, x9, x16, lsl 1 - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v2.16b, v17.16b - aesmc v2.16b, v2.16b + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V2.16B, V17.16B + aesmc V2.16B, V2.16B and x9, x19, x11, asr 63 - aese v3.16b, v17.16b - aesmc v3.16b, v3.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V3.16B, V17.16B + aesmc V3.16B, V3.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B extr x13, x11, x10, #63 - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v2.16b, v18.16b - aesmc v2.16b, v2.16b + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V2.16B, V18.16B + aesmc V2.16B, V2.16B eor x12, x9, x10, lsl 1 - aese v3.16b, v18.16b - aesmc v3.16b, v3.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b + aese V3.16B, V18.16B + aesmc V3.16B, V3.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B and x9, x19, x13, asr 63 - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v2.16b, v19.16b - aesmc v2.16b, v2.16b + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V2.16B, V19.16B + aesmc V2.16B, V2.16B extr x15, x13, x12, #63 - aese v3.16b, v19.16b - aesmc v3.16b, v3.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V3.16B, V19.16B + aesmc V3.16B, V3.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B eor x14, x9, x12, lsl 1 - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v2.16b, v20.16b - aesmc v2.16b, v2.16b + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V2.16B, V20.16B + aesmc V2.16B, V2.16B and x9, x19, x15, asr 63 - aese v3.16b, v20.16b - aesmc v3.16b, v3.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b + aese V3.16B, V20.16B + aesmc V3.16B, V3.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B extr x17, x15, x14, #63 - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v2.16b, v21.16b - aesmc v2.16b, v2.16b + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V2.16B, V21.16B + aesmc V2.16B, V2.16B eor x16, x9, x14, lsl 1 - aese v3.16b, v21.16b - aesmc v3.16b, v3.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v2.16b, v22.16b - aesmc v2.16b, v2.16b - aese v3.16b, v22.16b - aesmc v3.16b, v3.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v2.16b, v23.16b - aesmc v2.16b, v2.16b - aese v3.16b, v23.16b - aesmc v3.16b, v3.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v2.16b, v24.16b - aesmc v2.16b, v2.16b - aese v3.16b, v24.16b - aesmc v3.16b, v3.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aese v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b - aese v2.16b, v25.16b - eor v2.16b, v2.16b, v26.16b - aese v3.16b, v25.16b - eor v3.16b, v3.16b, v26.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aese V3.16B, V21.16B + aesmc V3.16B, V3.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V2.16B, V22.16B + aesmc V2.16B, V2.16B + aese V3.16B, V22.16B + aesmc V3.16B, V3.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V2.16B, V23.16B + aesmc V2.16B, V2.16B + aese V3.16B, V23.16B + aesmc V3.16B, V3.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V2.16B, V24.16B + aesmc V2.16B, V2.16B + aese V3.16B, V24.16B + aesmc V3.16B, V3.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aese V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B + aese V2.16B, V25.16B + eor V2.16B, V2.16B, V26.16B + aese V3.16B, V25.16B + eor V3.16B, V3.16B, V26.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w8, #4 bge L_aes_xts_encrypt_arm64_crypto_128_start_4 L_aes_xts_encrypt_arm64_crypto_128_start_2 cmp w8, #2 blt L_aes_xts_encrypt_arm64_crypto_128_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - mov v5.d[0], x12 - mov v5.d[1], x13 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + mov V5.D[0], x12 + mov V5.D[1], x13 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x13, asr 63 - aese v1.16b, v16.16b - aesmc v1.16b, v1.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b + aese V1.16B, V16.16B + aesmc V1.16B, V1.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B extr x11, x13, x12, #63 - aese v1.16b, v17.16b - aesmc v1.16b, v1.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V1.16B, V17.16B + aesmc V1.16B, V1.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B eor x10, x9, x12, lsl 1 - aese v1.16b, v18.16b - aesmc v1.16b, v1.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b + aese V1.16B, V18.16B + aesmc V1.16B, V1.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B and x9, x19, x11, asr 63 - aese v1.16b, v19.16b - aesmc v1.16b, v1.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V1.16B, V19.16B + aesmc V1.16B, V1.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B extr x13, x11, x10, #63 - aese v1.16b, v20.16b - aesmc v1.16b, v1.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b + aese V1.16B, V20.16B + aesmc V1.16B, V1.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B eor x12, x9, x10, lsl 1 - aese v1.16b, v21.16b - aesmc v1.16b, v1.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v1.16b, v22.16b - aesmc v1.16b, v1.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v1.16b, v23.16b - aesmc v1.16b, v1.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v1.16b, v24.16b - aesmc v1.16b, v1.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aese v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aese V1.16B, V21.16B + aesmc V1.16B, V1.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V1.16B, V22.16B + aesmc V1.16B, V1.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V1.16B, V23.16B + aesmc V1.16B, V1.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V1.16B, V24.16B + aesmc V1.16B, V1.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aese V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_xts_encrypt_arm64_crypto_128_start_1 cbz w8, L_aes_xts_encrypt_arm64_crypto_128_done - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v4.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V4.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B and x9, x19, x11, asr 63 - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B extr x11, x11, x10, #63 - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B eor x10, x9, x10, lsl 1 - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - eor v0.16b, v0.16b, v4.16b - mov v4.d[0], x10 - mov v4.d[1], x11 - st1 {v0.16b}, [x1], #16 + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + eor V0.16B, V0.16B, V4.16B + mov V4.D[0], x10 + mov V4.D[1], x11 + st1 {V0.16B}, [x1], #16 L_aes_xts_encrypt_arm64_crypto_128_done cbz w2, L_aes_xts_encrypt_arm64_crypto_128_partial_done sub x1, x1, #16 - ld1 {v0.16b}, [x1], #16 - st1 {v0.2d}, [x6] + ld1 {V0.16B}, [x1], #16 + st1 {V0.2D}, [x6] mov w9, w2 L_aes_xts_encrypt_arm64_crypto_128_start_byte ldrb w12, [x6] @@ -41681,30 +41681,30 @@ L_aes_xts_encrypt_arm64_crypto_128_start_byte sub x1, x1, x2 sub x6, x6, x2 sub x1, x1, #16 - ld1 {v0.2d}, [x6] - eor v0.16b, v0.16b, v4.16b - aese v0.16b, v16.16b - aesmc v0.16b, v0.16b - aese v0.16b, v17.16b - aesmc v0.16b, v0.16b - aese v0.16b, v18.16b - aesmc v0.16b, v0.16b - aese v0.16b, v19.16b - aesmc v0.16b, v0.16b - aese v0.16b, v20.16b - aesmc v0.16b, v0.16b - aese v0.16b, v21.16b - aesmc v0.16b, v0.16b - aese v0.16b, v22.16b - aesmc v0.16b, v0.16b - aese v0.16b, v23.16b - aesmc v0.16b, v0.16b - aese v0.16b, v24.16b - aesmc v0.16b, v0.16b - aese v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - eor v0.16b, v0.16b, v4.16b - st1 {v0.16b}, [x1] + ld1 {V0.2D}, [x6] + eor V0.16B, V0.16B, V4.16B + aese V0.16B, V16.16B + aesmc V0.16B, V0.16B + aese V0.16B, V17.16B + aesmc V0.16B, V0.16B + aese V0.16B, V18.16B + aesmc V0.16B, V0.16B + aese V0.16B, V19.16B + aesmc V0.16B, V0.16B + aese V0.16B, V20.16B + aesmc V0.16B, V0.16B + aese V0.16B, V21.16B + aesmc V0.16B, V0.16B + aese V0.16B, V22.16B + aesmc V0.16B, V0.16B + aese V0.16B, V23.16B + aesmc V0.16B, V0.16B + aese V0.16B, V24.16B + aesmc V0.16B, V0.16B + aese V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + eor V0.16B, V0.16B, V4.16B + st1 {V0.16B}, [x1] L_aes_xts_encrypt_arm64_crypto_128_partial_done ENDIF L_aes_xts_encrypt_arm64_crypto_done @@ -41720,9 +41720,9 @@ AES_XTS_decrypt_AARCH64 PROC stp x29, x30, [sp, #-48]! add x29, sp, #0 stp x17, x19, [x29, #24] - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x5], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x5], #0x40 - ld1 {v4.16b}, [x3] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x5], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x5], #0x40 + ld1 {V4.16B}, [x3] lsr w8, w2, #4 ands w2, w2, #15 mov x19, #0x87 @@ -41733,38 +41733,38 @@ AES_XTS_decrypt_AARCH64 PROC bgt L_aes_xts_decrypt_arm64_crypto_start_256 ; AES_XTS_192 IF :LNOT::DEF:NO_AES_192 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x5], #0x40 - ld1 {v28.2d}, [x5] - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v4.16b, v25.16b - aesmc v4.16b, v4.16b - aese v4.16b, v26.16b - aesmc v4.16b, v4.16b - aese v4.16b, v27.16b - eor v4.16b, v4.16b, v28.16b - mov x10, v4.d[0] - mov x11, v4.d[1] - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x4], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x4], #0x40 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x4], #0x40 - ld1 {v28.2d}, [x4] + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x5], #0x40 + ld1 {V28.2D}, [x5] + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V4.16B, V25.16B + aesmc V4.16B, V4.16B + aese V4.16B, V26.16B + aesmc V4.16B, V4.16B + aese V4.16B, V27.16B + eor V4.16B, V4.16B, V28.16B + mov x10, V4.D[0] + mov x11, V4.D[1] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x4], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x4], #0x40 + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x4], #0x40 + ld1 {V28.2D}, [x4] and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 @@ -41777,273 +41777,273 @@ AES_XTS_decrypt_AARCH64 PROC cmp w8, #4 blt L_aes_xts_decrypt_arm64_crypto_192_start_2 L_aes_xts_decrypt_arm64_crypto_192_start_4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - mov v5.d[0], x12 - mov v5.d[1], x13 - mov v6.d[0], x14 - mov v6.d[1], x15 - mov v7.d[0], x16 - mov v7.d[1], x17 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + mov V5.D[0], x12 + mov V5.D[1], x13 + mov V6.D[0], x14 + mov V6.D[1], x15 + mov V7.D[0], x16 + mov V7.D[1], x17 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x17, asr 63 - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B extr x11, x17, x16, #63 - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B eor x10, x9, x16, lsl 1 - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B and x9, x19, x11, asr 63 - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B extr x13, x11, x10, #63 - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B eor x12, x9, x10, lsl 1 - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B and x9, x19, x13, asr 63 - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B extr x15, x13, x12, #63 - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B eor x14, x9, x12, lsl 1 - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B and x9, x19, x15, asr 63 - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B extr x17, x15, x14, #63 - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B eor x16, x9, x14, lsl 1 - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v25.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v25.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v26.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v26.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aesd v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b - aesd v2.16b, v27.16b - eor v2.16b, v2.16b, v28.16b - aesd v3.16b, v27.16b - eor v3.16b, v3.16b, v28.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V25.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V25.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V26.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V26.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aesd V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B + aesd V2.16B, V27.16B + eor V2.16B, V2.16B, V28.16B + aesd V3.16B, V27.16B + eor V3.16B, V3.16B, V28.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w8, #4 bge L_aes_xts_decrypt_arm64_crypto_192_start_4 L_aes_xts_decrypt_arm64_crypto_192_start_2 cmp w8, #2 blt L_aes_xts_decrypt_arm64_crypto_192_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - mov v5.d[0], x12 - mov v5.d[1], x13 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + mov V5.D[0], x12 + mov V5.D[1], x13 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x13, asr 63 - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B extr x11, x13, x12, #63 - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B eor x10, x9, x12, lsl 1 - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B and x9, x19, x11, asr 63 - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B extr x13, x11, x10, #63 - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B eor x12, x9, x10, lsl 1 - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - aesd v1.16b, v27.16b - eor v1.16b, v1.16b, v28.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + aesd V1.16B, V27.16B + eor V1.16B, V1.16B, V28.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_xts_decrypt_arm64_crypto_192_start_1 cbz w8, L_aes_xts_decrypt_arm64_crypto_192_done - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v4.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V4.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x11, asr 63 - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B extr x11, x11, x10, #63 - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B eor x10, x9, x10, lsl 1 - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - eor v0.16b, v0.16b, v4.16b - mov v4.d[0], x10 - mov v4.d[1], x11 - st1 {v0.16b}, [x1], #16 + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + eor V0.16B, V0.16B, V4.16B + mov V4.D[0], x10 + mov V4.D[1], x11 + st1 {V0.16B}, [x1], #16 L_aes_xts_decrypt_arm64_crypto_192_done cbz w2, L_aes_xts_decrypt_arm64_crypto_192_partial_done and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 - mov v5.d[0], x12 - mov v5.d[1], x13 - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v5.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - eor v0.16b, v0.16b, v5.16b - st1 {v0.2d}, [x6] + mov V5.D[0], x12 + mov V5.D[1], x13 + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V5.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + eor V0.16B, V0.16B, V5.16B + st1 {V0.2D}, [x6] add x1, x1, #16 mov w9, w2 L_aes_xts_decrypt_arm64_crypto_192_start_byte @@ -42056,78 +42056,78 @@ L_aes_xts_decrypt_arm64_crypto_192_start_byte sub x1, x1, x2 sub x6, x6, x2 sub x1, x1, #16 - ld1 {v0.2d}, [x6] - eor v0.16b, v0.16b, v4.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v27.16b - eor v0.16b, v0.16b, v28.16b - eor v0.16b, v0.16b, v4.16b - st1 {v0.16b}, [x1] + ld1 {V0.2D}, [x6] + eor V0.16B, V0.16B, V4.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V27.16B + eor V0.16B, V0.16B, V28.16B + eor V0.16B, V0.16B, V4.16B + st1 {V0.16B}, [x1] L_aes_xts_decrypt_arm64_crypto_192_partial_done ENDIF b L_aes_xts_decrypt_arm64_crypto_done ; AES_XTS_256 L_aes_xts_decrypt_arm64_crypto_start_256 IF :LNOT::DEF:NO_AES_256 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x5], #0x40 - ld1 {v28.2d, v29.2d}, [x5], #32 - ld1 {v30.2d}, [x5] - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v4.16b, v25.16b - aesmc v4.16b, v4.16b - aese v4.16b, v26.16b - aesmc v4.16b, v4.16b - aese v4.16b, v27.16b - aesmc v4.16b, v4.16b - aese v4.16b, v28.16b - aesmc v4.16b, v4.16b - aese v4.16b, v29.16b - eor v4.16b, v4.16b, v30.16b - mov x10, v4.d[0] - mov x11, v4.d[1] - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x4], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x4], #0x40 - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x4], #0x40 - ld1 {v28.2d, v29.2d}, [x4], #32 - ld1 {v30.2d}, [x4] + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x5], #0x40 + ld1 {V28.2D, V29.2D}, [x5], #32 + ld1 {V30.2D}, [x5] + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V4.16B, V25.16B + aesmc V4.16B, V4.16B + aese V4.16B, V26.16B + aesmc V4.16B, V4.16B + aese V4.16B, V27.16B + aesmc V4.16B, V4.16B + aese V4.16B, V28.16B + aesmc V4.16B, V4.16B + aese V4.16B, V29.16B + eor V4.16B, V4.16B, V30.16B + mov x10, V4.D[0] + mov x11, V4.D[1] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x4], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x4], #0x40 + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x4], #0x40 + ld1 {V28.2D, V29.2D}, [x4], #32 + ld1 {V30.2D}, [x4] and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 @@ -42140,305 +42140,305 @@ L_aes_xts_decrypt_arm64_crypto_start_256 cmp w8, #4 blt L_aes_xts_decrypt_arm64_crypto_256_start_2 L_aes_xts_decrypt_arm64_crypto_256_start_4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - mov v5.d[0], x12 - mov v5.d[1], x13 - mov v6.d[0], x14 - mov v6.d[1], x15 - mov v7.d[0], x16 - mov v7.d[1], x17 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + mov V5.D[0], x12 + mov V5.D[1], x13 + mov V6.D[0], x14 + mov V6.D[1], x15 + mov V7.D[0], x16 + mov V7.D[1], x17 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x17, asr 63 - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B extr x11, x17, x16, #63 - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B eor x10, x9, x16, lsl 1 - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B and x9, x19, x11, asr 63 - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B extr x13, x11, x10, #63 - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B eor x12, x9, x10, lsl 1 - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B and x9, x19, x13, asr 63 - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B extr x15, x13, x12, #63 - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B eor x14, x9, x12, lsl 1 - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B and x9, x19, x15, asr 63 - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B extr x17, x15, x14, #63 - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B eor x16, x9, x14, lsl 1 - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v25.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v25.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v26.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v26.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v27.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v27.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v27.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v28.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v28.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v28.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aesd v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b - aesd v2.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - aesd v3.16b, v29.16b - eor v3.16b, v3.16b, v30.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V25.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V25.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V26.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V26.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V27.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V27.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V27.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V28.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V28.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V28.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aesd V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B + aesd V2.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + aesd V3.16B, V29.16B + eor V3.16B, V3.16B, V30.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w8, #4 bge L_aes_xts_decrypt_arm64_crypto_256_start_4 L_aes_xts_decrypt_arm64_crypto_256_start_2 cmp w8, #2 blt L_aes_xts_decrypt_arm64_crypto_256_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - mov v5.d[0], x12 - mov v5.d[1], x13 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + mov V5.D[0], x12 + mov V5.D[1], x13 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x13, asr 63 - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B extr x11, x13, x12, #63 - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B eor x10, x9, x12, lsl 1 - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B and x9, x19, x11, asr 63 - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B extr x13, x11, x10, #63 - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B eor x12, x9, x10, lsl 1 - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v25.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v26.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v27.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v28.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - aesd v1.16b, v29.16b - eor v1.16b, v1.16b, v30.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V25.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V26.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V27.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V28.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + aesd V1.16B, V29.16B + eor V1.16B, V1.16B, V30.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_xts_decrypt_arm64_crypto_256_start_1 cbz w8, L_aes_xts_decrypt_arm64_crypto_256_done - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v4.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V4.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x11, asr 63 - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B extr x11, x11, x10, #63 - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B eor x10, x9, x10, lsl 1 - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - eor v0.16b, v0.16b, v4.16b - mov v4.d[0], x10 - mov v4.d[1], x11 - st1 {v0.16b}, [x1], #16 + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + eor V0.16B, V0.16B, V4.16B + mov V4.D[0], x10 + mov V4.D[1], x11 + st1 {V0.16B}, [x1], #16 L_aes_xts_decrypt_arm64_crypto_256_done cbz w2, L_aes_xts_decrypt_arm64_crypto_256_partial_done and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 - mov v5.d[0], x12 - mov v5.d[1], x13 - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v5.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - eor v0.16b, v0.16b, v5.16b - st1 {v0.2d}, [x6] + mov V5.D[0], x12 + mov V5.D[1], x13 + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V5.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + eor V0.16B, V0.16B, V5.16B + st1 {V0.2D}, [x6] add x1, x1, #16 mov w9, w2 L_aes_xts_decrypt_arm64_crypto_256_start_byte @@ -42451,72 +42451,72 @@ L_aes_xts_decrypt_arm64_crypto_256_start_byte sub x1, x1, x2 sub x6, x6, x2 sub x1, x1, #16 - ld1 {v0.2d}, [x6] - eor v0.16b, v0.16b, v4.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v26.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v27.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v28.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v29.16b - eor v0.16b, v0.16b, v30.16b - eor v0.16b, v0.16b, v4.16b - st1 {v0.16b}, [x1] + ld1 {V0.2D}, [x6] + eor V0.16B, V0.16B, V4.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V26.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V27.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V28.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V29.16B + eor V0.16B, V0.16B, V30.16B + eor V0.16B, V0.16B, V4.16B + st1 {V0.16B}, [x1] L_aes_xts_decrypt_arm64_crypto_256_partial_done ENDIF b L_aes_xts_decrypt_arm64_crypto_done ; AES_XTS_128 L_aes_xts_decrypt_arm64_crypto_start_128 IF :LNOT::DEF:NO_AES_128 - ld1 {v24.2d, v25.2d}, [x5], #32 - ld1 {v26.2d}, [x5] - aese v4.16b, v16.16b - aesmc v4.16b, v4.16b - aese v4.16b, v17.16b - aesmc v4.16b, v4.16b - aese v4.16b, v18.16b - aesmc v4.16b, v4.16b - aese v4.16b, v19.16b - aesmc v4.16b, v4.16b - aese v4.16b, v20.16b - aesmc v4.16b, v4.16b - aese v4.16b, v21.16b - aesmc v4.16b, v4.16b - aese v4.16b, v22.16b - aesmc v4.16b, v4.16b - aese v4.16b, v23.16b - aesmc v4.16b, v4.16b - aese v4.16b, v24.16b - aesmc v4.16b, v4.16b - aese v4.16b, v25.16b - eor v4.16b, v4.16b, v26.16b - mov x10, v4.d[0] - mov x11, v4.d[1] - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x4], #0x40 - ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [x4], #0x40 - ld1 {v24.2d, v25.2d}, [x4], #32 - ld1 {v26.2d}, [x4] + ld1 {V24.2D, V25.2D}, [x5], #32 + ld1 {V26.2D}, [x5] + aese V4.16B, V16.16B + aesmc V4.16B, V4.16B + aese V4.16B, V17.16B + aesmc V4.16B, V4.16B + aese V4.16B, V18.16B + aesmc V4.16B, V4.16B + aese V4.16B, V19.16B + aesmc V4.16B, V4.16B + aese V4.16B, V20.16B + aesmc V4.16B, V4.16B + aese V4.16B, V21.16B + aesmc V4.16B, V4.16B + aese V4.16B, V22.16B + aesmc V4.16B, V4.16B + aese V4.16B, V23.16B + aesmc V4.16B, V4.16B + aese V4.16B, V24.16B + aesmc V4.16B, V4.16B + aese V4.16B, V25.16B + eor V4.16B, V4.16B, V26.16B + mov x10, V4.D[0] + mov x11, V4.D[1] + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x4], #0x40 + ld1 {V20.2D, V21.2D, V22.2D, V23.2D}, [x4], #0x40 + ld1 {V24.2D, V25.2D}, [x4], #32 + ld1 {V26.2D}, [x4] and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 @@ -42529,241 +42529,241 @@ L_aes_xts_decrypt_arm64_crypto_start_128 cmp w8, #4 blt L_aes_xts_decrypt_arm64_crypto_128_start_2 L_aes_xts_decrypt_arm64_crypto_128_start_4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - mov v5.d[0], x12 - mov v5.d[1], x13 - mov v6.d[0], x14 - mov v6.d[1], x15 - mov v7.d[0], x16 - mov v7.d[1], x17 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + mov V5.D[0], x12 + mov V5.D[1], x13 + mov V6.D[0], x14 + mov V6.D[1], x15 + mov V7.D[0], x16 + mov V7.D[1], x17 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x17, asr 63 - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v16.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V16.16B + aesimc V2.16B, V2.16B extr x11, x17, x16, #63 - aesd v3.16b, v16.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V16.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B eor x10, x9, x16, lsl 1 - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v17.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V17.16B + aesimc V2.16B, V2.16B and x9, x19, x11, asr 63 - aesd v3.16b, v17.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V17.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B extr x13, x11, x10, #63 - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v18.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V18.16B + aesimc V2.16B, V2.16B eor x12, x9, x10, lsl 1 - aesd v3.16b, v18.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V18.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B and x9, x19, x13, asr 63 - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v19.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V19.16B + aesimc V2.16B, V2.16B extr x15, x13, x12, #63 - aesd v3.16b, v19.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V19.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B eor x14, x9, x12, lsl 1 - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v20.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V20.16B + aesimc V2.16B, V2.16B and x9, x19, x15, asr 63 - aesd v3.16b, v20.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b + aesd V3.16B, V20.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B extr x17, x15, x14, #63 - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v21.16b - aesimc v2.16b, v2.16b + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V21.16B + aesimc V2.16B, V2.16B eor x16, x9, x14, lsl 1 - aesd v3.16b, v21.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v22.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v22.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v23.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v23.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v2.16b, v24.16b - aesimc v2.16b, v2.16b - aesd v3.16b, v24.16b - aesimc v3.16b, v3.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aesd v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b - aesd v2.16b, v25.16b - eor v2.16b, v2.16b, v26.16b - aesd v3.16b, v25.16b - eor v3.16b, v3.16b, v26.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aesd V3.16B, V21.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V22.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V22.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V23.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V23.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V2.16B, V24.16B + aesimc V2.16B, V2.16B + aesd V3.16B, V24.16B + aesimc V3.16B, V3.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aesd V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B + aesd V2.16B, V25.16B + eor V2.16B, V2.16B, V26.16B + aesd V3.16B, V25.16B + eor V3.16B, V3.16B, V26.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #4 - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 cmp w8, #4 bge L_aes_xts_decrypt_arm64_crypto_128_start_4 L_aes_xts_decrypt_arm64_crypto_128_start_2 cmp w8, #2 blt L_aes_xts_decrypt_arm64_crypto_128_start_1 - ld1 {v0.16b, v1.16b}, [x0], #32 - mov v5.d[0], x12 - mov v5.d[1], x13 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + mov V5.D[0], x12 + mov V5.D[1], x13 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x13, asr 63 - aesd v1.16b, v16.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V16.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B extr x11, x13, x12, #63 - aesd v1.16b, v17.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V17.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B eor x10, x9, x12, lsl 1 - aesd v1.16b, v18.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V18.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B and x9, x19, x11, asr 63 - aesd v1.16b, v19.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V19.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B extr x13, x11, x10, #63 - aesd v1.16b, v20.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b + aesd V1.16B, V20.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B eor x12, x9, x10, lsl 1 - aesd v1.16b, v21.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v22.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v23.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v1.16b, v24.16b - aesimc v1.16b, v1.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - aesd v1.16b, v25.16b - eor v1.16b, v1.16b, v26.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - mov v4.d[0], x10 - mov v4.d[1], x11 + aesd V1.16B, V21.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V22.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V23.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V1.16B, V24.16B + aesimc V1.16B, V1.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + aesd V1.16B, V25.16B + eor V1.16B, V1.16B, V26.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + mov V4.D[0], x10 + mov V4.D[1], x11 sub w8, w8, #2 - st1 {v0.16b, v1.16b}, [x1], #32 + st1 {V0.16B, V1.16B}, [x1], #32 L_aes_xts_decrypt_arm64_crypto_128_start_1 cbz w8, L_aes_xts_decrypt_arm64_crypto_128_done - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v4.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V4.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B and x9, x19, x11, asr 63 - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B extr x11, x11, x10, #63 - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B eor x10, x9, x10, lsl 1 - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - eor v0.16b, v0.16b, v4.16b - mov v4.d[0], x10 - mov v4.d[1], x11 - st1 {v0.16b}, [x1], #16 + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + eor V0.16B, V0.16B, V4.16B + mov V4.D[0], x10 + mov V4.D[1], x11 + st1 {V0.16B}, [x1], #16 L_aes_xts_decrypt_arm64_crypto_128_done cbz w2, L_aes_xts_decrypt_arm64_crypto_128_partial_done and x9, x19, x11, asr 63 extr x13, x11, x10, #63 eor x12, x9, x10, lsl 1 - mov v5.d[0], x12 - mov v5.d[1], x13 - ld1 {v0.16b}, [x0], #16 - eor v0.16b, v0.16b, v5.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - eor v0.16b, v0.16b, v5.16b - st1 {v0.2d}, [x6] + mov V5.D[0], x12 + mov V5.D[1], x13 + ld1 {V0.16B}, [x0], #16 + eor V0.16B, V0.16B, V5.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + eor V0.16B, V0.16B, V5.16B + st1 {V0.2D}, [x6] add x1, x1, #16 mov w9, w2 L_aes_xts_decrypt_arm64_crypto_128_start_byte @@ -42776,30 +42776,30 @@ L_aes_xts_decrypt_arm64_crypto_128_start_byte sub x1, x1, x2 sub x6, x6, x2 sub x1, x1, #16 - ld1 {v0.2d}, [x6] - eor v0.16b, v0.16b, v4.16b - aesd v0.16b, v16.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v17.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v18.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v19.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v20.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v21.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v22.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v23.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v24.16b - aesimc v0.16b, v0.16b - aesd v0.16b, v25.16b - eor v0.16b, v0.16b, v26.16b - eor v0.16b, v0.16b, v4.16b - st1 {v0.16b}, [x1] + ld1 {V0.2D}, [x6] + eor V0.16B, V0.16B, V4.16B + aesd V0.16B, V16.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V17.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V18.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V19.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V20.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V21.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V22.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V23.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V24.16B + aesimc V0.16B, V0.16B + aesd V0.16B, V25.16B + eor V0.16B, V0.16B, V26.16B + eor V0.16B, V0.16B, V4.16B + st1 {V0.16B}, [x1] L_aes_xts_decrypt_arm64_crypto_128_partial_done ENDIF L_aes_xts_decrypt_arm64_crypto_done @@ -42812,7 +42812,7 @@ L_aes_xts_decrypt_arm64_crypto_done ENDIF IF :LNOT::DEF:WOLFSSL_ARMASM_NO_NEON IF :DEF:HAVE_AES_DECRYPT :LOR: :DEF:HAVE_AES_CBC :LOR: :DEF:HAVE_AESCCM :LOR: :DEF:HAVE_AESGCM :LOR: :DEF:WOLFSSL_AES_DIRECT :LOR: :DEF:WOLFSSL_AES_COUNTER - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_NEON_te DCB 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5 @@ -42847,7 +42847,7 @@ L_AES_ARM64_NEON_te DCB 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf DCB 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 DCB 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_NEON_shift_rows_shuffle DCB 0x0c, 0x09, 0x06, 0x03, 0x00, 0x0d, 0x0a, 0x07 @@ -42862,50 +42862,50 @@ AES_invert_key_NEON PROC mov x2, x0 mov w4, w1 L_AES_invert_key_NEON_loop - ld1 {v0.2d}, [x2] - ld1 {v1.2d}, [x3] - st1 {v0.2d}, [x3] - st1 {v1.2d}, [x2], #16 + ld1 {V0.2D}, [x2] + ld1 {V1.2D}, [x3] + st1 {V0.2D}, [x3] + st1 {V1.2D}, [x2], #16 subs w4, w4, #2 sub x3, x3, #16 bne L_AES_invert_key_NEON_loop - movi v2.16b, #27 + movi V2.16B, #27 add x2, x0, #16 sub w4, w1, #1 L_AES_invert_key_NEON_mix_loop - ld1 {v0.2d}, [x2] - sshr v5.16b, v0.16b, #7 - ushr v6.16b, v0.16b, #6 - ushr v3.16b, v0.16b, #5 - and v5.16b, v5.16b, v2.16b - pmul v6.16b, v6.16b, v2.16b - pmul v3.16b, v3.16b, v2.16b - shl v4.16b, v0.16b, #1 - eor v5.16b, v5.16b, v4.16b - shl v4.16b, v0.16b, #3 - eor v3.16b, v3.16b, v4.16b - shl v4.16b, v0.16b, #2 - eor v6.16b, v6.16b, v4.16b - eor v4.16b, v5.16b, v3.16b - eor v3.16b, v3.16b, v0.16b - eor v5.16b, v6.16b, v3.16b - eor v6.16b, v6.16b, v4.16b - eor v4.16b, v4.16b, v0.16b - shl v0.4s, v4.4s, #8 - rev32 v5.8h, v5.8h - sri v0.4s, v4.4s, #24 - eor v0.16b, v0.16b, v6.16b - shl v4.4s, v3.4s, #24 - eor v0.16b, v0.16b, v5.16b - sri v4.4s, v3.4s, #8 - eor v0.16b, v0.16b, v4.16b - st1 {v0.2d}, [x2], #16 + ld1 {V0.2D}, [x2] + sshr V5.16B, V0.16B, #7 + ushr V6.16B, V0.16B, #6 + ushr V3.16B, V0.16B, #5 + and V5.16B, V5.16B, V2.16B + pmul V6.16B, V6.16B, V2.16B + pmul V3.16B, V3.16B, V2.16B + shl V4.16B, V0.16B, #1 + eor V5.16B, V5.16B, V4.16B + shl V4.16B, V0.16B, #3 + eor V3.16B, V3.16B, V4.16B + shl V4.16B, V0.16B, #2 + eor V6.16B, V6.16B, V4.16B + eor V4.16B, V5.16B, V3.16B + eor V3.16B, V3.16B, V0.16B + eor V5.16B, V6.16B, V3.16B + eor V6.16B, V6.16B, V4.16B + eor V4.16B, V4.16B, V0.16B + shl V0.4S, V4.4S, #8 + rev32 V5.8H, V5.8H + sri V0.4S, V4.4S, #24 + eor V0.16B, V0.16B, V6.16B + shl V4.4S, V3.4S, #24 + eor V0.16B, V0.16B, V5.16B + sri V4.4S, V3.4S, #8 + eor V0.16B, V0.16B, V4.16B + st1 {V0.2D}, [x2], #16 subs w4, w4, #1 bne L_AES_invert_key_NEON_mix_loop ret ENDP ENDIF - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_NEON_rcon DCD 0x01000000, 0x02000000, 0x04000000, 0x08000000 @@ -42917,223 +42917,223 @@ L_AES_ARM64_NEON_rcon AES_set_encrypt_key_NEON PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x4, L_AES_ARM64_NEON_rcon add x4, x4, L_AES_ARM64_NEON_rcon adrp x5, L_AES_ARM64_NEON_te add x5, x5, L_AES_ARM64_NEON_te - ld1 {v6.16b, v7.16b, v8.16b, v9.16b}, [x5], #0x40 - ld1 {v10.16b, v11.16b, v12.16b, v13.16b}, [x5], #0x40 - ld1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x5], #0x40 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x5] - movi v2.16b, #0x40 - movi v3.16b, #0x80 - movi v4.16b, #0xc0 - movi v5.16b, #27 - eor v26.16b, v26.16b, v26.16b + ld1 {V6.16B, V7.16B, V8.16B, V9.16B}, [x5], #0x40 + ld1 {V10.16B, V11.16B, V12.16B, V13.16B}, [x5], #0x40 + ld1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x5], #0x40 + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x5] + movi V2.16B, #0x40 + movi V3.16B, #0x80 + movi V4.16B, #0xc0 + movi V5.16B, #27 + eor V26.16B, V26.16B, V26.16B cmp x1, #0x80 beq L_AES_set_encrypt_key_NEON_start_128 cmp x1, #0xc0 beq L_AES_set_encrypt_key_NEON_start_192 - ld1 {v0.16b}, [x0], #16 - ld1 {v1.16b}, [x0] - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - st1 {v0.2d}, [x2], #16 - st1 {v1.2d}, [x2], #16 + ld1 {V0.16B}, [x0], #16 + ld1 {V1.16B}, [x0] + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + st1 {V0.2D}, [x2], #16 + st1 {V1.2D}, [x2], #16 mov x3, #6 L_AES_set_encrypt_key_NEON_loop_256 - eor v22.16b, v1.16b, v2.16b - eor v23.16b, v1.16b, v3.16b - eor v24.16b, v1.16b, v4.16b - tbl v25.16b, {v6.16b, v7.16b, v8.16b, v9.16b}, v1.16b - tbl v22.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v22.16b - tbl v23.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v23.16b - tbl v24.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v24.16b - orr v25.16b, v25.16b, v22.16b - orr v23.16b, v23.16b, v24.16b - orr v25.16b, v25.16b, v23.16b - ext v25.16b, v25.16b, v26.16b, #12 - shl v22.4s, v25.4s, #8 - sri v22.4s, v25.4s, #24 - eor v0.16b, v0.16b, v22.16b - ld1r {v25.4s}, [x4], #4 - dup v22.4s, v0.s[0] - dup v23.2s, v0.s[1] - dup v24.2s, v0.s[2] - ext v22.16b, v26.16b, v22.16b, #12 - ext v23.16b, v26.16b, v23.16b, #8 - eor v0.16b, v0.16b, v22.16b - ext v24.16b, v26.16b, v24.16b, #4 - eor v0.16b, v0.16b, v23.16b - eor v0.16b, v0.16b, v24.16b - eor v0.16b, v0.16b, v25.16b - st1 {v0.2d}, [x2], #16 - eor v22.16b, v0.16b, v2.16b - eor v23.16b, v0.16b, v3.16b - eor v24.16b, v0.16b, v4.16b - tbl v25.16b, {v6.16b, v7.16b, v8.16b, v9.16b}, v0.16b - tbl v22.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v22.16b - tbl v23.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v23.16b - tbl v24.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v24.16b - orr v25.16b, v25.16b, v22.16b - orr v23.16b, v23.16b, v24.16b - orr v25.16b, v25.16b, v23.16b - ext v25.16b, v25.16b, v26.16b, #12 - eor v1.16b, v1.16b, v25.16b - dup v22.4s, v1.s[0] - dup v23.2s, v1.s[1] - dup v24.2s, v1.s[2] - ext v22.16b, v26.16b, v22.16b, #12 - ext v23.16b, v26.16b, v23.16b, #8 - eor v1.16b, v1.16b, v22.16b - ext v24.16b, v26.16b, v24.16b, #4 - eor v1.16b, v1.16b, v23.16b - eor v1.16b, v1.16b, v24.16b - st1 {v1.2d}, [x2], #16 + eor V22.16B, V1.16B, V2.16B + eor V23.16B, V1.16B, V3.16B + eor V24.16B, V1.16B, V4.16B + tbl V25.16B, {V6.16B, V7.16B, V8.16B, V9.16B}, V1.16B + tbl V22.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V22.16B + tbl V23.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V23.16B + tbl V24.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V24.16B + orr V25.16B, V25.16B, V22.16B + orr V23.16B, V23.16B, V24.16B + orr V25.16B, V25.16B, V23.16B + ext8 V25.16B, V25.16B, V26.16B, #12 + shl V22.4S, V25.4S, #8 + sri V22.4S, V25.4S, #24 + eor V0.16B, V0.16B, V22.16B + ld1r {V25.4S}, [x4], #4 + dup V22.4S, V0.S[0] + dup V23.2S, V0.S[1] + dup V24.2S, V0.S[2] + ext8 V22.16B, V26.16B, V22.16B, #12 + ext8 V23.16B, V26.16B, V23.16B, #8 + eor V0.16B, V0.16B, V22.16B + ext8 V24.16B, V26.16B, V24.16B, #4 + eor V0.16B, V0.16B, V23.16B + eor V0.16B, V0.16B, V24.16B + eor V0.16B, V0.16B, V25.16B + st1 {V0.2D}, [x2], #16 + eor V22.16B, V0.16B, V2.16B + eor V23.16B, V0.16B, V3.16B + eor V24.16B, V0.16B, V4.16B + tbl V25.16B, {V6.16B, V7.16B, V8.16B, V9.16B}, V0.16B + tbl V22.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V22.16B + tbl V23.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V23.16B + tbl V24.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V24.16B + orr V25.16B, V25.16B, V22.16B + orr V23.16B, V23.16B, V24.16B + orr V25.16B, V25.16B, V23.16B + ext8 V25.16B, V25.16B, V26.16B, #12 + eor V1.16B, V1.16B, V25.16B + dup V22.4S, V1.S[0] + dup V23.2S, V1.S[1] + dup V24.2S, V1.S[2] + ext8 V22.16B, V26.16B, V22.16B, #12 + ext8 V23.16B, V26.16B, V23.16B, #8 + eor V1.16B, V1.16B, V22.16B + ext8 V24.16B, V26.16B, V24.16B, #4 + eor V1.16B, V1.16B, V23.16B + eor V1.16B, V1.16B, V24.16B + st1 {V1.2D}, [x2], #16 subs x3, x3, #1 bne L_AES_set_encrypt_key_NEON_loop_256 - eor v22.16b, v1.16b, v2.16b - eor v23.16b, v1.16b, v3.16b - eor v24.16b, v1.16b, v4.16b - tbl v25.16b, {v6.16b, v7.16b, v8.16b, v9.16b}, v1.16b - tbl v22.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v22.16b - tbl v23.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v23.16b - tbl v24.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v24.16b - orr v25.16b, v25.16b, v22.16b - orr v23.16b, v23.16b, v24.16b - orr v25.16b, v25.16b, v23.16b - ext v25.16b, v25.16b, v26.16b, #12 - shl v22.4s, v25.4s, #8 - sri v22.4s, v25.4s, #24 - eor v0.16b, v0.16b, v22.16b - ld1r {v25.4s}, [x4], #4 - dup v22.4s, v0.s[0] - dup v23.2s, v0.s[1] - dup v24.2s, v0.s[2] - ext v22.16b, v26.16b, v22.16b, #12 - ext v23.16b, v26.16b, v23.16b, #8 - eor v0.16b, v0.16b, v22.16b - ext v24.16b, v26.16b, v24.16b, #4 - eor v0.16b, v0.16b, v23.16b - eor v0.16b, v0.16b, v24.16b - eor v0.16b, v0.16b, v25.16b - st1 {v0.2d}, [x2], #16 + eor V22.16B, V1.16B, V2.16B + eor V23.16B, V1.16B, V3.16B + eor V24.16B, V1.16B, V4.16B + tbl V25.16B, {V6.16B, V7.16B, V8.16B, V9.16B}, V1.16B + tbl V22.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V22.16B + tbl V23.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V23.16B + tbl V24.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V24.16B + orr V25.16B, V25.16B, V22.16B + orr V23.16B, V23.16B, V24.16B + orr V25.16B, V25.16B, V23.16B + ext8 V25.16B, V25.16B, V26.16B, #12 + shl V22.4S, V25.4S, #8 + sri V22.4S, V25.4S, #24 + eor V0.16B, V0.16B, V22.16B + ld1r {V25.4S}, [x4], #4 + dup V22.4S, V0.S[0] + dup V23.2S, V0.S[1] + dup V24.2S, V0.S[2] + ext8 V22.16B, V26.16B, V22.16B, #12 + ext8 V23.16B, V26.16B, V23.16B, #8 + eor V0.16B, V0.16B, V22.16B + ext8 V24.16B, V26.16B, V24.16B, #4 + eor V0.16B, V0.16B, V23.16B + eor V0.16B, V0.16B, V24.16B + eor V0.16B, V0.16B, V25.16B + st1 {V0.2D}, [x2], #16 b L_AES_set_encrypt_key_NEON_end L_AES_set_encrypt_key_NEON_start_192 - ld1 {v0.16b}, [x0], #16 - ld1 {v1.8b}, [x0] - rev32 v0.16b, v0.16b - rev32 v1.8b, v1.8b - st1 {v0.16b}, [x2], #16 - st1 {v1.8b}, [x2], #8 - ext v1.16b, v1.16b, v1.16b, #8 + ld1 {V0.16B}, [x0], #16 + ld1 {V1.8B}, [x0] + rev32 V0.16B, V0.16B + rev32 V1.8B, V1.8B + st1 {V0.16B}, [x2], #16 + st1 {V1.8B}, [x2], #8 + ext8 V1.16B, V1.16B, V1.16B, #8 mov x3, #7 L_AES_set_encrypt_key_NEON_loop_192 - eor v22.16b, v1.16b, v2.16b - eor v23.16b, v1.16b, v3.16b - eor v24.16b, v1.16b, v4.16b - tbl v25.16b, {v6.16b, v7.16b, v8.16b, v9.16b}, v1.16b - tbl v22.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v22.16b - tbl v23.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v23.16b - tbl v24.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v24.16b - orr v25.16b, v25.16b, v22.16b - orr v23.16b, v23.16b, v24.16b - orr v25.16b, v25.16b, v23.16b - ext v25.16b, v25.16b, v26.16b, #12 - shl v22.4s, v25.4s, #8 - sri v22.4s, v25.4s, #24 - eor v0.16b, v0.16b, v22.16b - ld1r {v25.4s}, [x4], #4 - dup v22.4s, v0.s[0] - dup v23.2s, v0.s[1] - dup v24.2s, v0.s[2] - ext v22.16b, v26.16b, v22.16b, #12 - ext v23.16b, v26.16b, v23.16b, #8 - eor v0.16b, v0.16b, v22.16b - ext v24.16b, v26.16b, v24.16b, #4 - eor v0.16b, v0.16b, v23.16b - eor v0.16b, v0.16b, v24.16b - eor v0.16b, v0.16b, v25.16b - st1 {v0.2d}, [x2], #16 - mov v23.16b, v26.16b - mov v23.s[2], v0.s[3] - eor v1.16b, v1.16b, v23.16b - mov v23.16b, v26.16b - mov v23.s[3], v1.s[2] - eor v1.16b, v1.16b, v23.16b - st1 {v1.d}[1], [x2], #8 + eor V22.16B, V1.16B, V2.16B + eor V23.16B, V1.16B, V3.16B + eor V24.16B, V1.16B, V4.16B + tbl V25.16B, {V6.16B, V7.16B, V8.16B, V9.16B}, V1.16B + tbl V22.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V22.16B + tbl V23.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V23.16B + tbl V24.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V24.16B + orr V25.16B, V25.16B, V22.16B + orr V23.16B, V23.16B, V24.16B + orr V25.16B, V25.16B, V23.16B + ext8 V25.16B, V25.16B, V26.16B, #12 + shl V22.4S, V25.4S, #8 + sri V22.4S, V25.4S, #24 + eor V0.16B, V0.16B, V22.16B + ld1r {V25.4S}, [x4], #4 + dup V22.4S, V0.S[0] + dup V23.2S, V0.S[1] + dup V24.2S, V0.S[2] + ext8 V22.16B, V26.16B, V22.16B, #12 + ext8 V23.16B, V26.16B, V23.16B, #8 + eor V0.16B, V0.16B, V22.16B + ext8 V24.16B, V26.16B, V24.16B, #4 + eor V0.16B, V0.16B, V23.16B + eor V0.16B, V0.16B, V24.16B + eor V0.16B, V0.16B, V25.16B + st1 {V0.2D}, [x2], #16 + mov V23.16B, V26.16B + mov V23.S[2], V0.S[3] + eor V1.16B, V1.16B, V23.16B + mov V23.16B, V26.16B + mov V23.S[3], V1.S[2] + eor V1.16B, V1.16B, V23.16B + st1 {V1.D}[1], [x2], #8 subs x3, x3, #1 bne L_AES_set_encrypt_key_NEON_loop_192 - eor v22.16b, v1.16b, v2.16b - eor v23.16b, v1.16b, v3.16b - eor v24.16b, v1.16b, v4.16b - tbl v25.16b, {v6.16b, v7.16b, v8.16b, v9.16b}, v1.16b - tbl v22.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v22.16b - tbl v23.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v23.16b - tbl v24.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v24.16b - orr v25.16b, v25.16b, v22.16b - orr v23.16b, v23.16b, v24.16b - orr v25.16b, v25.16b, v23.16b - ext v25.16b, v25.16b, v26.16b, #12 - shl v22.4s, v25.4s, #8 - sri v22.4s, v25.4s, #24 - eor v0.16b, v0.16b, v22.16b - ld1r {v25.4s}, [x4], #4 - dup v22.4s, v0.s[0] - dup v23.2s, v0.s[1] - dup v24.2s, v0.s[2] - ext v22.16b, v26.16b, v22.16b, #12 - ext v23.16b, v26.16b, v23.16b, #8 - eor v0.16b, v0.16b, v22.16b - ext v24.16b, v26.16b, v24.16b, #4 - eor v0.16b, v0.16b, v23.16b - eor v0.16b, v0.16b, v24.16b - eor v0.16b, v0.16b, v25.16b - st1 {v0.2d}, [x2], #16 + eor V22.16B, V1.16B, V2.16B + eor V23.16B, V1.16B, V3.16B + eor V24.16B, V1.16B, V4.16B + tbl V25.16B, {V6.16B, V7.16B, V8.16B, V9.16B}, V1.16B + tbl V22.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V22.16B + tbl V23.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V23.16B + tbl V24.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V24.16B + orr V25.16B, V25.16B, V22.16B + orr V23.16B, V23.16B, V24.16B + orr V25.16B, V25.16B, V23.16B + ext8 V25.16B, V25.16B, V26.16B, #12 + shl V22.4S, V25.4S, #8 + sri V22.4S, V25.4S, #24 + eor V0.16B, V0.16B, V22.16B + ld1r {V25.4S}, [x4], #4 + dup V22.4S, V0.S[0] + dup V23.2S, V0.S[1] + dup V24.2S, V0.S[2] + ext8 V22.16B, V26.16B, V22.16B, #12 + ext8 V23.16B, V26.16B, V23.16B, #8 + eor V0.16B, V0.16B, V22.16B + ext8 V24.16B, V26.16B, V24.16B, #4 + eor V0.16B, V0.16B, V23.16B + eor V0.16B, V0.16B, V24.16B + eor V0.16B, V0.16B, V25.16B + st1 {V0.2D}, [x2], #16 b L_AES_set_encrypt_key_NEON_end L_AES_set_encrypt_key_NEON_start_128 - ld1 {v0.16b}, [x0] - rev32 v0.16b, v0.16b - st1 {v0.2d}, [x2], #16 + ld1 {V0.16B}, [x0] + rev32 V0.16B, V0.16B + st1 {V0.2D}, [x2], #16 mov x3, #10 L_AES_set_encrypt_key_NEON_loop_128 - eor v22.16b, v0.16b, v2.16b - eor v23.16b, v0.16b, v3.16b - eor v24.16b, v0.16b, v4.16b - tbl v25.16b, {v6.16b, v7.16b, v8.16b, v9.16b}, v0.16b - tbl v22.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v22.16b - tbl v23.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v23.16b - tbl v24.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v24.16b - orr v25.16b, v25.16b, v22.16b - orr v23.16b, v23.16b, v24.16b - orr v25.16b, v25.16b, v23.16b - ext v25.16b, v25.16b, v26.16b, #12 - shl v22.4s, v25.4s, #8 - sri v22.4s, v25.4s, #24 - eor v0.16b, v0.16b, v22.16b - ld1r {v25.4s}, [x4], #4 - dup v22.4s, v0.s[0] - dup v23.2s, v0.s[1] - dup v24.2s, v0.s[2] - ext v22.16b, v26.16b, v22.16b, #12 - ext v23.16b, v26.16b, v23.16b, #8 - eor v0.16b, v0.16b, v22.16b - ext v24.16b, v26.16b, v24.16b, #4 - eor v0.16b, v0.16b, v23.16b - eor v0.16b, v0.16b, v24.16b - eor v0.16b, v0.16b, v25.16b - st1 {v0.2d}, [x2], #16 + eor V22.16B, V0.16B, V2.16B + eor V23.16B, V0.16B, V3.16B + eor V24.16B, V0.16B, V4.16B + tbl V25.16B, {V6.16B, V7.16B, V8.16B, V9.16B}, V0.16B + tbl V22.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V22.16B + tbl V23.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V23.16B + tbl V24.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V24.16B + orr V25.16B, V25.16B, V22.16B + orr V23.16B, V23.16B, V24.16B + orr V25.16B, V25.16B, V23.16B + ext8 V25.16B, V25.16B, V26.16B, #12 + shl V22.4S, V25.4S, #8 + sri V22.4S, V25.4S, #24 + eor V0.16B, V0.16B, V22.16B + ld1r {V25.4S}, [x4], #4 + dup V22.4S, V0.S[0] + dup V23.2S, V0.S[1] + dup V24.2S, V0.S[2] + ext8 V22.16B, V26.16B, V22.16B, #12 + ext8 V23.16B, V26.16B, V23.16B, #8 + eor V0.16B, V0.16B, V22.16B + ext8 V24.16B, V26.16B, V24.16B, #4 + eor V0.16B, V0.16B, V23.16B + eor V0.16B, V0.16B, V24.16B + eor V0.16B, V0.16B, V25.16B + st1 {V0.2D}, [x2], #16 subs x3, x3, #1 bne L_AES_set_encrypt_key_NEON_loop_128 L_AES_set_encrypt_key_NEON_end - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -43144,755 +43144,755 @@ L_AES_set_encrypt_key_NEON_end AES_ECB_encrypt_NEON PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x5, L_AES_ARM64_NEON_te add x5, x5, L_AES_ARM64_NEON_te adrp x6, L_AES_ARM64_NEON_shift_rows_shuffle add x6, x6, L_AES_ARM64_NEON_shift_rows_shuffle - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x5], #0x40 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x5], #0x40 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x5], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x5] + ld1 {V16.16B, V17.16B, V18.16B, V19.16B}, [x5], #0x40 + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x5], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x5], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x5] cmp x2, #0x40 blt L_AES_ECB_encrypt_NEON_start_2 L_AES_ECB_encrypt_NEON_loop_4 mov x8, x3 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.2d}, [x8], #16 - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.2D}, [x8], #16 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B ; Round: 0 - XOR in key schedule - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B sub w7, w4, #2 L_AES_ECB_encrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x6] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - movi v0.16b, #27 - and v8.16b, v8.16b, v0.16b - and v9.16b, v9.16b, v0.16b - and v10.16b, v10.16b, v0.16b - and v11.16b, v11.16b, v0.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - eor v2.16b, v10.16b, v6.16b - eor v3.16b, v11.16b, v7.16b - shl v12.4s, v0.4s, #8 - shl v13.4s, v1.4s, #8 - shl v14.4s, v2.4s, #8 - shl v15.4s, v3.4s, #8 - sri v12.4s, v0.4s, #24 - sri v13.4s, v1.4s, #24 - sri v14.4s, v2.4s, #24 - sri v15.4s, v3.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - shl v2.4s, v6.4s, #24 - shl v3.4s, v7.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - sri v2.4s, v6.4s, #8 - sri v3.4s, v7.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - rev32 v6.8h, v6.8h - rev32 v7.8h, v7.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x6] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + movi V0.16B, #27 + and V8.16B, V8.16B, V0.16B + and V9.16B, V9.16B, V0.16B + and V10.16B, V10.16B, V0.16B + and V11.16B, V11.16B, V0.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + eor V2.16B, V10.16B, V6.16B + eor V3.16B, V11.16B, V7.16B + shl V12.4S, V0.4S, #8 + shl V13.4S, V1.4S, #8 + shl V14.4S, V2.4S, #8 + shl V15.4S, V3.4S, #8 + sri V12.4S, V0.4S, #24 + sri V13.4S, V1.4S, #24 + sri V14.4S, V2.4S, #24 + sri V15.4S, V3.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + shl V2.4S, V6.4S, #24 + shl V3.4S, V7.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + sri V2.4S, V6.4S, #8 + sri V3.4S, V7.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + rev32 V6.8H, V6.8H + rev32 V7.8H, V7.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x8], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b + ld1 {V0.2D}, [x8], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x6] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - sshr v10.16b, v2.16b, #7 - sshr v11.16b, v3.16b, #7 - shl v12.16b, v0.16b, #1 - shl v13.16b, v1.16b, #1 - shl v14.16b, v2.16b, #1 - shl v15.16b, v3.16b, #1 - movi v4.16b, #27 - and v8.16b, v8.16b, v4.16b - and v9.16b, v9.16b, v4.16b - and v10.16b, v10.16b, v4.16b - and v11.16b, v11.16b, v4.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v4.16b, v8.16b, v0.16b - eor v5.16b, v9.16b, v1.16b - eor v6.16b, v10.16b, v2.16b - eor v7.16b, v11.16b, v3.16b - shl v12.4s, v4.4s, #8 - shl v13.4s, v5.4s, #8 - shl v14.4s, v6.4s, #8 - shl v15.4s, v7.4s, #8 - sri v12.4s, v4.4s, #24 - sri v13.4s, v5.4s, #24 - sri v14.4s, v6.4s, #24 - sri v15.4s, v7.4s, #24 - shl v4.4s, v0.4s, #24 - shl v5.4s, v1.4s, #24 - shl v6.4s, v2.4s, #24 - shl v7.4s, v3.4s, #24 - sri v4.4s, v0.4s, #8 - sri v5.4s, v1.4s, #8 - sri v6.4s, v2.4s, #8 - sri v7.4s, v3.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - rev32 v2.8h, v2.8h - rev32 v3.8h, v3.8h - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x6] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + sshr V10.16B, V2.16B, #7 + sshr V11.16B, V3.16B, #7 + shl V12.16B, V0.16B, #1 + shl V13.16B, V1.16B, #1 + shl V14.16B, V2.16B, #1 + shl V15.16B, V3.16B, #1 + movi V4.16B, #27 + and V8.16B, V8.16B, V4.16B + and V9.16B, V9.16B, V4.16B + and V10.16B, V10.16B, V4.16B + and V11.16B, V11.16B, V4.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V4.16B, V8.16B, V0.16B + eor V5.16B, V9.16B, V1.16B + eor V6.16B, V10.16B, V2.16B + eor V7.16B, V11.16B, V3.16B + shl V12.4S, V4.4S, #8 + shl V13.4S, V5.4S, #8 + shl V14.4S, V6.4S, #8 + shl V15.4S, V7.4S, #8 + sri V12.4S, V4.4S, #24 + sri V13.4S, V5.4S, #24 + sri V14.4S, V6.4S, #24 + sri V15.4S, V7.4S, #24 + shl V4.4S, V0.4S, #24 + shl V5.4S, V1.4S, #24 + shl V6.4S, V2.4S, #24 + shl V7.4S, V3.4S, #24 + sri V4.4S, V0.4S, #8 + sri V5.4S, V1.4S, #8 + sri V6.4S, V2.4S, #8 + sri V7.4S, V3.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + rev32 V2.8H, V2.8H + rev32 V3.8H, V3.8H + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x8], #16 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b + ld1 {V4.2D}, [x8], #16 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B ; Round Done subs w7, w7, #2 bne L_AES_ECB_encrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x6] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - movi v0.16b, #27 - and v8.16b, v8.16b, v0.16b - and v9.16b, v9.16b, v0.16b - and v10.16b, v10.16b, v0.16b - and v11.16b, v11.16b, v0.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - eor v2.16b, v10.16b, v6.16b - eor v3.16b, v11.16b, v7.16b - shl v12.4s, v0.4s, #8 - shl v13.4s, v1.4s, #8 - shl v14.4s, v2.4s, #8 - shl v15.4s, v3.4s, #8 - sri v12.4s, v0.4s, #24 - sri v13.4s, v1.4s, #24 - sri v14.4s, v2.4s, #24 - sri v15.4s, v3.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - shl v2.4s, v6.4s, #24 - shl v3.4s, v7.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - sri v2.4s, v6.4s, #8 - sri v3.4s, v7.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - rev32 v6.8h, v6.8h - rev32 v7.8h, v7.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x6] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + movi V0.16B, #27 + and V8.16B, V8.16B, V0.16B + and V9.16B, V9.16B, V0.16B + and V10.16B, V10.16B, V0.16B + and V11.16B, V11.16B, V0.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + eor V2.16B, V10.16B, V6.16B + eor V3.16B, V11.16B, V7.16B + shl V12.4S, V0.4S, #8 + shl V13.4S, V1.4S, #8 + shl V14.4S, V2.4S, #8 + shl V15.4S, V3.4S, #8 + sri V12.4S, V0.4S, #24 + sri V13.4S, V1.4S, #24 + sri V14.4S, V2.4S, #24 + sri V15.4S, V3.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + shl V2.4S, V6.4S, #24 + shl V3.4S, V7.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + sri V2.4S, V6.4S, #8 + sri V3.4S, V7.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + rev32 V6.8H, V6.8H + rev32 V7.8H, V7.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x8], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b + ld1 {V0.2D}, [x8], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x6] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x6] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x8], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + ld1 {V4.2D}, [x8], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 sub x2, x2, #0x40 cmp x2, #0x40 bge L_AES_ECB_encrypt_NEON_loop_4 L_AES_ECB_encrypt_NEON_start_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 cmp x2, #16 beq L_AES_ECB_encrypt_NEON_start_1 blt L_AES_ECB_encrypt_NEON_data_done L_AES_ECB_encrypt_NEON_loop_2 mov x8, x3 - ld1 {v0.16b, v1.16b}, [x0], #32 - ld1 {v4.2d}, [x8], #16 - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + ld1 {V4.2D}, [x8], #16 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B ; Round: 0 - XOR in key schedule - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B sub w7, w4, #2 L_AES_ECB_encrypt_NEON_loop_nr_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x6] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v10.16b, v4.16b, #1 - shl v11.16b, v5.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - shl v10.4s, v0.4s, #8 - shl v11.4s, v1.4s, #8 - sri v10.4s, v0.4s, #24 - sri v11.4s, v1.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x6] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V10.16B, V4.16B, #1 + shl V11.16B, V5.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + shl V10.4S, V0.4S, #8 + shl V11.4S, V1.4S, #8 + sri V10.4S, V0.4S, #24 + sri V11.4S, V1.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x8], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + ld1 {V0.2D}, [x8], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; Round Done - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x6] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - shl v10.16b, v0.16b, #1 - shl v11.16b, v1.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v4.16b, v8.16b, v0.16b - eor v5.16b, v9.16b, v1.16b - shl v10.4s, v4.4s, #8 - shl v11.4s, v5.4s, #8 - sri v10.4s, v4.4s, #24 - sri v11.4s, v5.4s, #24 - shl v4.4s, v0.4s, #24 - shl v5.4s, v1.4s, #24 - sri v4.4s, v0.4s, #8 - sri v5.4s, v1.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x6] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + shl V10.16B, V0.16B, #1 + shl V11.16B, V1.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V4.16B, V8.16B, V0.16B + eor V5.16B, V9.16B, V1.16B + shl V10.4S, V4.4S, #8 + shl V11.4S, V5.4S, #8 + sri V10.4S, V4.4S, #24 + sri V11.4S, V5.4S, #24 + shl V4.4S, V0.4S, #24 + shl V5.4S, V1.4S, #24 + sri V4.4S, V0.4S, #8 + sri V5.4S, V1.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x8], #16 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b + ld1 {V4.2D}, [x8], #16 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B ; Round Done subs w7, w7, #2 bne L_AES_ECB_encrypt_NEON_loop_nr_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x6] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v10.16b, v4.16b, #1 - shl v11.16b, v5.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - shl v10.4s, v0.4s, #8 - shl v11.4s, v1.4s, #8 - sri v10.4s, v0.4s, #24 - sri v11.4s, v1.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x6] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V10.16B, V4.16B, #1 + shl V11.16B, V5.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + shl V10.4S, V0.4S, #8 + shl V11.4S, V1.4S, #8 + sri V10.4S, V0.4S, #24 + sri V11.4S, V1.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x8], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + ld1 {V0.2D}, [x8], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; Round Done - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x6] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x6] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x8], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + ld1 {V4.2D}, [x8], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - st1 {v0.16b, v1.16b}, [x1], #32 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + st1 {V0.16B, V1.16B}, [x1], #32 sub x2, x2, #32 cmp x2, #0 beq L_AES_ECB_encrypt_NEON_data_done L_AES_ECB_encrypt_NEON_start_1 - ld1 {v3.2d}, [x6] + ld1 {V3.2D}, [x6] mov x8, x3 - ld1 {v0.16b}, [x0], #16 - ld1 {v4.2d}, [x8], #16 - rev32 v0.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + ld1 {V4.2D}, [x8], #16 + rev32 V0.16B, V0.16B ; Round: 0 - XOR in key schedule - eor v0.16b, v0.16b, v4.16b + eor V0.16B, V0.16B, V4.16B sub w7, w4, #2 L_AES_ECB_encrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x8], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x8], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x8], #16 - sshr v10.16b, v0.16b, #7 - shl v9.16b, v0.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v0.8h - eor v11.16b, v10.16b, v0.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v0.4s, #24 - shl v8.4s, v11.4s, #8 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x8], #16 + sshr V10.16B, V0.16B, #7 + shl V9.16B, V0.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V0.8H + eor V11.16B, V10.16B, V0.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V0.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v4.16b - sri v9.4s, v0.4s, #8 - sri v8.4s, v11.4s, #24 - eor v0.16b, v10.16b, v9.16b - eor v0.16b, v0.16b, v8.16b + eor V10.16B, V10.16B, V4.16B + sri V9.4S, V0.4S, #8 + sri V8.4S, V11.4S, #24 + eor V0.16B, V10.16B, V9.16B + eor V0.16B, V0.16B, V8.16B subs w7, w7, #2 bne L_AES_ECB_encrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x8], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x8], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x8], #16 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x8], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + st1 {V0.16B}, [x1], #16 L_AES_ECB_encrypt_NEON_data_done - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -43904,140 +43904,140 @@ L_AES_ECB_encrypt_NEON_data_done AES_CBC_encrypt_NEON PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x6, L_AES_ARM64_NEON_te add x6, x6, L_AES_ARM64_NEON_te adrp x7, L_AES_ARM64_NEON_shift_rows_shuffle add x7, x7, L_AES_ARM64_NEON_shift_rows_shuffle - ld1 {v10.16b, v11.16b, v12.16b, v13.16b}, [x6], #0x40 - ld1 {v14.16b, v15.16b, v16.16b, v17.16b}, [x6], #0x40 - ld1 {v18.16b, v19.16b, v20.16b, v21.16b}, [x6], #0x40 - ld1 {v22.16b, v23.16b, v24.16b, v25.16b}, [x6] - movi v6.16b, #0x40 - movi v7.16b, #0x80 - movi v8.16b, #0xc0 - movi v9.16b, #27 - ld1 {v0.2d}, [x5] - ld1 {v26.2d}, [x7] + ld1 {V10.16B, V11.16B, V12.16B, V13.16B}, [x6], #0x40 + ld1 {V14.16B, V15.16B, V16.16B, V17.16B}, [x6], #0x40 + ld1 {V18.16B, V19.16B, V20.16B, V21.16B}, [x6], #0x40 + ld1 {V22.16B, V23.16B, V24.16B, V25.16B}, [x6] + movi V6.16B, #0x40 + movi V7.16B, #0x80 + movi V8.16B, #0xc0 + movi V9.16B, #27 + ld1 {V0.2D}, [x5] + ld1 {V26.2D}, [x7] L_AES_CBC_encrypt_NEON_loop_block add x9, x3, #16 - ld1 {v1.16b}, [x0], #16 - ld1 {v2.16b}, [x3] - eor v0.16b, v0.16b, v1.16b - rev32 v0.16b, v0.16b + ld1 {V1.16B}, [x0], #16 + ld1 {V2.16B}, [x3] + eor V0.16B, V0.16B, V1.16B + rev32 V0.16B, V0.16B ; Round: 0 - XOR in key schedule - eor v0.16b, v0.16b, v2.16b + eor V0.16B, V0.16B, V2.16B sub w8, w4, #2 L_AES_CBC_encrypt_NEON_loop_nr - eor v2.16b, v0.16b, v6.16b - eor v3.16b, v0.16b, v7.16b - eor v4.16b, v0.16b, v8.16b - tbl v1.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v0.16b - tbl v2.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v2.16b - tbl v3.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v3.16b - tbl v4.16b, {v22.16b, v23.16b, v24.16b, v25.16b}, v4.16b - orr v1.16b, v1.16b, v2.16b - orr v3.16b, v3.16b, v4.16b - orr v1.16b, v1.16b, v3.16b - tbl v1.16b, {v1.16b}, v26.16b - ld1 {v0.2d}, [x9], #16 - sshr v4.16b, v1.16b, #7 - shl v3.16b, v1.16b, #1 - and v4.16b, v4.16b, v9.16b - eor v4.16b, v4.16b, v3.16b - rev32 v2.8h, v1.8h - eor v5.16b, v4.16b, v1.16b - eor v4.16b, v4.16b, v2.16b - shl v3.4s, v1.4s, #24 - shl v2.4s, v5.4s, #8 + eor V2.16B, V0.16B, V6.16B + eor V3.16B, V0.16B, V7.16B + eor V4.16B, V0.16B, V8.16B + tbl V1.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V0.16B + tbl V2.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V2.16B + tbl V3.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V3.16B + tbl V4.16B, {V22.16B, V23.16B, V24.16B, V25.16B}, V4.16B + orr V1.16B, V1.16B, V2.16B + orr V3.16B, V3.16B, V4.16B + orr V1.16B, V1.16B, V3.16B + tbl V1.16B, {V1.16B}, V26.16B + ld1 {V0.2D}, [x9], #16 + sshr V4.16B, V1.16B, #7 + shl V3.16B, V1.16B, #1 + and V4.16B, V4.16B, V9.16B + eor V4.16B, V4.16B, V3.16B + rev32 V2.8H, V1.8H + eor V5.16B, V4.16B, V1.16B + eor V4.16B, V4.16B, V2.16B + shl V3.4S, V1.4S, #24 + shl V2.4S, V5.4S, #8 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - sri v3.4s, v1.4s, #8 - sri v2.4s, v5.4s, #24 - eor v1.16b, v4.16b, v3.16b - eor v1.16b, v1.16b, v2.16b - eor v2.16b, v1.16b, v6.16b - eor v3.16b, v1.16b, v7.16b - eor v4.16b, v1.16b, v8.16b - tbl v0.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v1.16b - tbl v2.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v2.16b - tbl v3.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v3.16b - tbl v4.16b, {v22.16b, v23.16b, v24.16b, v25.16b}, v4.16b - orr v0.16b, v0.16b, v2.16b - orr v3.16b, v3.16b, v4.16b - orr v0.16b, v0.16b, v3.16b - tbl v0.16b, {v0.16b}, v26.16b - ld1 {v1.2d}, [x9], #16 - sshr v4.16b, v0.16b, #7 - shl v3.16b, v0.16b, #1 - and v4.16b, v4.16b, v9.16b - eor v4.16b, v4.16b, v3.16b - rev32 v2.8h, v0.8h - eor v5.16b, v4.16b, v0.16b - eor v4.16b, v4.16b, v2.16b - shl v3.4s, v0.4s, #24 - shl v2.4s, v5.4s, #8 + eor V4.16B, V4.16B, V0.16B + sri V3.4S, V1.4S, #8 + sri V2.4S, V5.4S, #24 + eor V1.16B, V4.16B, V3.16B + eor V1.16B, V1.16B, V2.16B + eor V2.16B, V1.16B, V6.16B + eor V3.16B, V1.16B, V7.16B + eor V4.16B, V1.16B, V8.16B + tbl V0.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V1.16B + tbl V2.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V2.16B + tbl V3.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V3.16B + tbl V4.16B, {V22.16B, V23.16B, V24.16B, V25.16B}, V4.16B + orr V0.16B, V0.16B, V2.16B + orr V3.16B, V3.16B, V4.16B + orr V0.16B, V0.16B, V3.16B + tbl V0.16B, {V0.16B}, V26.16B + ld1 {V1.2D}, [x9], #16 + sshr V4.16B, V0.16B, #7 + shl V3.16B, V0.16B, #1 + and V4.16B, V4.16B, V9.16B + eor V4.16B, V4.16B, V3.16B + rev32 V2.8H, V0.8H + eor V5.16B, V4.16B, V0.16B + eor V4.16B, V4.16B, V2.16B + shl V3.4S, V0.4S, #24 + shl V2.4S, V5.4S, #8 ; XOR in Key Schedule - eor v4.16b, v4.16b, v1.16b - sri v3.4s, v0.4s, #8 - sri v2.4s, v5.4s, #24 - eor v0.16b, v4.16b, v3.16b - eor v0.16b, v0.16b, v2.16b + eor V4.16B, V4.16B, V1.16B + sri V3.4S, V0.4S, #8 + sri V2.4S, V5.4S, #24 + eor V0.16B, V4.16B, V3.16B + eor V0.16B, V0.16B, V2.16B subs w8, w8, #2 bne L_AES_CBC_encrypt_NEON_loop_nr - eor v2.16b, v0.16b, v6.16b - eor v3.16b, v0.16b, v7.16b - eor v4.16b, v0.16b, v8.16b - tbl v1.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v0.16b - tbl v2.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v2.16b - tbl v3.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v3.16b - tbl v4.16b, {v22.16b, v23.16b, v24.16b, v25.16b}, v4.16b - orr v1.16b, v1.16b, v2.16b - orr v3.16b, v3.16b, v4.16b - orr v1.16b, v1.16b, v3.16b - tbl v1.16b, {v1.16b}, v26.16b - ld1 {v0.2d}, [x9], #16 - sshr v4.16b, v1.16b, #7 - shl v3.16b, v1.16b, #1 - and v4.16b, v4.16b, v9.16b - eor v4.16b, v4.16b, v3.16b - rev32 v2.8h, v1.8h - eor v5.16b, v4.16b, v1.16b - eor v4.16b, v4.16b, v2.16b - shl v3.4s, v1.4s, #24 - shl v2.4s, v5.4s, #8 + eor V2.16B, V0.16B, V6.16B + eor V3.16B, V0.16B, V7.16B + eor V4.16B, V0.16B, V8.16B + tbl V1.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V0.16B + tbl V2.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V2.16B + tbl V3.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V3.16B + tbl V4.16B, {V22.16B, V23.16B, V24.16B, V25.16B}, V4.16B + orr V1.16B, V1.16B, V2.16B + orr V3.16B, V3.16B, V4.16B + orr V1.16B, V1.16B, V3.16B + tbl V1.16B, {V1.16B}, V26.16B + ld1 {V0.2D}, [x9], #16 + sshr V4.16B, V1.16B, #7 + shl V3.16B, V1.16B, #1 + and V4.16B, V4.16B, V9.16B + eor V4.16B, V4.16B, V3.16B + rev32 V2.8H, V1.8H + eor V5.16B, V4.16B, V1.16B + eor V4.16B, V4.16B, V2.16B + shl V3.4S, V1.4S, #24 + shl V2.4S, V5.4S, #8 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - sri v3.4s, v1.4s, #8 - sri v2.4s, v5.4s, #24 - eor v1.16b, v4.16b, v3.16b - eor v1.16b, v1.16b, v2.16b - eor v2.16b, v1.16b, v6.16b - eor v3.16b, v1.16b, v7.16b - eor v4.16b, v1.16b, v8.16b - tbl v0.16b, {v10.16b, v11.16b, v12.16b, v13.16b}, v1.16b - tbl v2.16b, {v14.16b, v15.16b, v16.16b, v17.16b}, v2.16b - tbl v3.16b, {v18.16b, v19.16b, v20.16b, v21.16b}, v3.16b - tbl v4.16b, {v22.16b, v23.16b, v24.16b, v25.16b}, v4.16b - orr v0.16b, v0.16b, v2.16b - orr v3.16b, v3.16b, v4.16b - orr v0.16b, v0.16b, v3.16b - tbl v0.16b, {v0.16b}, v26.16b - ld1 {v1.2d}, [x9], #16 + eor V4.16B, V4.16B, V0.16B + sri V3.4S, V1.4S, #8 + sri V2.4S, V5.4S, #24 + eor V1.16B, V4.16B, V3.16B + eor V1.16B, V1.16B, V2.16B + eor V2.16B, V1.16B, V6.16B + eor V3.16B, V1.16B, V7.16B + eor V4.16B, V1.16B, V8.16B + tbl V0.16B, {V10.16B, V11.16B, V12.16B, V13.16B}, V1.16B + tbl V2.16B, {V14.16B, V15.16B, V16.16B, V17.16B}, V2.16B + tbl V3.16B, {V18.16B, V19.16B, V20.16B, V21.16B}, V3.16B + tbl V4.16B, {V22.16B, V23.16B, V24.16B, V25.16B}, V4.16B + orr V0.16B, V0.16B, V2.16B + orr V3.16B, V3.16B, V4.16B + orr V0.16B, V0.16B, V3.16B + tbl V0.16B, {V0.16B}, V26.16B + ld1 {V1.2D}, [x9], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v1.16b - rev32 v0.16b, v0.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V1.16B + rev32 V0.16B, V0.16B + st1 {V0.16B}, [x1], #16 subs x2, x2, #16 bne L_AES_CBC_encrypt_NEON_loop_block - st1 {v0.2d}, [x5] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + st1 {V0.2D}, [x5] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -44049,810 +44049,810 @@ L_AES_CBC_encrypt_NEON_loop_nr AES_CTR_encrypt_NEON PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x6, L_AES_ARM64_NEON_te add x6, x6, L_AES_ARM64_NEON_te adrp x7, L_AES_ARM64_NEON_shift_rows_shuffle add x7, x7, L_AES_ARM64_NEON_shift_rows_shuffle - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x6], #0x40 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x6], #0x40 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x6], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x6] - ld1 {v2.2d}, [x5] - rev64 v8.16b, v2.16b - rev32 v2.16b, v2.16b - mov x10, v8.d[1] - mov x11, v8.d[0] + ld1 {V16.16B, V17.16B, V18.16B, V19.16B}, [x6], #0x40 + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x6], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x6], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x6] + ld1 {V2.2D}, [x5] + rev64 V8.16B, V2.16B + rev32 V2.16B, V2.16B + mov x10, V8.D[1] + mov x11, V8.D[0] cmp x2, #0x40 blt L_AES_CTR_encrypt_NEON_start_2 L_AES_CTR_encrypt_NEON_loop_4 mov x9, x3 - ld1 {v4.2d}, [x9], #16 - mov v8.d[1], x10 - mov v8.d[0], x11 - rev64 v8.4s, v8.4s + ld1 {V4.2D}, [x9], #16 + mov V8.D[1], x10 + mov V8.D[0], x11 + rev64 V8.4S, V8.4S ; Round: 0 - XOR in key schedule - eor v0.16b, v8.16b, v4.16b + eor V0.16B, V8.16B, V4.16B adds x10, x10, #1 adc x11, x11, xzr - mov v8.d[1], x10 - mov v8.d[0], x11 - rev64 v8.4s, v8.4s - eor v1.16b, v8.16b, v4.16b + mov V8.D[1], x10 + mov V8.D[0], x11 + rev64 V8.4S, V8.4S + eor V1.16B, V8.16B, V4.16B adds x10, x10, #1 adc x11, x11, xzr - mov v8.d[1], x10 - mov v8.d[0], x11 - rev64 v8.4s, v8.4s - eor v2.16b, v8.16b, v4.16b + mov V8.D[1], x10 + mov V8.D[0], x11 + rev64 V8.4S, V8.4S + eor V2.16B, V8.16B, V4.16B adds x10, x10, #1 adc x11, x11, xzr - mov v8.d[1], x10 - mov v8.d[0], x11 - rev64 v8.4s, v8.4s - eor v3.16b, v8.16b, v4.16b + mov V8.D[1], x10 + mov V8.D[0], x11 + rev64 V8.4S, V8.4S + eor V3.16B, V8.16B, V4.16B adds x10, x10, #1 adc x11, x11, xzr - mov v8.d[1], x10 - mov v8.d[0], x11 - rev64 v8.4s, v8.4s + mov V8.D[1], x10 + mov V8.D[0], x11 + rev64 V8.4S, V8.4S sub w8, w4, #2 L_AES_CTR_encrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x7] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - movi v0.16b, #27 - and v8.16b, v8.16b, v0.16b - and v9.16b, v9.16b, v0.16b - and v10.16b, v10.16b, v0.16b - and v11.16b, v11.16b, v0.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - eor v2.16b, v10.16b, v6.16b - eor v3.16b, v11.16b, v7.16b - shl v12.4s, v0.4s, #8 - shl v13.4s, v1.4s, #8 - shl v14.4s, v2.4s, #8 - shl v15.4s, v3.4s, #8 - sri v12.4s, v0.4s, #24 - sri v13.4s, v1.4s, #24 - sri v14.4s, v2.4s, #24 - sri v15.4s, v3.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - shl v2.4s, v6.4s, #24 - shl v3.4s, v7.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - sri v2.4s, v6.4s, #8 - sri v3.4s, v7.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - rev32 v6.8h, v6.8h - rev32 v7.8h, v7.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x7] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + movi V0.16B, #27 + and V8.16B, V8.16B, V0.16B + and V9.16B, V9.16B, V0.16B + and V10.16B, V10.16B, V0.16B + and V11.16B, V11.16B, V0.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + eor V2.16B, V10.16B, V6.16B + eor V3.16B, V11.16B, V7.16B + shl V12.4S, V0.4S, #8 + shl V13.4S, V1.4S, #8 + shl V14.4S, V2.4S, #8 + shl V15.4S, V3.4S, #8 + sri V12.4S, V0.4S, #24 + sri V13.4S, V1.4S, #24 + sri V14.4S, V2.4S, #24 + sri V15.4S, V3.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + shl V2.4S, V6.4S, #24 + shl V3.4S, V7.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + sri V2.4S, V6.4S, #8 + sri V3.4S, V7.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + rev32 V6.8H, V6.8H + rev32 V7.8H, V7.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x9], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b + ld1 {V0.2D}, [x9], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x7] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - sshr v10.16b, v2.16b, #7 - sshr v11.16b, v3.16b, #7 - shl v12.16b, v0.16b, #1 - shl v13.16b, v1.16b, #1 - shl v14.16b, v2.16b, #1 - shl v15.16b, v3.16b, #1 - movi v4.16b, #27 - and v8.16b, v8.16b, v4.16b - and v9.16b, v9.16b, v4.16b - and v10.16b, v10.16b, v4.16b - and v11.16b, v11.16b, v4.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v4.16b, v8.16b, v0.16b - eor v5.16b, v9.16b, v1.16b - eor v6.16b, v10.16b, v2.16b - eor v7.16b, v11.16b, v3.16b - shl v12.4s, v4.4s, #8 - shl v13.4s, v5.4s, #8 - shl v14.4s, v6.4s, #8 - shl v15.4s, v7.4s, #8 - sri v12.4s, v4.4s, #24 - sri v13.4s, v5.4s, #24 - sri v14.4s, v6.4s, #24 - sri v15.4s, v7.4s, #24 - shl v4.4s, v0.4s, #24 - shl v5.4s, v1.4s, #24 - shl v6.4s, v2.4s, #24 - shl v7.4s, v3.4s, #24 - sri v4.4s, v0.4s, #8 - sri v5.4s, v1.4s, #8 - sri v6.4s, v2.4s, #8 - sri v7.4s, v3.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - rev32 v2.8h, v2.8h - rev32 v3.8h, v3.8h - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x7] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + sshr V10.16B, V2.16B, #7 + sshr V11.16B, V3.16B, #7 + shl V12.16B, V0.16B, #1 + shl V13.16B, V1.16B, #1 + shl V14.16B, V2.16B, #1 + shl V15.16B, V3.16B, #1 + movi V4.16B, #27 + and V8.16B, V8.16B, V4.16B + and V9.16B, V9.16B, V4.16B + and V10.16B, V10.16B, V4.16B + and V11.16B, V11.16B, V4.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V4.16B, V8.16B, V0.16B + eor V5.16B, V9.16B, V1.16B + eor V6.16B, V10.16B, V2.16B + eor V7.16B, V11.16B, V3.16B + shl V12.4S, V4.4S, #8 + shl V13.4S, V5.4S, #8 + shl V14.4S, V6.4S, #8 + shl V15.4S, V7.4S, #8 + sri V12.4S, V4.4S, #24 + sri V13.4S, V5.4S, #24 + sri V14.4S, V6.4S, #24 + sri V15.4S, V7.4S, #24 + shl V4.4S, V0.4S, #24 + shl V5.4S, V1.4S, #24 + shl V6.4S, V2.4S, #24 + shl V7.4S, V3.4S, #24 + sri V4.4S, V0.4S, #8 + sri V5.4S, V1.4S, #8 + sri V6.4S, V2.4S, #8 + sri V7.4S, V3.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + rev32 V2.8H, V2.8H + rev32 V3.8H, V3.8H + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x9], #16 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b + ld1 {V4.2D}, [x9], #16 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B ; Round Done subs w8, w8, #2 bne L_AES_CTR_encrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x7] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - movi v0.16b, #27 - and v8.16b, v8.16b, v0.16b - and v9.16b, v9.16b, v0.16b - and v10.16b, v10.16b, v0.16b - and v11.16b, v11.16b, v0.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - eor v2.16b, v10.16b, v6.16b - eor v3.16b, v11.16b, v7.16b - shl v12.4s, v0.4s, #8 - shl v13.4s, v1.4s, #8 - shl v14.4s, v2.4s, #8 - shl v15.4s, v3.4s, #8 - sri v12.4s, v0.4s, #24 - sri v13.4s, v1.4s, #24 - sri v14.4s, v2.4s, #24 - sri v15.4s, v3.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - shl v2.4s, v6.4s, #24 - shl v3.4s, v7.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - sri v2.4s, v6.4s, #8 - sri v3.4s, v7.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - rev32 v6.8h, v6.8h - rev32 v7.8h, v7.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x7] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + movi V0.16B, #27 + and V8.16B, V8.16B, V0.16B + and V9.16B, V9.16B, V0.16B + and V10.16B, V10.16B, V0.16B + and V11.16B, V11.16B, V0.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + eor V2.16B, V10.16B, V6.16B + eor V3.16B, V11.16B, V7.16B + shl V12.4S, V0.4S, #8 + shl V13.4S, V1.4S, #8 + shl V14.4S, V2.4S, #8 + shl V15.4S, V3.4S, #8 + sri V12.4S, V0.4S, #24 + sri V13.4S, V1.4S, #24 + sri V14.4S, V2.4S, #24 + sri V15.4S, V3.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + shl V2.4S, V6.4S, #24 + shl V3.4S, V7.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + sri V2.4S, V6.4S, #8 + sri V3.4S, V7.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + rev32 V6.8H, V6.8H + rev32 V7.8H, V7.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x9], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b + ld1 {V0.2D}, [x9], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x7] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x7] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x9], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + ld1 {V4.2D}, [x9], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 sub x2, x2, #0x40 cmp x2, #0x40 bge L_AES_CTR_encrypt_NEON_loop_4 - mov v2.d[1], x10 - mov v2.d[0], x11 - rev64 v2.4s, v2.4s + mov V2.D[1], x10 + mov V2.D[0], x11 + rev64 V2.4S, V2.4S L_AES_CTR_encrypt_NEON_start_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 cmp x2, #16 beq L_AES_CTR_encrypt_NEON_start_1 blt L_AES_CTR_encrypt_NEON_data_done L_AES_CTR_encrypt_NEON_loop_2 mov x9, x3 - ld1 {v4.2d}, [x9], #16 + ld1 {V4.2D}, [x9], #16 ; Round: 0 - XOR in key schedule - eor v0.16b, v2.16b, v4.16b + eor V0.16B, V2.16B, V4.16B adds x10, x10, #1 adc x11, x11, xzr - mov v2.d[1], x10 - mov v2.d[0], x11 - rev64 v2.4s, v2.4s - eor v1.16b, v2.16b, v4.16b + mov V2.D[1], x10 + mov V2.D[0], x11 + rev64 V2.4S, V2.4S + eor V1.16B, V2.16B, V4.16B adds x10, x10, #1 adc x11, x11, xzr - mov v2.d[1], x10 - mov v2.d[0], x11 - rev64 v2.4s, v2.4s + mov V2.D[1], x10 + mov V2.D[0], x11 + rev64 V2.4S, V2.4S sub w8, w4, #2 L_AES_CTR_encrypt_NEON_loop_nr_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x7] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v10.16b, v4.16b, #1 - shl v11.16b, v5.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - shl v10.4s, v0.4s, #8 - shl v11.4s, v1.4s, #8 - sri v10.4s, v0.4s, #24 - sri v11.4s, v1.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x7] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V10.16B, V4.16B, #1 + shl V11.16B, V5.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + shl V10.4S, V0.4S, #8 + shl V11.4S, V1.4S, #8 + sri V10.4S, V0.4S, #24 + sri V11.4S, V1.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x9], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + ld1 {V0.2D}, [x9], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; Round Done - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x7] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - shl v10.16b, v0.16b, #1 - shl v11.16b, v1.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v4.16b, v8.16b, v0.16b - eor v5.16b, v9.16b, v1.16b - shl v10.4s, v4.4s, #8 - shl v11.4s, v5.4s, #8 - sri v10.4s, v4.4s, #24 - sri v11.4s, v5.4s, #24 - shl v4.4s, v0.4s, #24 - shl v5.4s, v1.4s, #24 - sri v4.4s, v0.4s, #8 - sri v5.4s, v1.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x7] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + shl V10.16B, V0.16B, #1 + shl V11.16B, V1.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V4.16B, V8.16B, V0.16B + eor V5.16B, V9.16B, V1.16B + shl V10.4S, V4.4S, #8 + shl V11.4S, V5.4S, #8 + sri V10.4S, V4.4S, #24 + sri V11.4S, V5.4S, #24 + shl V4.4S, V0.4S, #24 + shl V5.4S, V1.4S, #24 + sri V4.4S, V0.4S, #8 + sri V5.4S, V1.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x9], #16 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b + ld1 {V4.2D}, [x9], #16 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B ; Round Done subs w8, w8, #2 bne L_AES_CTR_encrypt_NEON_loop_nr_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x7] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v10.16b, v4.16b, #1 - shl v11.16b, v5.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - shl v10.4s, v0.4s, #8 - shl v11.4s, v1.4s, #8 - sri v10.4s, v0.4s, #24 - sri v11.4s, v1.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x7] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V10.16B, V4.16B, #1 + shl V11.16B, V5.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + shl V10.4S, V0.4S, #8 + shl V11.4S, V1.4S, #8 + sri V10.4S, V0.4S, #24 + sri V11.4S, V1.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x9], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + ld1 {V0.2D}, [x9], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; Round Done - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x7] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x7] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x9], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + ld1 {V4.2D}, [x9], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - ld1 {v4.16b, v5.16b}, [x0], #32 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - st1 {v0.16b, v1.16b}, [x1], #32 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + ld1 {V4.16B, V5.16B}, [x0], #32 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + st1 {V0.16B, V1.16B}, [x1], #32 sub x2, x2, #32 cmp x2, #0 beq L_AES_CTR_encrypt_NEON_data_done L_AES_CTR_encrypt_NEON_start_1 - ld1 {v3.2d}, [x7] + ld1 {V3.2D}, [x7] mov x9, x3 - ld1 {v4.2d}, [x9], #16 + ld1 {V4.2D}, [x9], #16 ; Round: 0 - XOR in key schedule - eor v0.16b, v2.16b, v4.16b + eor V0.16B, V2.16B, V4.16B sub w8, w4, #2 L_AES_CTR_encrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x9], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x9], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x9], #16 - sshr v10.16b, v0.16b, #7 - shl v9.16b, v0.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v0.8h - eor v11.16b, v10.16b, v0.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v0.4s, #24 - shl v8.4s, v11.4s, #8 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x9], #16 + sshr V10.16B, V0.16B, #7 + shl V9.16B, V0.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V0.8H + eor V11.16B, V10.16B, V0.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V0.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v4.16b - sri v9.4s, v0.4s, #8 - sri v8.4s, v11.4s, #24 - eor v0.16b, v10.16b, v9.16b - eor v0.16b, v0.16b, v8.16b + eor V10.16B, V10.16B, V4.16B + sri V9.4S, V0.4S, #8 + sri V8.4S, V11.4S, #24 + eor V0.16B, V10.16B, V9.16B + eor V0.16B, V0.16B, V8.16B subs w8, w8, #2 bne L_AES_CTR_encrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x9], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x9], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x9], #16 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x9], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - ld1 {v4.16b}, [x0], #16 - eor v0.16b, v0.16b, v4.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + ld1 {V4.16B}, [x0], #16 + eor V0.16B, V0.16B, V4.16B + st1 {V0.16B}, [x1], #16 adds x10, x10, #1 adc x11, x11, xzr - mov v2.d[1], x10 - mov v2.d[0], x11 - rev64 v2.4s, v2.4s + mov V2.D[1], x10 + mov V2.D[0], x11 + rev64 V2.4S, V2.4S L_AES_CTR_encrypt_NEON_data_done - rev32 v2.16b, v2.16b - st1 {v2.2d}, [x5] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + rev32 V2.16B, V2.16B + st1 {V2.2D}, [x5] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP ENDIF IF :DEF:HAVE_AES_DECRYPT IF :DEF:WOLFSSL_AES_DIRECT :LOR: :DEF:WOLFSSL_AES_COUNTER :LOR: :DEF:HAVE_AES_CBC :LOR: :DEF:HAVE_AES_ECB - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_NEON_td DCB 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38 @@ -44887,7 +44887,7 @@ L_AES_ARM64_NEON_td DCB 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 DCB 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 DCB 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_NEON_shift_rows_invshuffle DCB 0x04, 0x09, 0x0e, 0x03, 0x08, 0x0d, 0x02, 0x07 @@ -44899,568 +44899,568 @@ L_AES_ARM64_NEON_shift_rows_invshuffle AES_ECB_decrypt_NEON PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x5, L_AES_ARM64_NEON_td add x5, x5, L_AES_ARM64_NEON_td adrp x6, L_AES_ARM64_NEON_shift_rows_invshuffle add x6, x6, L_AES_ARM64_NEON_shift_rows_invshuffle - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x5], #0x40 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x5], #0x40 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x5], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x5] + ld1 {V16.16B, V17.16B, V18.16B, V19.16B}, [x5], #0x40 + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x5], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x5], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x5] cmp x2, #0x40 blt L_AES_ECB_decrypt_NEON_start_2 L_AES_ECB_decrypt_NEON_loop_4 mov x8, x3 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.2d}, [x8], #16 - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.2D}, [x8], #16 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B ; Round: 0 - XOR in key schedule - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B sub w7, w4, #2 L_AES_ECB_decrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x6] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - movi v28.16b, #27 - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - and v8.16b, v8.16b, v28.16b - and v9.16b, v9.16b, v28.16b - and v10.16b, v10.16b, v28.16b - and v11.16b, v11.16b, v28.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - ushr v14.16b, v6.16b, #6 - ushr v15.16b, v7.16b, #6 - shl v0.16b, v4.16b, #2 - shl v1.16b, v5.16b, #2 - shl v2.16b, v6.16b, #2 - shl v3.16b, v7.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - eor v14.16b, v14.16b, v2.16b - eor v15.16b, v15.16b, v3.16b - ushr v0.16b, v4.16b, #5 - ushr v1.16b, v5.16b, #5 - ushr v2.16b, v6.16b, #5 - ushr v3.16b, v7.16b, #5 - pmul v0.16b, v0.16b, v28.16b - pmul v1.16b, v1.16b, v28.16b - pmul v2.16b, v2.16b, v28.16b - pmul v3.16b, v3.16b, v28.16b - shl v28.16b, v4.16b, #3 - shl v29.16b, v5.16b, #3 - shl v30.16b, v6.16b, #3 - shl v31.16b, v7.16b, #3 - eor v0.16b, v0.16b, v28.16b - eor v1.16b, v1.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - eor v3.16b, v3.16b, v31.16b - eor v28.16b, v8.16b, v0.16b - eor v29.16b, v9.16b, v1.16b - eor v30.16b, v10.16b, v2.16b - eor v31.16b, v11.16b, v3.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - eor v8.16b, v12.16b, v0.16b - eor v9.16b, v13.16b, v1.16b - eor v10.16b, v14.16b, v2.16b - eor v11.16b, v15.16b, v3.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v4.16b - eor v29.16b, v29.16b, v5.16b - eor v30.16b, v30.16b, v6.16b - eor v31.16b, v31.16b, v7.16b - shl v4.4s, v28.4s, #8 - shl v5.4s, v29.4s, #8 - shl v6.4s, v30.4s, #8 - shl v7.4s, v31.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - rev32 v10.8h, v10.8h - rev32 v11.8h, v11.8h - sri v4.4s, v28.4s, #24 - sri v5.4s, v29.4s, #24 - sri v6.4s, v30.4s, #24 - sri v7.4s, v31.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b - shl v28.4s, v0.4s, #24 - shl v29.4s, v1.4s, #24 - shl v30.4s, v2.4s, #24 - shl v31.4s, v3.4s, #24 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - sri v28.4s, v0.4s, #8 - sri v29.4s, v1.4s, #8 - sri v30.4s, v2.4s, #8 - sri v31.4s, v3.4s, #8 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x5] + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x6] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + movi V28.16B, #27 + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + and V8.16B, V8.16B, V28.16B + and V9.16B, V9.16B, V28.16B + and V10.16B, V10.16B, V28.16B + and V11.16B, V11.16B, V28.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + ushr V14.16B, V6.16B, #6 + ushr V15.16B, V7.16B, #6 + shl V0.16B, V4.16B, #2 + shl V1.16B, V5.16B, #2 + shl V2.16B, V6.16B, #2 + shl V3.16B, V7.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + eor V14.16B, V14.16B, V2.16B + eor V15.16B, V15.16B, V3.16B + ushr V0.16B, V4.16B, #5 + ushr V1.16B, V5.16B, #5 + ushr V2.16B, V6.16B, #5 + ushr V3.16B, V7.16B, #5 + pmul V0.16B, V0.16B, V28.16B + pmul V1.16B, V1.16B, V28.16B + pmul V2.16B, V2.16B, V28.16B + pmul V3.16B, V3.16B, V28.16B + shl V28.16B, V4.16B, #3 + shl V29.16B, V5.16B, #3 + shl V30.16B, V6.16B, #3 + shl V31.16B, V7.16B, #3 + eor V0.16B, V0.16B, V28.16B + eor V1.16B, V1.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + eor V3.16B, V3.16B, V31.16B + eor V28.16B, V8.16B, V0.16B + eor V29.16B, V9.16B, V1.16B + eor V30.16B, V10.16B, V2.16B + eor V31.16B, V11.16B, V3.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + eor V8.16B, V12.16B, V0.16B + eor V9.16B, V13.16B, V1.16B + eor V10.16B, V14.16B, V2.16B + eor V11.16B, V15.16B, V3.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V4.16B + eor V29.16B, V29.16B, V5.16B + eor V30.16B, V30.16B, V6.16B + eor V31.16B, V31.16B, V7.16B + shl V4.4S, V28.4S, #8 + shl V5.4S, V29.4S, #8 + shl V6.4S, V30.4S, #8 + shl V7.4S, V31.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + rev32 V10.8H, V10.8H + rev32 V11.8H, V11.8H + sri V4.4S, V28.4S, #24 + sri V5.4S, V29.4S, #24 + sri V6.4S, V30.4S, #24 + sri V7.4S, V31.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B + shl V28.4S, V0.4S, #24 + shl V29.4S, V1.4S, #24 + shl V30.4S, V2.4S, #24 + shl V31.4S, V3.4S, #24 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + sri V28.4S, V0.4S, #8 + sri V29.4S, V1.4S, #8 + sri V30.4S, V2.4S, #8 + sri V31.4S, V3.4S, #8 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x5] ; XOR in Key Schedule - ld1 {v0.2d}, [x8], #16 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b + ld1 {V0.2D}, [x8], #16 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x6] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b - movi v28.16b, #27 - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - sshr v10.16b, v2.16b, #7 - sshr v11.16b, v3.16b, #7 - shl v12.16b, v0.16b, #1 - shl v13.16b, v1.16b, #1 - shl v14.16b, v2.16b, #1 - shl v15.16b, v3.16b, #1 - and v8.16b, v8.16b, v28.16b - and v9.16b, v9.16b, v28.16b - and v10.16b, v10.16b, v28.16b - and v11.16b, v11.16b, v28.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - ushr v12.16b, v0.16b, #6 - ushr v13.16b, v1.16b, #6 - ushr v14.16b, v2.16b, #6 - ushr v15.16b, v3.16b, #6 - shl v4.16b, v0.16b, #2 - shl v5.16b, v1.16b, #2 - shl v6.16b, v2.16b, #2 - shl v7.16b, v3.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v4.16b - eor v13.16b, v13.16b, v5.16b - eor v14.16b, v14.16b, v6.16b - eor v15.16b, v15.16b, v7.16b - ushr v4.16b, v0.16b, #5 - ushr v5.16b, v1.16b, #5 - ushr v6.16b, v2.16b, #5 - ushr v7.16b, v3.16b, #5 - pmul v4.16b, v4.16b, v28.16b - pmul v5.16b, v5.16b, v28.16b - pmul v6.16b, v6.16b, v28.16b - pmul v7.16b, v7.16b, v28.16b - shl v28.16b, v0.16b, #3 - shl v29.16b, v1.16b, #3 - shl v30.16b, v2.16b, #3 - shl v31.16b, v3.16b, #3 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - eor v28.16b, v8.16b, v4.16b - eor v29.16b, v9.16b, v5.16b - eor v30.16b, v10.16b, v6.16b - eor v31.16b, v11.16b, v7.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b - eor v8.16b, v12.16b, v4.16b - eor v9.16b, v13.16b, v5.16b - eor v10.16b, v14.16b, v6.16b - eor v11.16b, v15.16b, v7.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v0.16b - eor v29.16b, v29.16b, v1.16b - eor v30.16b, v30.16b, v2.16b - eor v31.16b, v31.16b, v3.16b - shl v0.4s, v28.4s, #8 - shl v1.4s, v29.4s, #8 - shl v2.4s, v30.4s, #8 - shl v3.4s, v31.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - rev32 v10.8h, v10.8h - rev32 v11.8h, v11.8h - sri v0.4s, v28.4s, #24 - sri v1.4s, v29.4s, #24 - sri v2.4s, v30.4s, #24 - sri v3.4s, v31.4s, #24 - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b - shl v28.4s, v4.4s, #24 - shl v29.4s, v5.4s, #24 - shl v30.4s, v6.4s, #24 - shl v31.4s, v7.4s, #24 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - sri v28.4s, v4.4s, #8 - sri v29.4s, v5.4s, #8 - sri v30.4s, v6.4s, #8 - sri v31.4s, v7.4s, #8 - eor v0.16b, v0.16b, v28.16b - eor v1.16b, v1.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - eor v3.16b, v3.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x5] + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x6] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B + movi V28.16B, #27 + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + sshr V10.16B, V2.16B, #7 + sshr V11.16B, V3.16B, #7 + shl V12.16B, V0.16B, #1 + shl V13.16B, V1.16B, #1 + shl V14.16B, V2.16B, #1 + shl V15.16B, V3.16B, #1 + and V8.16B, V8.16B, V28.16B + and V9.16B, V9.16B, V28.16B + and V10.16B, V10.16B, V28.16B + and V11.16B, V11.16B, V28.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + ushr V12.16B, V0.16B, #6 + ushr V13.16B, V1.16B, #6 + ushr V14.16B, V2.16B, #6 + ushr V15.16B, V3.16B, #6 + shl V4.16B, V0.16B, #2 + shl V5.16B, V1.16B, #2 + shl V6.16B, V2.16B, #2 + shl V7.16B, V3.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V4.16B + eor V13.16B, V13.16B, V5.16B + eor V14.16B, V14.16B, V6.16B + eor V15.16B, V15.16B, V7.16B + ushr V4.16B, V0.16B, #5 + ushr V5.16B, V1.16B, #5 + ushr V6.16B, V2.16B, #5 + ushr V7.16B, V3.16B, #5 + pmul V4.16B, V4.16B, V28.16B + pmul V5.16B, V5.16B, V28.16B + pmul V6.16B, V6.16B, V28.16B + pmul V7.16B, V7.16B, V28.16B + shl V28.16B, V0.16B, #3 + shl V29.16B, V1.16B, #3 + shl V30.16B, V2.16B, #3 + shl V31.16B, V3.16B, #3 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + eor V28.16B, V8.16B, V4.16B + eor V29.16B, V9.16B, V5.16B + eor V30.16B, V10.16B, V6.16B + eor V31.16B, V11.16B, V7.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B + eor V8.16B, V12.16B, V4.16B + eor V9.16B, V13.16B, V5.16B + eor V10.16B, V14.16B, V6.16B + eor V11.16B, V15.16B, V7.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V0.16B + eor V29.16B, V29.16B, V1.16B + eor V30.16B, V30.16B, V2.16B + eor V31.16B, V31.16B, V3.16B + shl V0.4S, V28.4S, #8 + shl V1.4S, V29.4S, #8 + shl V2.4S, V30.4S, #8 + shl V3.4S, V31.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + rev32 V10.8H, V10.8H + rev32 V11.8H, V11.8H + sri V0.4S, V28.4S, #24 + sri V1.4S, V29.4S, #24 + sri V2.4S, V30.4S, #24 + sri V3.4S, V31.4S, #24 + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B + shl V28.4S, V4.4S, #24 + shl V29.4S, V5.4S, #24 + shl V30.4S, V6.4S, #24 + shl V31.4S, V7.4S, #24 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + sri V28.4S, V4.4S, #8 + sri V29.4S, V5.4S, #8 + sri V30.4S, V6.4S, #8 + sri V31.4S, V7.4S, #8 + eor V0.16B, V0.16B, V28.16B + eor V1.16B, V1.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + eor V3.16B, V3.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x5] ; XOR in Key Schedule - ld1 {v4.2d}, [x8], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + ld1 {V4.2D}, [x8], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B ; Round Done subs w7, w7, #2 bne L_AES_ECB_decrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x6] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - movi v28.16b, #27 - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - and v8.16b, v8.16b, v28.16b - and v9.16b, v9.16b, v28.16b - and v10.16b, v10.16b, v28.16b - and v11.16b, v11.16b, v28.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - ushr v14.16b, v6.16b, #6 - ushr v15.16b, v7.16b, #6 - shl v0.16b, v4.16b, #2 - shl v1.16b, v5.16b, #2 - shl v2.16b, v6.16b, #2 - shl v3.16b, v7.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - eor v14.16b, v14.16b, v2.16b - eor v15.16b, v15.16b, v3.16b - ushr v0.16b, v4.16b, #5 - ushr v1.16b, v5.16b, #5 - ushr v2.16b, v6.16b, #5 - ushr v3.16b, v7.16b, #5 - pmul v0.16b, v0.16b, v28.16b - pmul v1.16b, v1.16b, v28.16b - pmul v2.16b, v2.16b, v28.16b - pmul v3.16b, v3.16b, v28.16b - shl v28.16b, v4.16b, #3 - shl v29.16b, v5.16b, #3 - shl v30.16b, v6.16b, #3 - shl v31.16b, v7.16b, #3 - eor v0.16b, v0.16b, v28.16b - eor v1.16b, v1.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - eor v3.16b, v3.16b, v31.16b - eor v28.16b, v8.16b, v0.16b - eor v29.16b, v9.16b, v1.16b - eor v30.16b, v10.16b, v2.16b - eor v31.16b, v11.16b, v3.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - eor v8.16b, v12.16b, v0.16b - eor v9.16b, v13.16b, v1.16b - eor v10.16b, v14.16b, v2.16b - eor v11.16b, v15.16b, v3.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v4.16b - eor v29.16b, v29.16b, v5.16b - eor v30.16b, v30.16b, v6.16b - eor v31.16b, v31.16b, v7.16b - shl v4.4s, v28.4s, #8 - shl v5.4s, v29.4s, #8 - shl v6.4s, v30.4s, #8 - shl v7.4s, v31.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - rev32 v10.8h, v10.8h - rev32 v11.8h, v11.8h - sri v4.4s, v28.4s, #24 - sri v5.4s, v29.4s, #24 - sri v6.4s, v30.4s, #24 - sri v7.4s, v31.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b - shl v28.4s, v0.4s, #24 - shl v29.4s, v1.4s, #24 - shl v30.4s, v2.4s, #24 - shl v31.4s, v3.4s, #24 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - sri v28.4s, v0.4s, #8 - sri v29.4s, v1.4s, #8 - sri v30.4s, v2.4s, #8 - sri v31.4s, v3.4s, #8 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x5] + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x6] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + movi V28.16B, #27 + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + and V8.16B, V8.16B, V28.16B + and V9.16B, V9.16B, V28.16B + and V10.16B, V10.16B, V28.16B + and V11.16B, V11.16B, V28.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + ushr V14.16B, V6.16B, #6 + ushr V15.16B, V7.16B, #6 + shl V0.16B, V4.16B, #2 + shl V1.16B, V5.16B, #2 + shl V2.16B, V6.16B, #2 + shl V3.16B, V7.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + eor V14.16B, V14.16B, V2.16B + eor V15.16B, V15.16B, V3.16B + ushr V0.16B, V4.16B, #5 + ushr V1.16B, V5.16B, #5 + ushr V2.16B, V6.16B, #5 + ushr V3.16B, V7.16B, #5 + pmul V0.16B, V0.16B, V28.16B + pmul V1.16B, V1.16B, V28.16B + pmul V2.16B, V2.16B, V28.16B + pmul V3.16B, V3.16B, V28.16B + shl V28.16B, V4.16B, #3 + shl V29.16B, V5.16B, #3 + shl V30.16B, V6.16B, #3 + shl V31.16B, V7.16B, #3 + eor V0.16B, V0.16B, V28.16B + eor V1.16B, V1.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + eor V3.16B, V3.16B, V31.16B + eor V28.16B, V8.16B, V0.16B + eor V29.16B, V9.16B, V1.16B + eor V30.16B, V10.16B, V2.16B + eor V31.16B, V11.16B, V3.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + eor V8.16B, V12.16B, V0.16B + eor V9.16B, V13.16B, V1.16B + eor V10.16B, V14.16B, V2.16B + eor V11.16B, V15.16B, V3.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V4.16B + eor V29.16B, V29.16B, V5.16B + eor V30.16B, V30.16B, V6.16B + eor V31.16B, V31.16B, V7.16B + shl V4.4S, V28.4S, #8 + shl V5.4S, V29.4S, #8 + shl V6.4S, V30.4S, #8 + shl V7.4S, V31.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + rev32 V10.8H, V10.8H + rev32 V11.8H, V11.8H + sri V4.4S, V28.4S, #24 + sri V5.4S, V29.4S, #24 + sri V6.4S, V30.4S, #24 + sri V7.4S, V31.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B + shl V28.4S, V0.4S, #24 + shl V29.4S, V1.4S, #24 + shl V30.4S, V2.4S, #24 + shl V31.4S, V3.4S, #24 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + sri V28.4S, V0.4S, #8 + sri V29.4S, V1.4S, #8 + sri V30.4S, V2.4S, #8 + sri V31.4S, V3.4S, #8 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x5] ; XOR in Key Schedule - ld1 {v0.2d}, [x8], #16 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b + ld1 {V0.2D}, [x8], #16 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x6] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x6] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x8], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + ld1 {V4.2D}, [x8], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 sub x2, x2, #0x40 cmp x2, #0x40 bge L_AES_ECB_decrypt_NEON_loop_4 @@ -45470,454 +45470,454 @@ L_AES_ECB_decrypt_NEON_start_2 blt L_AES_ECB_decrypt_NEON_data_done L_AES_ECB_decrypt_NEON_loop_2 mov x8, x3 - ld1 {v0.16b, v1.16b}, [x0], #32 - ld1 {v4.2d}, [x8], #16 - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b + ld1 {V0.16B, V1.16B}, [x0], #32 + ld1 {V4.2D}, [x8], #16 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B ; Round: 0 - XOR in key schedule - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B sub w7, w4, #2 L_AES_ECB_decrypt_NEON_loop_nr_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x6] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - movi v10.16b, #27 - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - and v8.16b, v8.16b, v10.16b - and v9.16b, v9.16b, v10.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - shl v0.16b, v4.16b, #2 - shl v1.16b, v5.16b, #2 - pmul v12.16b, v12.16b, v10.16b - pmul v13.16b, v13.16b, v10.16b - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - ushr v0.16b, v4.16b, #5 - ushr v1.16b, v5.16b, #5 - pmul v0.16b, v0.16b, v10.16b - pmul v1.16b, v1.16b, v10.16b - shl v10.16b, v4.16b, #3 - shl v11.16b, v5.16b, #3 - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b - eor v10.16b, v8.16b, v0.16b - eor v11.16b, v9.16b, v1.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v8.16b, v12.16b, v0.16b - eor v9.16b, v13.16b, v1.16b - eor v12.16b, v12.16b, v10.16b - eor v13.16b, v13.16b, v11.16b - eor v10.16b, v10.16b, v4.16b - eor v11.16b, v11.16b, v5.16b - shl v4.4s, v10.4s, #8 - shl v5.4s, v11.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - sri v4.4s, v10.4s, #24 - sri v5.4s, v11.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - shl v10.4s, v0.4s, #24 - shl v11.4s, v1.4s, #24 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - sri v10.4s, v0.4s, #8 - sri v11.4s, v1.4s, #8 - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x6] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + movi V10.16B, #27 + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + and V8.16B, V8.16B, V10.16B + and V9.16B, V9.16B, V10.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + shl V0.16B, V4.16B, #2 + shl V1.16B, V5.16B, #2 + pmul V12.16B, V12.16B, V10.16B + pmul V13.16B, V13.16B, V10.16B + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + ushr V0.16B, V4.16B, #5 + ushr V1.16B, V5.16B, #5 + pmul V0.16B, V0.16B, V10.16B + pmul V1.16B, V1.16B, V10.16B + shl V10.16B, V4.16B, #3 + shl V11.16B, V5.16B, #3 + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B + eor V10.16B, V8.16B, V0.16B + eor V11.16B, V9.16B, V1.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V8.16B, V12.16B, V0.16B + eor V9.16B, V13.16B, V1.16B + eor V12.16B, V12.16B, V10.16B + eor V13.16B, V13.16B, V11.16B + eor V10.16B, V10.16B, V4.16B + eor V11.16B, V11.16B, V5.16B + shl V4.4S, V10.4S, #8 + shl V5.4S, V11.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + sri V4.4S, V10.4S, #24 + sri V5.4S, V11.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + shl V10.4S, V0.4S, #24 + shl V11.4S, V1.4S, #24 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + sri V10.4S, V0.4S, #8 + sri V11.4S, V1.4S, #8 + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x8], #16 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b + ld1 {V0.2D}, [x8], #16 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B ; Round Done - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x6] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - movi v10.16b, #27 - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - shl v12.16b, v0.16b, #1 - shl v13.16b, v1.16b, #1 - and v8.16b, v8.16b, v10.16b - and v9.16b, v9.16b, v10.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - ushr v12.16b, v0.16b, #6 - ushr v13.16b, v1.16b, #6 - shl v4.16b, v0.16b, #2 - shl v5.16b, v1.16b, #2 - pmul v12.16b, v12.16b, v10.16b - pmul v13.16b, v13.16b, v10.16b - eor v12.16b, v12.16b, v4.16b - eor v13.16b, v13.16b, v5.16b - ushr v4.16b, v0.16b, #5 - ushr v5.16b, v1.16b, #5 - pmul v4.16b, v4.16b, v10.16b - pmul v5.16b, v5.16b, v10.16b - shl v10.16b, v0.16b, #3 - shl v11.16b, v1.16b, #3 - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b - eor v10.16b, v8.16b, v4.16b - eor v11.16b, v9.16b, v5.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v8.16b, v12.16b, v4.16b - eor v9.16b, v13.16b, v5.16b - eor v12.16b, v12.16b, v10.16b - eor v13.16b, v13.16b, v11.16b - eor v10.16b, v10.16b, v0.16b - eor v11.16b, v11.16b, v1.16b - shl v0.4s, v10.4s, #8 - shl v1.4s, v11.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - sri v0.4s, v10.4s, #24 - sri v1.4s, v11.4s, #24 - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - shl v10.4s, v4.4s, #24 - shl v11.4s, v5.4s, #24 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - sri v10.4s, v4.4s, #8 - sri v11.4s, v5.4s, #8 - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x6] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + movi V10.16B, #27 + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + shl V12.16B, V0.16B, #1 + shl V13.16B, V1.16B, #1 + and V8.16B, V8.16B, V10.16B + and V9.16B, V9.16B, V10.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + ushr V12.16B, V0.16B, #6 + ushr V13.16B, V1.16B, #6 + shl V4.16B, V0.16B, #2 + shl V5.16B, V1.16B, #2 + pmul V12.16B, V12.16B, V10.16B + pmul V13.16B, V13.16B, V10.16B + eor V12.16B, V12.16B, V4.16B + eor V13.16B, V13.16B, V5.16B + ushr V4.16B, V0.16B, #5 + ushr V5.16B, V1.16B, #5 + pmul V4.16B, V4.16B, V10.16B + pmul V5.16B, V5.16B, V10.16B + shl V10.16B, V0.16B, #3 + shl V11.16B, V1.16B, #3 + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B + eor V10.16B, V8.16B, V4.16B + eor V11.16B, V9.16B, V5.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V8.16B, V12.16B, V4.16B + eor V9.16B, V13.16B, V5.16B + eor V12.16B, V12.16B, V10.16B + eor V13.16B, V13.16B, V11.16B + eor V10.16B, V10.16B, V0.16B + eor V11.16B, V11.16B, V1.16B + shl V0.4S, V10.4S, #8 + shl V1.4S, V11.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + sri V0.4S, V10.4S, #24 + sri V1.4S, V11.4S, #24 + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + shl V10.4S, V4.4S, #24 + shl V11.4S, V5.4S, #24 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + sri V10.4S, V4.4S, #8 + sri V11.4S, V5.4S, #8 + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x8], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + ld1 {V4.2D}, [x8], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B ; Round Done subs w7, w7, #2 bne L_AES_ECB_decrypt_NEON_loop_nr_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x6] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - movi v10.16b, #27 - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - and v8.16b, v8.16b, v10.16b - and v9.16b, v9.16b, v10.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - shl v0.16b, v4.16b, #2 - shl v1.16b, v5.16b, #2 - pmul v12.16b, v12.16b, v10.16b - pmul v13.16b, v13.16b, v10.16b - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - ushr v0.16b, v4.16b, #5 - ushr v1.16b, v5.16b, #5 - pmul v0.16b, v0.16b, v10.16b - pmul v1.16b, v1.16b, v10.16b - shl v10.16b, v4.16b, #3 - shl v11.16b, v5.16b, #3 - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b - eor v10.16b, v8.16b, v0.16b - eor v11.16b, v9.16b, v1.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v8.16b, v12.16b, v0.16b - eor v9.16b, v13.16b, v1.16b - eor v12.16b, v12.16b, v10.16b - eor v13.16b, v13.16b, v11.16b - eor v10.16b, v10.16b, v4.16b - eor v11.16b, v11.16b, v5.16b - shl v4.4s, v10.4s, #8 - shl v5.4s, v11.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - sri v4.4s, v10.4s, #24 - sri v5.4s, v11.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - shl v10.4s, v0.4s, #24 - shl v11.4s, v1.4s, #24 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - sri v10.4s, v0.4s, #8 - sri v11.4s, v1.4s, #8 - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x6] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + movi V10.16B, #27 + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + and V8.16B, V8.16B, V10.16B + and V9.16B, V9.16B, V10.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + shl V0.16B, V4.16B, #2 + shl V1.16B, V5.16B, #2 + pmul V12.16B, V12.16B, V10.16B + pmul V13.16B, V13.16B, V10.16B + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + ushr V0.16B, V4.16B, #5 + ushr V1.16B, V5.16B, #5 + pmul V0.16B, V0.16B, V10.16B + pmul V1.16B, V1.16B, V10.16B + shl V10.16B, V4.16B, #3 + shl V11.16B, V5.16B, #3 + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B + eor V10.16B, V8.16B, V0.16B + eor V11.16B, V9.16B, V1.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V8.16B, V12.16B, V0.16B + eor V9.16B, V13.16B, V1.16B + eor V12.16B, V12.16B, V10.16B + eor V13.16B, V13.16B, V11.16B + eor V10.16B, V10.16B, V4.16B + eor V11.16B, V11.16B, V5.16B + shl V4.4S, V10.4S, #8 + shl V5.4S, V11.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + sri V4.4S, V10.4S, #24 + sri V5.4S, V11.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + shl V10.4S, V0.4S, #24 + shl V11.4S, V1.4S, #24 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + sri V10.4S, V0.4S, #8 + sri V11.4S, V1.4S, #8 + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x8], #16 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b + ld1 {V0.2D}, [x8], #16 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B ; Round Done - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x6] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x6] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x8], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + ld1 {V4.2D}, [x8], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - st1 {v0.16b, v1.16b}, [x1], #32 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + st1 {V0.16B, V1.16B}, [x1], #32 sub x2, x2, #32 cmp x2, #0 beq L_AES_ECB_decrypt_NEON_data_done L_AES_ECB_decrypt_NEON_start_1 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 - ld1 {v3.2d}, [x6] + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 + ld1 {V3.2D}, [x6] mov x8, x3 - ld1 {v0.16b}, [x0], #16 - ld1 {v4.2d}, [x8], #16 - rev32 v0.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + ld1 {V4.2D}, [x8], #16 + rev32 V0.16B, V0.16B ; Round: 0 - XOR in key schedule - eor v0.16b, v0.16b, v4.16b + eor V0.16B, V0.16B, V4.16B sub w7, w4, #2 L_AES_ECB_decrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - sshr v10.16b, v4.16b, #7 - ushr v11.16b, v4.16b, #6 - ushr v8.16b, v4.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v4.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v4.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v4.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v4.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v4.16b - shl v4.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v4.4s, v9.4s, #24 - eor v4.16b, v4.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v4.16b, v4.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v4.16b, v4.16b, v9.16b - ld1 {v0.2d}, [x8], #16 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + sshr V10.16B, V4.16B, #7 + ushr V11.16B, V4.16B, #6 + ushr V8.16B, V4.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V4.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V4.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V4.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V4.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V4.16B + shl V4.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V4.4S, V9.4S, #24 + eor V4.16B, V4.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V4.16B, V4.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V4.16B, V4.16B, V9.16B + ld1 {V0.2D}, [x8], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - sshr v10.16b, v0.16b, #7 - ushr v11.16b, v0.16b, #6 - ushr v8.16b, v0.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v0.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v0.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v0.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v0.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v0.16b - shl v0.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v0.4s, v9.4s, #24 - eor v0.16b, v0.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v0.16b, v0.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v0.16b, v0.16b, v9.16b - ld1 {v4.2d}, [x8], #16 + eor V4.16B, V4.16B, V0.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + sshr V10.16B, V0.16B, #7 + ushr V11.16B, V0.16B, #6 + ushr V8.16B, V0.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V0.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V0.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V0.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V0.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V0.16B + shl V0.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V0.4S, V9.4S, #24 + eor V0.16B, V0.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V0.16B, V0.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V0.16B, V0.16B, V9.16B + ld1 {V4.2D}, [x8], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b + eor V0.16B, V0.16B, V4.16B subs w7, w7, #2 bne L_AES_ECB_decrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - sshr v10.16b, v4.16b, #7 - ushr v11.16b, v4.16b, #6 - ushr v8.16b, v4.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v4.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v4.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v4.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v4.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v4.16b - shl v4.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v4.4s, v9.4s, #24 - eor v4.16b, v4.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v4.16b, v4.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v4.16b, v4.16b, v9.16b - ld1 {v0.2d}, [x8], #16 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + sshr V10.16B, V4.16B, #7 + ushr V11.16B, V4.16B, #6 + ushr V8.16B, V4.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V4.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V4.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V4.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V4.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V4.16B + shl V4.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V4.4S, V9.4S, #24 + eor V4.16B, V4.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V4.16B, V4.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V4.16B, V4.16B, V9.16B + ld1 {V0.2D}, [x8], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x8], #16 + eor V4.16B, V4.16B, V0.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x8], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + st1 {V0.16B}, [x1], #16 L_AES_ECB_decrypt_NEON_data_done - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -45929,578 +45929,578 @@ L_AES_ECB_decrypt_NEON_data_done AES_CBC_decrypt_NEON PROC stp x29, x30, [sp, #-160]! add x29, sp, #0 - stp d8, d9, [x29, #96] - stp d10, d11, [x29, #112] - stp d12, d13, [x29, #128] - stp d14, d15, [x29, #144] + stp D8, D9, [x29, #96] + stp D10, D11, [x29, #112] + stp D12, D13, [x29, #128] + stp D14, D15, [x29, #144] adrp x6, L_AES_ARM64_NEON_td add x6, x6, L_AES_ARM64_NEON_td adrp x7, L_AES_ARM64_NEON_shift_rows_invshuffle add x7, x7, L_AES_ARM64_NEON_shift_rows_invshuffle - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x6], #0x40 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x6], #0x40 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x6], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x6] - ld1 {v3.2d}, [x5] + ld1 {V16.16B, V17.16B, V18.16B, V19.16B}, [x6], #0x40 + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x6], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x6], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x6] + ld1 {V3.2D}, [x5] add x10, x29, #16 cmp x2, #0x40 blt L_AES_CBC_decrypt_NEON_start_2 L_AES_CBC_decrypt_NEON_loop_4 mov x9, x3 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - st1 {v3.2d, v4.2d, v5.2d, v6.2d}, [x10] - str q7, [x10, #64] - ld1 {v8.2d}, [x9], #16 - rev32 v4.16b, v4.16b - rev32 v5.16b, v5.16b - rev32 v6.16b, v6.16b - rev32 v7.16b, v7.16b + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + st1 {V3.2D, V4.2D, V5.2D, V6.2D}, [x10] + str Q7, [x10, #64] + ld1 {V8.2D}, [x9], #16 + rev32 V4.16B, V4.16B + rev32 V5.16B, V5.16B + rev32 V6.16B, V6.16B + rev32 V7.16B, V7.16B ; Round: 0 - XOR in key schedule - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v8.16b - eor v6.16b, v6.16b, v8.16b - eor v7.16b, v7.16b, v8.16b + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V8.16B + eor V6.16B, V6.16B, V8.16B + eor V7.16B, V7.16B, V8.16B sub w8, w4, #2 L_AES_CBC_decrypt_NEON_loop_nr_4 - tbl v8.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v9.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v10.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v11.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v0.16b, v4.16b, v12.16b - eor v1.16b, v5.16b, v12.16b - eor v2.16b, v6.16b, v12.16b - eor v3.16b, v7.16b, v12.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v1.16b - tbl v2.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v2.16b - tbl v3.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v3.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - eor v0.16b, v4.16b, v13.16b - eor v1.16b, v5.16b, v13.16b - eor v2.16b, v6.16b, v13.16b - eor v3.16b, v7.16b, v13.16b - tbl v0.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v0.16b - tbl v1.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v1.16b - tbl v2.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v2.16b - tbl v3.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v3.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - eor v0.16b, v4.16b, v14.16b - eor v1.16b, v5.16b, v14.16b - eor v2.16b, v6.16b, v14.16b - eor v3.16b, v7.16b, v14.16b - tbl v0.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v0.16b - tbl v1.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v1.16b - tbl v2.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v2.16b - tbl v3.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v3.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld1 {v4.16b}, [x7] - tbl v8.16b, {v8.16b}, v4.16b - tbl v9.16b, {v9.16b}, v4.16b - tbl v10.16b, {v10.16b}, v4.16b - tbl v11.16b, {v11.16b}, v4.16b - movi v28.16b, #27 - sshr v0.16b, v8.16b, #7 - sshr v1.16b, v9.16b, #7 - sshr v2.16b, v10.16b, #7 - sshr v3.16b, v11.16b, #7 - shl v12.16b, v8.16b, #1 - shl v13.16b, v9.16b, #1 - shl v14.16b, v10.16b, #1 - shl v15.16b, v11.16b, #1 - and v0.16b, v0.16b, v28.16b - and v1.16b, v1.16b, v28.16b - and v2.16b, v2.16b, v28.16b - and v3.16b, v3.16b, v28.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b - ushr v12.16b, v8.16b, #6 - ushr v13.16b, v9.16b, #6 - ushr v14.16b, v10.16b, #6 - ushr v15.16b, v11.16b, #6 - shl v4.16b, v8.16b, #2 - shl v5.16b, v9.16b, #2 - shl v6.16b, v10.16b, #2 - shl v7.16b, v11.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v4.16b - eor v13.16b, v13.16b, v5.16b - eor v14.16b, v14.16b, v6.16b - eor v15.16b, v15.16b, v7.16b - ushr v4.16b, v8.16b, #5 - ushr v5.16b, v9.16b, #5 - ushr v6.16b, v10.16b, #5 - ushr v7.16b, v11.16b, #5 - pmul v4.16b, v4.16b, v28.16b - pmul v5.16b, v5.16b, v28.16b - pmul v6.16b, v6.16b, v28.16b - pmul v7.16b, v7.16b, v28.16b - shl v28.16b, v8.16b, #3 - shl v29.16b, v9.16b, #3 - shl v30.16b, v10.16b, #3 - shl v31.16b, v11.16b, #3 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - eor v28.16b, v0.16b, v4.16b - eor v29.16b, v1.16b, v5.16b - eor v30.16b, v2.16b, v6.16b - eor v31.16b, v3.16b, v7.16b - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v0.16b, v12.16b, v4.16b - eor v1.16b, v13.16b, v5.16b - eor v2.16b, v14.16b, v6.16b - eor v3.16b, v15.16b, v7.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v8.16b - eor v29.16b, v29.16b, v9.16b - eor v30.16b, v30.16b, v10.16b - eor v31.16b, v31.16b, v11.16b - shl v8.4s, v28.4s, #8 - shl v9.4s, v29.4s, #8 - shl v10.4s, v30.4s, #8 - shl v11.4s, v31.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - rev32 v2.8h, v2.8h - rev32 v3.8h, v3.8h - sri v8.4s, v28.4s, #24 - sri v9.4s, v29.4s, #24 - sri v10.4s, v30.4s, #24 - sri v11.4s, v31.4s, #24 - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - shl v28.4s, v4.4s, #24 - shl v29.4s, v5.4s, #24 - shl v30.4s, v6.4s, #24 - shl v31.4s, v7.4s, #24 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - sri v28.4s, v4.4s, #8 - sri v29.4s, v5.4s, #8 - sri v30.4s, v6.4s, #8 - sri v31.4s, v7.4s, #8 - eor v8.16b, v8.16b, v28.16b - eor v9.16b, v9.16b, v29.16b - eor v10.16b, v10.16b, v30.16b - eor v11.16b, v11.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x6] + tbl V8.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V9.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V10.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V11.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V0.16B, V4.16B, V12.16B + eor V1.16B, V5.16B, V12.16B + eor V2.16B, V6.16B, V12.16B + eor V3.16B, V7.16B, V12.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V1.16B + tbl V2.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V2.16B + tbl V3.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V3.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + eor V0.16B, V4.16B, V13.16B + eor V1.16B, V5.16B, V13.16B + eor V2.16B, V6.16B, V13.16B + eor V3.16B, V7.16B, V13.16B + tbl V0.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V0.16B + tbl V1.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V1.16B + tbl V2.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V2.16B + tbl V3.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V3.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + eor V0.16B, V4.16B, V14.16B + eor V1.16B, V5.16B, V14.16B + eor V2.16B, V6.16B, V14.16B + eor V3.16B, V7.16B, V14.16B + tbl V0.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V0.16B + tbl V1.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V1.16B + tbl V2.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V2.16B + tbl V3.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V3.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld1 {V4.16B}, [x7] + tbl V8.16B, {V8.16B}, V4.16B + tbl V9.16B, {V9.16B}, V4.16B + tbl V10.16B, {V10.16B}, V4.16B + tbl V11.16B, {V11.16B}, V4.16B + movi V28.16B, #27 + sshr V0.16B, V8.16B, #7 + sshr V1.16B, V9.16B, #7 + sshr V2.16B, V10.16B, #7 + sshr V3.16B, V11.16B, #7 + shl V12.16B, V8.16B, #1 + shl V13.16B, V9.16B, #1 + shl V14.16B, V10.16B, #1 + shl V15.16B, V11.16B, #1 + and V0.16B, V0.16B, V28.16B + and V1.16B, V1.16B, V28.16B + and V2.16B, V2.16B, V28.16B + and V3.16B, V3.16B, V28.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B + ushr V12.16B, V8.16B, #6 + ushr V13.16B, V9.16B, #6 + ushr V14.16B, V10.16B, #6 + ushr V15.16B, V11.16B, #6 + shl V4.16B, V8.16B, #2 + shl V5.16B, V9.16B, #2 + shl V6.16B, V10.16B, #2 + shl V7.16B, V11.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V4.16B + eor V13.16B, V13.16B, V5.16B + eor V14.16B, V14.16B, V6.16B + eor V15.16B, V15.16B, V7.16B + ushr V4.16B, V8.16B, #5 + ushr V5.16B, V9.16B, #5 + ushr V6.16B, V10.16B, #5 + ushr V7.16B, V11.16B, #5 + pmul V4.16B, V4.16B, V28.16B + pmul V5.16B, V5.16B, V28.16B + pmul V6.16B, V6.16B, V28.16B + pmul V7.16B, V7.16B, V28.16B + shl V28.16B, V8.16B, #3 + shl V29.16B, V9.16B, #3 + shl V30.16B, V10.16B, #3 + shl V31.16B, V11.16B, #3 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + eor V28.16B, V0.16B, V4.16B + eor V29.16B, V1.16B, V5.16B + eor V30.16B, V2.16B, V6.16B + eor V31.16B, V3.16B, V7.16B + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V0.16B, V12.16B, V4.16B + eor V1.16B, V13.16B, V5.16B + eor V2.16B, V14.16B, V6.16B + eor V3.16B, V15.16B, V7.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V8.16B + eor V29.16B, V29.16B, V9.16B + eor V30.16B, V30.16B, V10.16B + eor V31.16B, V31.16B, V11.16B + shl V8.4S, V28.4S, #8 + shl V9.4S, V29.4S, #8 + shl V10.4S, V30.4S, #8 + shl V11.4S, V31.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + rev32 V2.8H, V2.8H + rev32 V3.8H, V3.8H + sri V8.4S, V28.4S, #24 + sri V9.4S, V29.4S, #24 + sri V10.4S, V30.4S, #24 + sri V11.4S, V31.4S, #24 + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + shl V28.4S, V4.4S, #24 + shl V29.4S, V5.4S, #24 + shl V30.4S, V6.4S, #24 + shl V31.4S, V7.4S, #24 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + sri V28.4S, V4.4S, #8 + sri V29.4S, V5.4S, #8 + sri V30.4S, V6.4S, #8 + sri V31.4S, V7.4S, #8 + eor V8.16B, V8.16B, V28.16B + eor V9.16B, V9.16B, V29.16B + eor V10.16B, V10.16B, V30.16B + eor V11.16B, V11.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x6] ; XOR in Key Schedule - ld1 {v4.2d}, [x9], #16 - eor v8.16b, v8.16b, v4.16b - eor v9.16b, v9.16b, v4.16b - eor v10.16b, v10.16b, v4.16b - eor v11.16b, v11.16b, v4.16b + ld1 {V4.2D}, [x9], #16 + eor V8.16B, V8.16B, V4.16B + eor V9.16B, V9.16B, V4.16B + eor V10.16B, V10.16B, V4.16B + eor V11.16B, V11.16B, V4.16B ; Round Done - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v8.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v9.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v10.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v11.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v0.16b, v8.16b, v12.16b - eor v1.16b, v9.16b, v12.16b - eor v2.16b, v10.16b, v12.16b - eor v3.16b, v11.16b, v12.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v1.16b - tbl v2.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v2.16b - tbl v3.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v3.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - orr v6.16b, v6.16b, v2.16b - orr v7.16b, v7.16b, v3.16b - eor v0.16b, v8.16b, v13.16b - eor v1.16b, v9.16b, v13.16b - eor v2.16b, v10.16b, v13.16b - eor v3.16b, v11.16b, v13.16b - tbl v0.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v0.16b - tbl v1.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v1.16b - tbl v2.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v2.16b - tbl v3.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v3.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - orr v6.16b, v6.16b, v2.16b - orr v7.16b, v7.16b, v3.16b - eor v0.16b, v8.16b, v14.16b - eor v1.16b, v9.16b, v14.16b - eor v2.16b, v10.16b, v14.16b - eor v3.16b, v11.16b, v14.16b - tbl v0.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v0.16b - tbl v1.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v1.16b - tbl v2.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v2.16b - tbl v3.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v3.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - orr v6.16b, v6.16b, v2.16b - orr v7.16b, v7.16b, v3.16b - ld1 {v8.16b}, [x7] - tbl v4.16b, {v4.16b}, v8.16b - tbl v5.16b, {v5.16b}, v8.16b - tbl v6.16b, {v6.16b}, v8.16b - tbl v7.16b, {v7.16b}, v8.16b - movi v28.16b, #27 - sshr v0.16b, v4.16b, #7 - sshr v1.16b, v5.16b, #7 - sshr v2.16b, v6.16b, #7 - sshr v3.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - and v0.16b, v0.16b, v28.16b - and v1.16b, v1.16b, v28.16b - and v2.16b, v2.16b, v28.16b - and v3.16b, v3.16b, v28.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - ushr v14.16b, v6.16b, #6 - ushr v15.16b, v7.16b, #6 - shl v8.16b, v4.16b, #2 - shl v9.16b, v5.16b, #2 - shl v10.16b, v6.16b, #2 - shl v11.16b, v7.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v8.16b - eor v13.16b, v13.16b, v9.16b - eor v14.16b, v14.16b, v10.16b - eor v15.16b, v15.16b, v11.16b - ushr v8.16b, v4.16b, #5 - ushr v9.16b, v5.16b, #5 - ushr v10.16b, v6.16b, #5 - ushr v11.16b, v7.16b, #5 - pmul v8.16b, v8.16b, v28.16b - pmul v9.16b, v9.16b, v28.16b - pmul v10.16b, v10.16b, v28.16b - pmul v11.16b, v11.16b, v28.16b - shl v28.16b, v4.16b, #3 - shl v29.16b, v5.16b, #3 - shl v30.16b, v6.16b, #3 - shl v31.16b, v7.16b, #3 - eor v8.16b, v8.16b, v28.16b - eor v9.16b, v9.16b, v29.16b - eor v10.16b, v10.16b, v30.16b - eor v11.16b, v11.16b, v31.16b - eor v28.16b, v0.16b, v8.16b - eor v29.16b, v1.16b, v9.16b - eor v30.16b, v2.16b, v10.16b - eor v31.16b, v3.16b, v11.16b - eor v8.16b, v8.16b, v4.16b - eor v9.16b, v9.16b, v5.16b - eor v10.16b, v10.16b, v6.16b - eor v11.16b, v11.16b, v7.16b - eor v0.16b, v12.16b, v8.16b - eor v1.16b, v13.16b, v9.16b - eor v2.16b, v14.16b, v10.16b - eor v3.16b, v15.16b, v11.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v4.16b - eor v29.16b, v29.16b, v5.16b - eor v30.16b, v30.16b, v6.16b - eor v31.16b, v31.16b, v7.16b - shl v4.4s, v28.4s, #8 - shl v5.4s, v29.4s, #8 - shl v6.4s, v30.4s, #8 - shl v7.4s, v31.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - rev32 v2.8h, v2.8h - rev32 v3.8h, v3.8h - sri v4.4s, v28.4s, #24 - sri v5.4s, v29.4s, #24 - sri v6.4s, v30.4s, #24 - sri v7.4s, v31.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b - shl v28.4s, v8.4s, #24 - shl v29.4s, v9.4s, #24 - shl v30.4s, v10.4s, #24 - shl v31.4s, v11.4s, #24 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b - sri v28.4s, v8.4s, #8 - sri v29.4s, v9.4s, #8 - sri v30.4s, v10.4s, #8 - sri v31.4s, v11.4s, #8 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x6] + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V8.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V9.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V10.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V11.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V0.16B, V8.16B, V12.16B + eor V1.16B, V9.16B, V12.16B + eor V2.16B, V10.16B, V12.16B + eor V3.16B, V11.16B, V12.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V1.16B + tbl V2.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V2.16B + tbl V3.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V3.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + orr V6.16B, V6.16B, V2.16B + orr V7.16B, V7.16B, V3.16B + eor V0.16B, V8.16B, V13.16B + eor V1.16B, V9.16B, V13.16B + eor V2.16B, V10.16B, V13.16B + eor V3.16B, V11.16B, V13.16B + tbl V0.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V0.16B + tbl V1.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V1.16B + tbl V2.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V2.16B + tbl V3.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V3.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + orr V6.16B, V6.16B, V2.16B + orr V7.16B, V7.16B, V3.16B + eor V0.16B, V8.16B, V14.16B + eor V1.16B, V9.16B, V14.16B + eor V2.16B, V10.16B, V14.16B + eor V3.16B, V11.16B, V14.16B + tbl V0.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V0.16B + tbl V1.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V1.16B + tbl V2.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V2.16B + tbl V3.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V3.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + orr V6.16B, V6.16B, V2.16B + orr V7.16B, V7.16B, V3.16B + ld1 {V8.16B}, [x7] + tbl V4.16B, {V4.16B}, V8.16B + tbl V5.16B, {V5.16B}, V8.16B + tbl V6.16B, {V6.16B}, V8.16B + tbl V7.16B, {V7.16B}, V8.16B + movi V28.16B, #27 + sshr V0.16B, V4.16B, #7 + sshr V1.16B, V5.16B, #7 + sshr V2.16B, V6.16B, #7 + sshr V3.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + and V0.16B, V0.16B, V28.16B + and V1.16B, V1.16B, V28.16B + and V2.16B, V2.16B, V28.16B + and V3.16B, V3.16B, V28.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + ushr V14.16B, V6.16B, #6 + ushr V15.16B, V7.16B, #6 + shl V8.16B, V4.16B, #2 + shl V9.16B, V5.16B, #2 + shl V10.16B, V6.16B, #2 + shl V11.16B, V7.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V8.16B + eor V13.16B, V13.16B, V9.16B + eor V14.16B, V14.16B, V10.16B + eor V15.16B, V15.16B, V11.16B + ushr V8.16B, V4.16B, #5 + ushr V9.16B, V5.16B, #5 + ushr V10.16B, V6.16B, #5 + ushr V11.16B, V7.16B, #5 + pmul V8.16B, V8.16B, V28.16B + pmul V9.16B, V9.16B, V28.16B + pmul V10.16B, V10.16B, V28.16B + pmul V11.16B, V11.16B, V28.16B + shl V28.16B, V4.16B, #3 + shl V29.16B, V5.16B, #3 + shl V30.16B, V6.16B, #3 + shl V31.16B, V7.16B, #3 + eor V8.16B, V8.16B, V28.16B + eor V9.16B, V9.16B, V29.16B + eor V10.16B, V10.16B, V30.16B + eor V11.16B, V11.16B, V31.16B + eor V28.16B, V0.16B, V8.16B + eor V29.16B, V1.16B, V9.16B + eor V30.16B, V2.16B, V10.16B + eor V31.16B, V3.16B, V11.16B + eor V8.16B, V8.16B, V4.16B + eor V9.16B, V9.16B, V5.16B + eor V10.16B, V10.16B, V6.16B + eor V11.16B, V11.16B, V7.16B + eor V0.16B, V12.16B, V8.16B + eor V1.16B, V13.16B, V9.16B + eor V2.16B, V14.16B, V10.16B + eor V3.16B, V15.16B, V11.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V4.16B + eor V29.16B, V29.16B, V5.16B + eor V30.16B, V30.16B, V6.16B + eor V31.16B, V31.16B, V7.16B + shl V4.4S, V28.4S, #8 + shl V5.4S, V29.4S, #8 + shl V6.4S, V30.4S, #8 + shl V7.4S, V31.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + rev32 V2.8H, V2.8H + rev32 V3.8H, V3.8H + sri V4.4S, V28.4S, #24 + sri V5.4S, V29.4S, #24 + sri V6.4S, V30.4S, #24 + sri V7.4S, V31.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B + shl V28.4S, V8.4S, #24 + shl V29.4S, V9.4S, #24 + shl V30.4S, V10.4S, #24 + shl V31.4S, V11.4S, #24 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B + sri V28.4S, V8.4S, #8 + sri V29.4S, V9.4S, #8 + sri V30.4S, V10.4S, #8 + sri V31.4S, V11.4S, #8 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x6] ; XOR in Key Schedule - ld1 {v8.2d}, [x9], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v8.16b - eor v6.16b, v6.16b, v8.16b - eor v7.16b, v7.16b, v8.16b + ld1 {V8.2D}, [x9], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V8.16B + eor V6.16B, V6.16B, V8.16B + eor V7.16B, V7.16B, V8.16B ; Round Done subs w8, w8, #2 bne L_AES_CBC_decrypt_NEON_loop_nr_4 - tbl v8.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v9.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v10.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v11.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v0.16b, v4.16b, v12.16b - eor v1.16b, v5.16b, v12.16b - eor v2.16b, v6.16b, v12.16b - eor v3.16b, v7.16b, v12.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v1.16b - tbl v2.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v2.16b - tbl v3.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v3.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - eor v0.16b, v4.16b, v13.16b - eor v1.16b, v5.16b, v13.16b - eor v2.16b, v6.16b, v13.16b - eor v3.16b, v7.16b, v13.16b - tbl v0.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v0.16b - tbl v1.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v1.16b - tbl v2.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v2.16b - tbl v3.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v3.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - eor v0.16b, v4.16b, v14.16b - eor v1.16b, v5.16b, v14.16b - eor v2.16b, v6.16b, v14.16b - eor v3.16b, v7.16b, v14.16b - tbl v0.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v0.16b - tbl v1.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v1.16b - tbl v2.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v2.16b - tbl v3.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v3.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld1 {v4.16b}, [x7] - tbl v8.16b, {v8.16b}, v4.16b - tbl v9.16b, {v9.16b}, v4.16b - tbl v10.16b, {v10.16b}, v4.16b - tbl v11.16b, {v11.16b}, v4.16b - movi v28.16b, #27 - sshr v0.16b, v8.16b, #7 - sshr v1.16b, v9.16b, #7 - sshr v2.16b, v10.16b, #7 - sshr v3.16b, v11.16b, #7 - shl v12.16b, v8.16b, #1 - shl v13.16b, v9.16b, #1 - shl v14.16b, v10.16b, #1 - shl v15.16b, v11.16b, #1 - and v0.16b, v0.16b, v28.16b - and v1.16b, v1.16b, v28.16b - and v2.16b, v2.16b, v28.16b - and v3.16b, v3.16b, v28.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b - ushr v12.16b, v8.16b, #6 - ushr v13.16b, v9.16b, #6 - ushr v14.16b, v10.16b, #6 - ushr v15.16b, v11.16b, #6 - shl v4.16b, v8.16b, #2 - shl v5.16b, v9.16b, #2 - shl v6.16b, v10.16b, #2 - shl v7.16b, v11.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v4.16b - eor v13.16b, v13.16b, v5.16b - eor v14.16b, v14.16b, v6.16b - eor v15.16b, v15.16b, v7.16b - ushr v4.16b, v8.16b, #5 - ushr v5.16b, v9.16b, #5 - ushr v6.16b, v10.16b, #5 - ushr v7.16b, v11.16b, #5 - pmul v4.16b, v4.16b, v28.16b - pmul v5.16b, v5.16b, v28.16b - pmul v6.16b, v6.16b, v28.16b - pmul v7.16b, v7.16b, v28.16b - shl v28.16b, v8.16b, #3 - shl v29.16b, v9.16b, #3 - shl v30.16b, v10.16b, #3 - shl v31.16b, v11.16b, #3 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - eor v28.16b, v0.16b, v4.16b - eor v29.16b, v1.16b, v5.16b - eor v30.16b, v2.16b, v6.16b - eor v31.16b, v3.16b, v7.16b - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v0.16b, v12.16b, v4.16b - eor v1.16b, v13.16b, v5.16b - eor v2.16b, v14.16b, v6.16b - eor v3.16b, v15.16b, v7.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v8.16b - eor v29.16b, v29.16b, v9.16b - eor v30.16b, v30.16b, v10.16b - eor v31.16b, v31.16b, v11.16b - shl v8.4s, v28.4s, #8 - shl v9.4s, v29.4s, #8 - shl v10.4s, v30.4s, #8 - shl v11.4s, v31.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - rev32 v2.8h, v2.8h - rev32 v3.8h, v3.8h - sri v8.4s, v28.4s, #24 - sri v9.4s, v29.4s, #24 - sri v10.4s, v30.4s, #24 - sri v11.4s, v31.4s, #24 - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - shl v28.4s, v4.4s, #24 - shl v29.4s, v5.4s, #24 - shl v30.4s, v6.4s, #24 - shl v31.4s, v7.4s, #24 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - eor v10.16b, v10.16b, v2.16b - eor v11.16b, v11.16b, v3.16b - sri v28.4s, v4.4s, #8 - sri v29.4s, v5.4s, #8 - sri v30.4s, v6.4s, #8 - sri v31.4s, v7.4s, #8 - eor v8.16b, v8.16b, v28.16b - eor v9.16b, v9.16b, v29.16b - eor v10.16b, v10.16b, v30.16b - eor v11.16b, v11.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x6] + tbl V8.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V9.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V10.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V11.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V0.16B, V4.16B, V12.16B + eor V1.16B, V5.16B, V12.16B + eor V2.16B, V6.16B, V12.16B + eor V3.16B, V7.16B, V12.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V1.16B + tbl V2.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V2.16B + tbl V3.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V3.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + eor V0.16B, V4.16B, V13.16B + eor V1.16B, V5.16B, V13.16B + eor V2.16B, V6.16B, V13.16B + eor V3.16B, V7.16B, V13.16B + tbl V0.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V0.16B + tbl V1.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V1.16B + tbl V2.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V2.16B + tbl V3.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V3.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + eor V0.16B, V4.16B, V14.16B + eor V1.16B, V5.16B, V14.16B + eor V2.16B, V6.16B, V14.16B + eor V3.16B, V7.16B, V14.16B + tbl V0.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V0.16B + tbl V1.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V1.16B + tbl V2.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V2.16B + tbl V3.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V3.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld1 {V4.16B}, [x7] + tbl V8.16B, {V8.16B}, V4.16B + tbl V9.16B, {V9.16B}, V4.16B + tbl V10.16B, {V10.16B}, V4.16B + tbl V11.16B, {V11.16B}, V4.16B + movi V28.16B, #27 + sshr V0.16B, V8.16B, #7 + sshr V1.16B, V9.16B, #7 + sshr V2.16B, V10.16B, #7 + sshr V3.16B, V11.16B, #7 + shl V12.16B, V8.16B, #1 + shl V13.16B, V9.16B, #1 + shl V14.16B, V10.16B, #1 + shl V15.16B, V11.16B, #1 + and V0.16B, V0.16B, V28.16B + and V1.16B, V1.16B, V28.16B + and V2.16B, V2.16B, V28.16B + and V3.16B, V3.16B, V28.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B + ushr V12.16B, V8.16B, #6 + ushr V13.16B, V9.16B, #6 + ushr V14.16B, V10.16B, #6 + ushr V15.16B, V11.16B, #6 + shl V4.16B, V8.16B, #2 + shl V5.16B, V9.16B, #2 + shl V6.16B, V10.16B, #2 + shl V7.16B, V11.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V4.16B + eor V13.16B, V13.16B, V5.16B + eor V14.16B, V14.16B, V6.16B + eor V15.16B, V15.16B, V7.16B + ushr V4.16B, V8.16B, #5 + ushr V5.16B, V9.16B, #5 + ushr V6.16B, V10.16B, #5 + ushr V7.16B, V11.16B, #5 + pmul V4.16B, V4.16B, V28.16B + pmul V5.16B, V5.16B, V28.16B + pmul V6.16B, V6.16B, V28.16B + pmul V7.16B, V7.16B, V28.16B + shl V28.16B, V8.16B, #3 + shl V29.16B, V9.16B, #3 + shl V30.16B, V10.16B, #3 + shl V31.16B, V11.16B, #3 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + eor V28.16B, V0.16B, V4.16B + eor V29.16B, V1.16B, V5.16B + eor V30.16B, V2.16B, V6.16B + eor V31.16B, V3.16B, V7.16B + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V0.16B, V12.16B, V4.16B + eor V1.16B, V13.16B, V5.16B + eor V2.16B, V14.16B, V6.16B + eor V3.16B, V15.16B, V7.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V8.16B + eor V29.16B, V29.16B, V9.16B + eor V30.16B, V30.16B, V10.16B + eor V31.16B, V31.16B, V11.16B + shl V8.4S, V28.4S, #8 + shl V9.4S, V29.4S, #8 + shl V10.4S, V30.4S, #8 + shl V11.4S, V31.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + rev32 V2.8H, V2.8H + rev32 V3.8H, V3.8H + sri V8.4S, V28.4S, #24 + sri V9.4S, V29.4S, #24 + sri V10.4S, V30.4S, #24 + sri V11.4S, V31.4S, #24 + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + shl V28.4S, V4.4S, #24 + shl V29.4S, V5.4S, #24 + shl V30.4S, V6.4S, #24 + shl V31.4S, V7.4S, #24 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + eor V10.16B, V10.16B, V2.16B + eor V11.16B, V11.16B, V3.16B + sri V28.4S, V4.4S, #8 + sri V29.4S, V5.4S, #8 + sri V30.4S, V6.4S, #8 + sri V31.4S, V7.4S, #8 + eor V8.16B, V8.16B, V28.16B + eor V9.16B, V9.16B, V29.16B + eor V10.16B, V10.16B, V30.16B + eor V11.16B, V11.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x6] ; XOR in Key Schedule - ld1 {v4.2d}, [x9], #16 - eor v8.16b, v8.16b, v4.16b - eor v9.16b, v9.16b, v4.16b - eor v10.16b, v10.16b, v4.16b - eor v11.16b, v11.16b, v4.16b + ld1 {V4.2D}, [x9], #16 + eor V8.16B, V8.16B, V4.16B + eor V9.16B, V9.16B, V4.16B + eor V10.16B, V10.16B, V4.16B + eor V11.16B, V11.16B, V4.16B ; Round Done - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v8.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v9.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v10.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v11.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v0.16b, v8.16b, v12.16b - eor v1.16b, v9.16b, v12.16b - eor v2.16b, v10.16b, v12.16b - eor v3.16b, v11.16b, v12.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v1.16b - tbl v2.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v2.16b - tbl v3.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v3.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - orr v6.16b, v6.16b, v2.16b - orr v7.16b, v7.16b, v3.16b - eor v0.16b, v8.16b, v13.16b - eor v1.16b, v9.16b, v13.16b - eor v2.16b, v10.16b, v13.16b - eor v3.16b, v11.16b, v13.16b - tbl v0.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v0.16b - tbl v1.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v1.16b - tbl v2.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v2.16b - tbl v3.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v3.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - orr v6.16b, v6.16b, v2.16b - orr v7.16b, v7.16b, v3.16b - eor v0.16b, v8.16b, v14.16b - eor v1.16b, v9.16b, v14.16b - eor v2.16b, v10.16b, v14.16b - eor v3.16b, v11.16b, v14.16b - tbl v0.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v0.16b - tbl v1.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v1.16b - tbl v2.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v2.16b - tbl v3.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v3.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - orr v6.16b, v6.16b, v2.16b - orr v7.16b, v7.16b, v3.16b - ld1 {v8.16b}, [x7] - tbl v4.16b, {v4.16b}, v8.16b - tbl v5.16b, {v5.16b}, v8.16b - tbl v6.16b, {v6.16b}, v8.16b - tbl v7.16b, {v7.16b}, v8.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V8.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V9.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V10.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V11.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V0.16B, V8.16B, V12.16B + eor V1.16B, V9.16B, V12.16B + eor V2.16B, V10.16B, V12.16B + eor V3.16B, V11.16B, V12.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V1.16B + tbl V2.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V2.16B + tbl V3.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V3.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + orr V6.16B, V6.16B, V2.16B + orr V7.16B, V7.16B, V3.16B + eor V0.16B, V8.16B, V13.16B + eor V1.16B, V9.16B, V13.16B + eor V2.16B, V10.16B, V13.16B + eor V3.16B, V11.16B, V13.16B + tbl V0.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V0.16B + tbl V1.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V1.16B + tbl V2.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V2.16B + tbl V3.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V3.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + orr V6.16B, V6.16B, V2.16B + orr V7.16B, V7.16B, V3.16B + eor V0.16B, V8.16B, V14.16B + eor V1.16B, V9.16B, V14.16B + eor V2.16B, V10.16B, V14.16B + eor V3.16B, V11.16B, V14.16B + tbl V0.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V0.16B + tbl V1.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V1.16B + tbl V2.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V2.16B + tbl V3.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V3.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + orr V6.16B, V6.16B, V2.16B + orr V7.16B, V7.16B, V3.16B + ld1 {V8.16B}, [x7] + tbl V4.16B, {V4.16B}, V8.16B + tbl V5.16B, {V5.16B}, V8.16B + tbl V6.16B, {V6.16B}, V8.16B + tbl V7.16B, {V7.16B}, V8.16B ; XOR in Key Schedule - ld1 {v8.2d}, [x9], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v8.16b - eor v6.16b, v6.16b, v8.16b - eor v7.16b, v7.16b, v8.16b + ld1 {V8.2D}, [x9], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V8.16B + eor V6.16B, V6.16B, V8.16B + eor V7.16B, V7.16B, V8.16B ; Round Done - rev32 v4.16b, v4.16b - rev32 v5.16b, v5.16b - rev32 v6.16b, v6.16b - rev32 v7.16b, v7.16b - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x10] - ldr q3, [x10, #64] - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - st1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 + rev32 V4.16B, V4.16B + rev32 V5.16B, V5.16B + rev32 V6.16B, V6.16B + rev32 V7.16B, V7.16B + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x10] + ldr Q3, [x10, #64] + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + st1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 sub x2, x2, #0x40 cmp x2, #0x40 bge L_AES_CBC_decrypt_NEON_loop_4 @@ -46510,465 +46510,465 @@ L_AES_CBC_decrypt_NEON_start_2 blt L_AES_CBC_decrypt_NEON_data_done L_AES_CBC_decrypt_NEON_loop_2 mov x9, x3 - ld1 {v4.16b, v5.16b}, [x0], #32 - st1 {v3.2d, v4.2d, v5.2d}, [x10] - ld1 {v8.2d}, [x9], #16 - rev32 v4.16b, v4.16b - rev32 v5.16b, v5.16b + ld1 {V4.16B, V5.16B}, [x0], #32 + st1 {V3.2D, V4.2D, V5.2D}, [x10] + ld1 {V8.2D}, [x9], #16 + rev32 V4.16B, V4.16B + rev32 V5.16B, V5.16B ; Round: 0 - XOR in key schedule - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v8.16b + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V8.16B sub w8, w4, #2 L_AES_CBC_decrypt_NEON_loop_nr_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v0.16b, v4.16b, v12.16b - eor v1.16b, v5.16b, v12.16b - tbl v8.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v9.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v1.16b - eor v2.16b, v4.16b, v13.16b - eor v3.16b, v5.16b, v13.16b - tbl v2.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v2.16b - tbl v3.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v3.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - eor v0.16b, v4.16b, v14.16b - eor v1.16b, v5.16b, v14.16b - orr v8.16b, v8.16b, v2.16b - orr v9.16b, v9.16b, v3.16b - tbl v0.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v0.16b - tbl v1.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v1.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - ld1 {v4.16b}, [x7] - tbl v8.16b, {v8.16b}, v4.16b - tbl v9.16b, {v9.16b}, v4.16b - movi v2.16b, #27 - sshr v0.16b, v8.16b, #7 - sshr v1.16b, v9.16b, #7 - shl v12.16b, v8.16b, #1 - shl v13.16b, v9.16b, #1 - and v0.16b, v0.16b, v2.16b - and v1.16b, v1.16b, v2.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - ushr v12.16b, v8.16b, #6 - ushr v13.16b, v9.16b, #6 - shl v4.16b, v8.16b, #2 - shl v5.16b, v9.16b, #2 - pmul v12.16b, v12.16b, v2.16b - pmul v13.16b, v13.16b, v2.16b - eor v12.16b, v12.16b, v4.16b - eor v13.16b, v13.16b, v5.16b - ushr v4.16b, v8.16b, #5 - ushr v5.16b, v9.16b, #5 - pmul v4.16b, v4.16b, v2.16b - pmul v5.16b, v5.16b, v2.16b - shl v2.16b, v8.16b, #3 - shl v3.16b, v9.16b, #3 - eor v4.16b, v4.16b, v2.16b - eor v5.16b, v5.16b, v3.16b - eor v2.16b, v0.16b, v4.16b - eor v3.16b, v1.16b, v5.16b - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v0.16b, v12.16b, v4.16b - eor v1.16b, v13.16b, v5.16b - eor v12.16b, v12.16b, v2.16b - eor v13.16b, v13.16b, v3.16b - eor v2.16b, v2.16b, v8.16b - eor v3.16b, v3.16b, v9.16b - shl v8.4s, v2.4s, #8 - shl v9.4s, v3.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - sri v8.4s, v2.4s, #24 - sri v9.4s, v3.4s, #24 - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - shl v2.4s, v4.4s, #24 - shl v3.4s, v5.4s, #24 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - sri v2.4s, v4.4s, #8 - sri v3.4s, v5.4s, #8 - eor v8.16b, v8.16b, v2.16b - eor v9.16b, v9.16b, v3.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V0.16B, V4.16B, V12.16B + eor V1.16B, V5.16B, V12.16B + tbl V8.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V9.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V1.16B + eor V2.16B, V4.16B, V13.16B + eor V3.16B, V5.16B, V13.16B + tbl V2.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V2.16B + tbl V3.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V3.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + eor V0.16B, V4.16B, V14.16B + eor V1.16B, V5.16B, V14.16B + orr V8.16B, V8.16B, V2.16B + orr V9.16B, V9.16B, V3.16B + tbl V0.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V0.16B + tbl V1.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V1.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + ld1 {V4.16B}, [x7] + tbl V8.16B, {V8.16B}, V4.16B + tbl V9.16B, {V9.16B}, V4.16B + movi V2.16B, #27 + sshr V0.16B, V8.16B, #7 + sshr V1.16B, V9.16B, #7 + shl V12.16B, V8.16B, #1 + shl V13.16B, V9.16B, #1 + and V0.16B, V0.16B, V2.16B + and V1.16B, V1.16B, V2.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + ushr V12.16B, V8.16B, #6 + ushr V13.16B, V9.16B, #6 + shl V4.16B, V8.16B, #2 + shl V5.16B, V9.16B, #2 + pmul V12.16B, V12.16B, V2.16B + pmul V13.16B, V13.16B, V2.16B + eor V12.16B, V12.16B, V4.16B + eor V13.16B, V13.16B, V5.16B + ushr V4.16B, V8.16B, #5 + ushr V5.16B, V9.16B, #5 + pmul V4.16B, V4.16B, V2.16B + pmul V5.16B, V5.16B, V2.16B + shl V2.16B, V8.16B, #3 + shl V3.16B, V9.16B, #3 + eor V4.16B, V4.16B, V2.16B + eor V5.16B, V5.16B, V3.16B + eor V2.16B, V0.16B, V4.16B + eor V3.16B, V1.16B, V5.16B + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V0.16B, V12.16B, V4.16B + eor V1.16B, V13.16B, V5.16B + eor V12.16B, V12.16B, V2.16B + eor V13.16B, V13.16B, V3.16B + eor V2.16B, V2.16B, V8.16B + eor V3.16B, V3.16B, V9.16B + shl V8.4S, V2.4S, #8 + shl V9.4S, V3.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + sri V8.4S, V2.4S, #24 + sri V9.4S, V3.4S, #24 + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + shl V2.4S, V4.4S, #24 + shl V3.4S, V5.4S, #24 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + sri V2.4S, V4.4S, #8 + sri V3.4S, V5.4S, #8 + eor V8.16B, V8.16B, V2.16B + eor V9.16B, V9.16B, V3.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x9], #16 - eor v8.16b, v8.16b, v4.16b - eor v9.16b, v9.16b, v4.16b + ld1 {V4.2D}, [x9], #16 + eor V8.16B, V8.16B, V4.16B + eor V9.16B, V9.16B, V4.16B ; Round Done - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v0.16b, v8.16b, v12.16b - eor v1.16b, v9.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v8.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v9.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v1.16b - eor v2.16b, v8.16b, v13.16b - eor v3.16b, v9.16b, v13.16b - tbl v2.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v2.16b - tbl v3.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v3.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - eor v0.16b, v8.16b, v14.16b - eor v1.16b, v9.16b, v14.16b - orr v4.16b, v4.16b, v2.16b - orr v5.16b, v5.16b, v3.16b - tbl v0.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v0.16b - tbl v1.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v1.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - ld1 {v8.16b}, [x7] - tbl v4.16b, {v4.16b}, v8.16b - tbl v5.16b, {v5.16b}, v8.16b - movi v2.16b, #27 - sshr v0.16b, v4.16b, #7 - sshr v1.16b, v5.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - and v0.16b, v0.16b, v2.16b - and v1.16b, v1.16b, v2.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - shl v8.16b, v4.16b, #2 - shl v9.16b, v5.16b, #2 - pmul v12.16b, v12.16b, v2.16b - pmul v13.16b, v13.16b, v2.16b - eor v12.16b, v12.16b, v8.16b - eor v13.16b, v13.16b, v9.16b - ushr v8.16b, v4.16b, #5 - ushr v9.16b, v5.16b, #5 - pmul v8.16b, v8.16b, v2.16b - pmul v9.16b, v9.16b, v2.16b - shl v2.16b, v4.16b, #3 - shl v3.16b, v5.16b, #3 - eor v8.16b, v8.16b, v2.16b - eor v9.16b, v9.16b, v3.16b - eor v2.16b, v0.16b, v8.16b - eor v3.16b, v1.16b, v9.16b - eor v8.16b, v8.16b, v4.16b - eor v9.16b, v9.16b, v5.16b - eor v0.16b, v12.16b, v8.16b - eor v1.16b, v13.16b, v9.16b - eor v12.16b, v12.16b, v2.16b - eor v13.16b, v13.16b, v3.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v5.16b - shl v4.4s, v2.4s, #8 - shl v5.4s, v3.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - sri v4.4s, v2.4s, #24 - sri v5.4s, v3.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - shl v2.4s, v8.4s, #24 - shl v3.4s, v9.4s, #24 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - sri v2.4s, v8.4s, #8 - sri v3.4s, v9.4s, #8 - eor v4.16b, v4.16b, v2.16b - eor v5.16b, v5.16b, v3.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V0.16B, V8.16B, V12.16B + eor V1.16B, V9.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V8.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V9.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V1.16B + eor V2.16B, V8.16B, V13.16B + eor V3.16B, V9.16B, V13.16B + tbl V2.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V2.16B + tbl V3.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V3.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + eor V0.16B, V8.16B, V14.16B + eor V1.16B, V9.16B, V14.16B + orr V4.16B, V4.16B, V2.16B + orr V5.16B, V5.16B, V3.16B + tbl V0.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V0.16B + tbl V1.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V1.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + ld1 {V8.16B}, [x7] + tbl V4.16B, {V4.16B}, V8.16B + tbl V5.16B, {V5.16B}, V8.16B + movi V2.16B, #27 + sshr V0.16B, V4.16B, #7 + sshr V1.16B, V5.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + and V0.16B, V0.16B, V2.16B + and V1.16B, V1.16B, V2.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + shl V8.16B, V4.16B, #2 + shl V9.16B, V5.16B, #2 + pmul V12.16B, V12.16B, V2.16B + pmul V13.16B, V13.16B, V2.16B + eor V12.16B, V12.16B, V8.16B + eor V13.16B, V13.16B, V9.16B + ushr V8.16B, V4.16B, #5 + ushr V9.16B, V5.16B, #5 + pmul V8.16B, V8.16B, V2.16B + pmul V9.16B, V9.16B, V2.16B + shl V2.16B, V4.16B, #3 + shl V3.16B, V5.16B, #3 + eor V8.16B, V8.16B, V2.16B + eor V9.16B, V9.16B, V3.16B + eor V2.16B, V0.16B, V8.16B + eor V3.16B, V1.16B, V9.16B + eor V8.16B, V8.16B, V4.16B + eor V9.16B, V9.16B, V5.16B + eor V0.16B, V12.16B, V8.16B + eor V1.16B, V13.16B, V9.16B + eor V12.16B, V12.16B, V2.16B + eor V13.16B, V13.16B, V3.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V5.16B + shl V4.4S, V2.4S, #8 + shl V5.4S, V3.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + sri V4.4S, V2.4S, #24 + sri V5.4S, V3.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + shl V2.4S, V8.4S, #24 + shl V3.4S, V9.4S, #24 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + sri V2.4S, V8.4S, #8 + sri V3.4S, V9.4S, #8 + eor V4.16B, V4.16B, V2.16B + eor V5.16B, V5.16B, V3.16B ; XOR in Key Schedule - ld1 {v8.2d}, [x9], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v8.16b + ld1 {V8.2D}, [x9], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V8.16B ; Round Done subs w8, w8, #2 bne L_AES_CBC_decrypt_NEON_loop_nr_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v0.16b, v4.16b, v12.16b - eor v1.16b, v5.16b, v12.16b - tbl v8.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v9.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v1.16b - eor v2.16b, v4.16b, v13.16b - eor v3.16b, v5.16b, v13.16b - tbl v2.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v2.16b - tbl v3.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v3.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - eor v0.16b, v4.16b, v14.16b - eor v1.16b, v5.16b, v14.16b - orr v8.16b, v8.16b, v2.16b - orr v9.16b, v9.16b, v3.16b - tbl v0.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v0.16b - tbl v1.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v1.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - ld1 {v4.16b}, [x7] - tbl v8.16b, {v8.16b}, v4.16b - tbl v9.16b, {v9.16b}, v4.16b - movi v2.16b, #27 - sshr v0.16b, v8.16b, #7 - sshr v1.16b, v9.16b, #7 - shl v12.16b, v8.16b, #1 - shl v13.16b, v9.16b, #1 - and v0.16b, v0.16b, v2.16b - and v1.16b, v1.16b, v2.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - ushr v12.16b, v8.16b, #6 - ushr v13.16b, v9.16b, #6 - shl v4.16b, v8.16b, #2 - shl v5.16b, v9.16b, #2 - pmul v12.16b, v12.16b, v2.16b - pmul v13.16b, v13.16b, v2.16b - eor v12.16b, v12.16b, v4.16b - eor v13.16b, v13.16b, v5.16b - ushr v4.16b, v8.16b, #5 - ushr v5.16b, v9.16b, #5 - pmul v4.16b, v4.16b, v2.16b - pmul v5.16b, v5.16b, v2.16b - shl v2.16b, v8.16b, #3 - shl v3.16b, v9.16b, #3 - eor v4.16b, v4.16b, v2.16b - eor v5.16b, v5.16b, v3.16b - eor v2.16b, v0.16b, v4.16b - eor v3.16b, v1.16b, v5.16b - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v0.16b, v12.16b, v4.16b - eor v1.16b, v13.16b, v5.16b - eor v12.16b, v12.16b, v2.16b - eor v13.16b, v13.16b, v3.16b - eor v2.16b, v2.16b, v8.16b - eor v3.16b, v3.16b, v9.16b - shl v8.4s, v2.4s, #8 - shl v9.4s, v3.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - sri v8.4s, v2.4s, #24 - sri v9.4s, v3.4s, #24 - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - shl v2.4s, v4.4s, #24 - shl v3.4s, v5.4s, #24 - eor v8.16b, v8.16b, v0.16b - eor v9.16b, v9.16b, v1.16b - sri v2.4s, v4.4s, #8 - sri v3.4s, v5.4s, #8 - eor v8.16b, v8.16b, v2.16b - eor v9.16b, v9.16b, v3.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V0.16B, V4.16B, V12.16B + eor V1.16B, V5.16B, V12.16B + tbl V8.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V9.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V1.16B + eor V2.16B, V4.16B, V13.16B + eor V3.16B, V5.16B, V13.16B + tbl V2.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V2.16B + tbl V3.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V3.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + eor V0.16B, V4.16B, V14.16B + eor V1.16B, V5.16B, V14.16B + orr V8.16B, V8.16B, V2.16B + orr V9.16B, V9.16B, V3.16B + tbl V0.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V0.16B + tbl V1.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V1.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + ld1 {V4.16B}, [x7] + tbl V8.16B, {V8.16B}, V4.16B + tbl V9.16B, {V9.16B}, V4.16B + movi V2.16B, #27 + sshr V0.16B, V8.16B, #7 + sshr V1.16B, V9.16B, #7 + shl V12.16B, V8.16B, #1 + shl V13.16B, V9.16B, #1 + and V0.16B, V0.16B, V2.16B + and V1.16B, V1.16B, V2.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + ushr V12.16B, V8.16B, #6 + ushr V13.16B, V9.16B, #6 + shl V4.16B, V8.16B, #2 + shl V5.16B, V9.16B, #2 + pmul V12.16B, V12.16B, V2.16B + pmul V13.16B, V13.16B, V2.16B + eor V12.16B, V12.16B, V4.16B + eor V13.16B, V13.16B, V5.16B + ushr V4.16B, V8.16B, #5 + ushr V5.16B, V9.16B, #5 + pmul V4.16B, V4.16B, V2.16B + pmul V5.16B, V5.16B, V2.16B + shl V2.16B, V8.16B, #3 + shl V3.16B, V9.16B, #3 + eor V4.16B, V4.16B, V2.16B + eor V5.16B, V5.16B, V3.16B + eor V2.16B, V0.16B, V4.16B + eor V3.16B, V1.16B, V5.16B + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V0.16B, V12.16B, V4.16B + eor V1.16B, V13.16B, V5.16B + eor V12.16B, V12.16B, V2.16B + eor V13.16B, V13.16B, V3.16B + eor V2.16B, V2.16B, V8.16B + eor V3.16B, V3.16B, V9.16B + shl V8.4S, V2.4S, #8 + shl V9.4S, V3.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + sri V8.4S, V2.4S, #24 + sri V9.4S, V3.4S, #24 + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + shl V2.4S, V4.4S, #24 + shl V3.4S, V5.4S, #24 + eor V8.16B, V8.16B, V0.16B + eor V9.16B, V9.16B, V1.16B + sri V2.4S, V4.4S, #8 + sri V3.4S, V5.4S, #8 + eor V8.16B, V8.16B, V2.16B + eor V9.16B, V9.16B, V3.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x9], #16 - eor v8.16b, v8.16b, v4.16b - eor v9.16b, v9.16b, v4.16b + ld1 {V4.2D}, [x9], #16 + eor V8.16B, V8.16B, V4.16B + eor V9.16B, V9.16B, V4.16B ; Round Done - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v0.16b, v8.16b, v12.16b - eor v1.16b, v9.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v8.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v9.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v1.16b - eor v2.16b, v8.16b, v13.16b - eor v3.16b, v9.16b, v13.16b - tbl v2.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v2.16b - tbl v3.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v3.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - eor v0.16b, v8.16b, v14.16b - eor v1.16b, v9.16b, v14.16b - orr v4.16b, v4.16b, v2.16b - orr v5.16b, v5.16b, v3.16b - tbl v0.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v0.16b - tbl v1.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v1.16b - orr v4.16b, v4.16b, v0.16b - orr v5.16b, v5.16b, v1.16b - ld1 {v8.16b}, [x7] - tbl v4.16b, {v4.16b}, v8.16b - tbl v5.16b, {v5.16b}, v8.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V0.16B, V8.16B, V12.16B + eor V1.16B, V9.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V8.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V9.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V1.16B + eor V2.16B, V8.16B, V13.16B + eor V3.16B, V9.16B, V13.16B + tbl V2.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V2.16B + tbl V3.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V3.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + eor V0.16B, V8.16B, V14.16B + eor V1.16B, V9.16B, V14.16B + orr V4.16B, V4.16B, V2.16B + orr V5.16B, V5.16B, V3.16B + tbl V0.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V0.16B + tbl V1.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V1.16B + orr V4.16B, V4.16B, V0.16B + orr V5.16B, V5.16B, V1.16B + ld1 {V8.16B}, [x7] + tbl V4.16B, {V4.16B}, V8.16B + tbl V5.16B, {V5.16B}, V8.16B ; XOR in Key Schedule - ld1 {v8.2d}, [x9], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v8.16b + ld1 {V8.2D}, [x9], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V8.16B ; Round Done - rev32 v4.16b, v4.16b - rev32 v5.16b, v5.16b - ld1 {v1.16b, v2.16b, v3.16b}, [x10] - eor v4.16b, v4.16b, v1.16b - eor v5.16b, v5.16b, v2.16b - st1 {v4.16b, v5.16b}, [x1], #32 + rev32 V4.16B, V4.16B + rev32 V5.16B, V5.16B + ld1 {V1.16B, V2.16B, V3.16B}, [x10] + eor V4.16B, V4.16B, V1.16B + eor V5.16B, V5.16B, V2.16B + st1 {V4.16B, V5.16B}, [x1], #32 sub x2, x2, #32 cmp x2, #32 bge L_AES_CBC_decrypt_NEON_loop_2 cmp x2, #0 beq L_AES_CBC_decrypt_NEON_data_done L_AES_CBC_decrypt_NEON_start_1 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 - ld1 {v7.2d}, [x7] + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 + ld1 {V7.2D}, [x7] mov x9, x3 - ld1 {v4.16b}, [x0], #16 - mov v10.16b, v3.16b - mov v11.16b, v4.16b - ld1 {v8.16b}, [x9], #16 - rev32 v4.16b, v4.16b + ld1 {V4.16B}, [x0], #16 + mov V10.16B, V3.16B + mov V11.16B, V4.16B + ld1 {V8.16B}, [x9], #16 + rev32 V4.16B, V4.16B ; Round: 0 - XOR in key schedule - eor v4.16b, v4.16b, v8.16b + eor V4.16B, V4.16B, V8.16B sub w8, w4, #2 L_AES_CBC_decrypt_NEON_loop_nr_1 - eor v0.16b, v4.16b, v12.16b - eor v1.16b, v4.16b, v13.16b - eor v2.16b, v4.16b, v14.16b - tbl v8.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v1.16b - tbl v2.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v2.16b - orr v8.16b, v8.16b, v0.16b - orr v1.16b, v1.16b, v2.16b - orr v8.16b, v8.16b, v1.16b - tbl v8.16b, {v8.16b}, v7.16b - sshr v2.16b, v8.16b, #7 - ushr v3.16b, v8.16b, #6 - ushr v0.16b, v8.16b, #5 - and v2.16b, v2.16b, v15.16b - pmul v3.16b, v3.16b, v15.16b - pmul v0.16b, v0.16b, v15.16b - shl v1.16b, v8.16b, #1 - eor v2.16b, v2.16b, v1.16b - shl v1.16b, v8.16b, #3 - eor v0.16b, v0.16b, v1.16b - shl v1.16b, v8.16b, #2 - eor v3.16b, v3.16b, v1.16b - eor v1.16b, v2.16b, v0.16b - eor v0.16b, v0.16b, v8.16b - eor v2.16b, v3.16b, v0.16b - eor v3.16b, v3.16b, v1.16b - eor v1.16b, v1.16b, v8.16b - shl v8.4s, v1.4s, #8 - rev32 v2.8h, v2.8h - sri v8.4s, v1.4s, #24 - eor v8.16b, v8.16b, v3.16b - shl v1.4s, v0.4s, #24 - eor v8.16b, v8.16b, v2.16b - sri v1.4s, v0.4s, #8 - eor v8.16b, v8.16b, v1.16b - ld1 {v4.2d}, [x9], #16 + eor V0.16B, V4.16B, V12.16B + eor V1.16B, V4.16B, V13.16B + eor V2.16B, V4.16B, V14.16B + tbl V8.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V1.16B + tbl V2.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V2.16B + orr V8.16B, V8.16B, V0.16B + orr V1.16B, V1.16B, V2.16B + orr V8.16B, V8.16B, V1.16B + tbl V8.16B, {V8.16B}, V7.16B + sshr V2.16B, V8.16B, #7 + ushr V3.16B, V8.16B, #6 + ushr V0.16B, V8.16B, #5 + and V2.16B, V2.16B, V15.16B + pmul V3.16B, V3.16B, V15.16B + pmul V0.16B, V0.16B, V15.16B + shl V1.16B, V8.16B, #1 + eor V2.16B, V2.16B, V1.16B + shl V1.16B, V8.16B, #3 + eor V0.16B, V0.16B, V1.16B + shl V1.16B, V8.16B, #2 + eor V3.16B, V3.16B, V1.16B + eor V1.16B, V2.16B, V0.16B + eor V0.16B, V0.16B, V8.16B + eor V2.16B, V3.16B, V0.16B + eor V3.16B, V3.16B, V1.16B + eor V1.16B, V1.16B, V8.16B + shl V8.4S, V1.4S, #8 + rev32 V2.8H, V2.8H + sri V8.4S, V1.4S, #24 + eor V8.16B, V8.16B, V3.16B + shl V1.4S, V0.4S, #24 + eor V8.16B, V8.16B, V2.16B + sri V1.4S, V0.4S, #8 + eor V8.16B, V8.16B, V1.16B + ld1 {V4.2D}, [x9], #16 ; XOR in Key Schedule - eor v8.16b, v8.16b, v4.16b - eor v0.16b, v8.16b, v12.16b - eor v1.16b, v8.16b, v13.16b - eor v2.16b, v8.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v8.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v1.16b - tbl v2.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v2.16b - orr v4.16b, v4.16b, v0.16b - orr v1.16b, v1.16b, v2.16b - orr v4.16b, v4.16b, v1.16b - tbl v4.16b, {v4.16b}, v7.16b - sshr v2.16b, v4.16b, #7 - ushr v3.16b, v4.16b, #6 - ushr v0.16b, v4.16b, #5 - and v2.16b, v2.16b, v15.16b - pmul v3.16b, v3.16b, v15.16b - pmul v0.16b, v0.16b, v15.16b - shl v1.16b, v4.16b, #1 - eor v2.16b, v2.16b, v1.16b - shl v1.16b, v4.16b, #3 - eor v0.16b, v0.16b, v1.16b - shl v1.16b, v4.16b, #2 - eor v3.16b, v3.16b, v1.16b - eor v1.16b, v2.16b, v0.16b - eor v0.16b, v0.16b, v4.16b - eor v2.16b, v3.16b, v0.16b - eor v3.16b, v3.16b, v1.16b - eor v1.16b, v1.16b, v4.16b - shl v4.4s, v1.4s, #8 - rev32 v2.8h, v2.8h - sri v4.4s, v1.4s, #24 - eor v4.16b, v4.16b, v3.16b - shl v1.4s, v0.4s, #24 - eor v4.16b, v4.16b, v2.16b - sri v1.4s, v0.4s, #8 - eor v4.16b, v4.16b, v1.16b - ld1 {v8.2d}, [x9], #16 + eor V8.16B, V8.16B, V4.16B + eor V0.16B, V8.16B, V12.16B + eor V1.16B, V8.16B, V13.16B + eor V2.16B, V8.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V8.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V1.16B + tbl V2.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V2.16B + orr V4.16B, V4.16B, V0.16B + orr V1.16B, V1.16B, V2.16B + orr V4.16B, V4.16B, V1.16B + tbl V4.16B, {V4.16B}, V7.16B + sshr V2.16B, V4.16B, #7 + ushr V3.16B, V4.16B, #6 + ushr V0.16B, V4.16B, #5 + and V2.16B, V2.16B, V15.16B + pmul V3.16B, V3.16B, V15.16B + pmul V0.16B, V0.16B, V15.16B + shl V1.16B, V4.16B, #1 + eor V2.16B, V2.16B, V1.16B + shl V1.16B, V4.16B, #3 + eor V0.16B, V0.16B, V1.16B + shl V1.16B, V4.16B, #2 + eor V3.16B, V3.16B, V1.16B + eor V1.16B, V2.16B, V0.16B + eor V0.16B, V0.16B, V4.16B + eor V2.16B, V3.16B, V0.16B + eor V3.16B, V3.16B, V1.16B + eor V1.16B, V1.16B, V4.16B + shl V4.4S, V1.4S, #8 + rev32 V2.8H, V2.8H + sri V4.4S, V1.4S, #24 + eor V4.16B, V4.16B, V3.16B + shl V1.4S, V0.4S, #24 + eor V4.16B, V4.16B, V2.16B + sri V1.4S, V0.4S, #8 + eor V4.16B, V4.16B, V1.16B + ld1 {V8.2D}, [x9], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v8.16b + eor V4.16B, V4.16B, V8.16B subs w8, w8, #2 bne L_AES_CBC_decrypt_NEON_loop_nr_1 - eor v0.16b, v4.16b, v12.16b - eor v1.16b, v4.16b, v13.16b - eor v2.16b, v4.16b, v14.16b - tbl v8.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v1.16b - tbl v2.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v2.16b - orr v8.16b, v8.16b, v0.16b - orr v1.16b, v1.16b, v2.16b - orr v8.16b, v8.16b, v1.16b - tbl v8.16b, {v8.16b}, v7.16b - sshr v2.16b, v8.16b, #7 - ushr v3.16b, v8.16b, #6 - ushr v0.16b, v8.16b, #5 - and v2.16b, v2.16b, v15.16b - pmul v3.16b, v3.16b, v15.16b - pmul v0.16b, v0.16b, v15.16b - shl v1.16b, v8.16b, #1 - eor v2.16b, v2.16b, v1.16b - shl v1.16b, v8.16b, #3 - eor v0.16b, v0.16b, v1.16b - shl v1.16b, v8.16b, #2 - eor v3.16b, v3.16b, v1.16b - eor v1.16b, v2.16b, v0.16b - eor v0.16b, v0.16b, v8.16b - eor v2.16b, v3.16b, v0.16b - eor v3.16b, v3.16b, v1.16b - eor v1.16b, v1.16b, v8.16b - shl v8.4s, v1.4s, #8 - rev32 v2.8h, v2.8h - sri v8.4s, v1.4s, #24 - eor v8.16b, v8.16b, v3.16b - shl v1.4s, v0.4s, #24 - eor v8.16b, v8.16b, v2.16b - sri v1.4s, v0.4s, #8 - eor v8.16b, v8.16b, v1.16b - ld1 {v4.2d}, [x9], #16 + eor V0.16B, V4.16B, V12.16B + eor V1.16B, V4.16B, V13.16B + eor V2.16B, V4.16B, V14.16B + tbl V8.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V1.16B + tbl V2.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V2.16B + orr V8.16B, V8.16B, V0.16B + orr V1.16B, V1.16B, V2.16B + orr V8.16B, V8.16B, V1.16B + tbl V8.16B, {V8.16B}, V7.16B + sshr V2.16B, V8.16B, #7 + ushr V3.16B, V8.16B, #6 + ushr V0.16B, V8.16B, #5 + and V2.16B, V2.16B, V15.16B + pmul V3.16B, V3.16B, V15.16B + pmul V0.16B, V0.16B, V15.16B + shl V1.16B, V8.16B, #1 + eor V2.16B, V2.16B, V1.16B + shl V1.16B, V8.16B, #3 + eor V0.16B, V0.16B, V1.16B + shl V1.16B, V8.16B, #2 + eor V3.16B, V3.16B, V1.16B + eor V1.16B, V2.16B, V0.16B + eor V0.16B, V0.16B, V8.16B + eor V2.16B, V3.16B, V0.16B + eor V3.16B, V3.16B, V1.16B + eor V1.16B, V1.16B, V8.16B + shl V8.4S, V1.4S, #8 + rev32 V2.8H, V2.8H + sri V8.4S, V1.4S, #24 + eor V8.16B, V8.16B, V3.16B + shl V1.4S, V0.4S, #24 + eor V8.16B, V8.16B, V2.16B + sri V1.4S, V0.4S, #8 + eor V8.16B, V8.16B, V1.16B + ld1 {V4.2D}, [x9], #16 ; XOR in Key Schedule - eor v8.16b, v8.16b, v4.16b - eor v0.16b, v8.16b, v12.16b - eor v1.16b, v8.16b, v13.16b - eor v2.16b, v8.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v8.16b - tbl v0.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v0.16b - tbl v1.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v1.16b - tbl v2.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v2.16b - orr v4.16b, v4.16b, v0.16b - orr v1.16b, v1.16b, v2.16b - orr v4.16b, v4.16b, v1.16b - tbl v4.16b, {v4.16b}, v7.16b - ld1 {v8.2d}, [x9], #16 + eor V8.16B, V8.16B, V4.16B + eor V0.16B, V8.16B, V12.16B + eor V1.16B, V8.16B, V13.16B + eor V2.16B, V8.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V8.16B + tbl V0.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V0.16B + tbl V1.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V1.16B + tbl V2.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V2.16B + orr V4.16B, V4.16B, V0.16B + orr V1.16B, V1.16B, V2.16B + orr V4.16B, V4.16B, V1.16B + tbl V4.16B, {V4.16B}, V7.16B + ld1 {V8.2D}, [x9], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v8.16b - rev32 v4.16b, v4.16b - mov v3.16b, v11.16b - eor v4.16b, v4.16b, v10.16b - st1 {v4.16b}, [x1], #16 + eor V4.16B, V4.16B, V8.16B + rev32 V4.16B, V4.16B + mov V3.16B, V11.16B + eor V4.16B, V4.16B, V10.16B + st1 {V4.16B}, [x1], #16 L_AES_CBC_decrypt_NEON_data_done - st1 {v3.2d}, [x5] - ldp d8, d9, [x29, #96] - ldp d10, d11, [x29, #112] - ldp d12, d13, [x29, #128] - ldp d14, d15, [x29, #144] + st1 {V3.2D}, [x5] + ldp D8, D9, [x29, #96] + ldp D10, D11, [x29, #112] + ldp D12, D13, [x29, #128] + ldp D14, D15, [x29, #144] ldp x29, x30, [sp], #0xa0 ret ENDP @@ -46982,329 +46982,329 @@ L_AES_CBC_decrypt_NEON_data_done GCM_gmult_len_NEON PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] - ld1 {v18.2d}, [x0] - ld1 {v10.2d}, [x1] - movi v19.16b, #15 - eor v20.16b, v20.16b, v20.16b - rbit v18.16b, v18.16b - rbit v10.16b, v10.16b - and v12.16b, v10.16b, v19.16b - ushr v13.16b, v10.16b, #4 - eor v14.16b, v12.16b, v13.16b + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] + ld1 {V18.2D}, [x0] + ld1 {V10.2D}, [x1] + movi V19.16B, #15 + eor V20.16B, V20.16B, V20.16B + rbit V18.16B, V18.16B + rbit V10.16B, V10.16B + and V12.16B, V10.16B, V19.16B + ushr V13.16B, V10.16B, #4 + eor V14.16B, V12.16B, V13.16B L_GCM_gmult_len_NEON_start_block - ld1 {v0.16b}, [x2], #16 - rbit v0.16b, v0.16b - eor v18.16b, v18.16b, v0.16b + ld1 {V0.16B}, [x2], #16 + rbit V0.16B, V0.16B + eor V18.16B, V18.16B, V0.16B ; Mul 128x128 - and v15.16b, v18.16b, v19.16b - ushr v16.16b, v18.16b, #4 - eor v17.16b, v15.16b, v16.16b - dup v0.16b, v12.b[0] - dup v2.16b, v14.b[0] - dup v1.16b, v13.b[0] - pmul v8.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v8.16b - eor v5.16b, v5.16b, v4.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v8.16b, v8.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - dup v0.16b, v12.b[1] - dup v2.16b, v14.b[1] - dup v1.16b, v13.b[1] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v6.16b, v20.16b, v3.16b, #15 - ext v9.16b, v3.16b, v20.16b, #15 - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[2] - dup v2.16b, v14.b[2] - dup v1.16b, v13.b[2] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #14 - ext v6.16b, v20.16b, v3.16b, #14 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[3] - dup v2.16b, v14.b[3] - dup v1.16b, v13.b[3] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #13 - ext v6.16b, v20.16b, v3.16b, #13 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[4] - dup v2.16b, v14.b[4] - dup v1.16b, v13.b[4] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #12 - ext v6.16b, v20.16b, v3.16b, #12 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[5] - dup v2.16b, v14.b[5] - dup v1.16b, v13.b[5] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #11 - ext v6.16b, v20.16b, v3.16b, #11 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[6] - dup v2.16b, v14.b[6] - dup v1.16b, v13.b[6] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #10 - ext v6.16b, v20.16b, v3.16b, #10 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[7] - dup v2.16b, v14.b[7] - dup v1.16b, v13.b[7] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #9 - ext v6.16b, v20.16b, v3.16b, #9 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[8] - dup v2.16b, v14.b[8] - dup v1.16b, v13.b[8] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #8 - ext v6.16b, v20.16b, v3.16b, #8 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[9] - dup v2.16b, v14.b[9] - dup v1.16b, v13.b[9] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #7 - ext v6.16b, v20.16b, v3.16b, #7 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[10] - dup v2.16b, v14.b[10] - dup v1.16b, v13.b[10] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #6 - ext v6.16b, v20.16b, v3.16b, #6 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[11] - dup v2.16b, v14.b[11] - dup v1.16b, v13.b[11] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #5 - ext v6.16b, v20.16b, v3.16b, #5 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[12] - dup v2.16b, v14.b[12] - dup v1.16b, v13.b[12] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #4 - ext v6.16b, v20.16b, v3.16b, #4 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[13] - dup v2.16b, v14.b[13] - dup v1.16b, v13.b[13] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #3 - ext v6.16b, v20.16b, v3.16b, #3 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[14] - dup v2.16b, v14.b[14] - dup v1.16b, v13.b[14] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #2 - ext v6.16b, v20.16b, v3.16b, #2 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - dup v0.16b, v12.b[15] - dup v2.16b, v14.b[15] - dup v1.16b, v13.b[15] - pmul v3.16b, v15.16b, v0.16b - pmul v5.16b, v17.16b, v2.16b - pmul v4.16b, v16.16b, v1.16b - eor v5.16b, v5.16b, v3.16b - eor v5.16b, v5.16b, v4.16b - eor v3.16b, v3.16b, v11.16b - shl v6.16b, v5.16b, #4 - ushr v7.16b, v5.16b, #4 - eor v3.16b, v3.16b, v6.16b - eor v11.16b, v4.16b, v7.16b - ext v7.16b, v3.16b, v20.16b, #1 - ext v6.16b, v20.16b, v3.16b, #1 - eor v9.16b, v9.16b, v7.16b - eor v8.16b, v8.16b, v6.16b - eor v9.16b, v9.16b, v11.16b + and V15.16B, V18.16B, V19.16B + ushr V16.16B, V18.16B, #4 + eor V17.16B, V15.16B, V16.16B + dup V0.16B, V12.B[0] + dup V2.16B, V14.B[0] + dup V1.16B, V13.B[0] + pmul V8.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V8.16B + eor V5.16B, V5.16B, V4.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V8.16B, V8.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + dup V0.16B, V12.B[1] + dup V2.16B, V14.B[1] + dup V1.16B, V13.B[1] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V6.16B, V20.16B, V3.16B, #15 + ext8 V9.16B, V3.16B, V20.16B, #15 + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[2] + dup V2.16B, V14.B[2] + dup V1.16B, V13.B[2] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #14 + ext8 V6.16B, V20.16B, V3.16B, #14 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[3] + dup V2.16B, V14.B[3] + dup V1.16B, V13.B[3] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #13 + ext8 V6.16B, V20.16B, V3.16B, #13 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[4] + dup V2.16B, V14.B[4] + dup V1.16B, V13.B[4] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #12 + ext8 V6.16B, V20.16B, V3.16B, #12 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[5] + dup V2.16B, V14.B[5] + dup V1.16B, V13.B[5] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #11 + ext8 V6.16B, V20.16B, V3.16B, #11 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[6] + dup V2.16B, V14.B[6] + dup V1.16B, V13.B[6] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #10 + ext8 V6.16B, V20.16B, V3.16B, #10 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[7] + dup V2.16B, V14.B[7] + dup V1.16B, V13.B[7] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #9 + ext8 V6.16B, V20.16B, V3.16B, #9 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[8] + dup V2.16B, V14.B[8] + dup V1.16B, V13.B[8] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #8 + ext8 V6.16B, V20.16B, V3.16B, #8 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[9] + dup V2.16B, V14.B[9] + dup V1.16B, V13.B[9] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #7 + ext8 V6.16B, V20.16B, V3.16B, #7 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[10] + dup V2.16B, V14.B[10] + dup V1.16B, V13.B[10] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #6 + ext8 V6.16B, V20.16B, V3.16B, #6 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[11] + dup V2.16B, V14.B[11] + dup V1.16B, V13.B[11] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #5 + ext8 V6.16B, V20.16B, V3.16B, #5 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[12] + dup V2.16B, V14.B[12] + dup V1.16B, V13.B[12] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #4 + ext8 V6.16B, V20.16B, V3.16B, #4 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[13] + dup V2.16B, V14.B[13] + dup V1.16B, V13.B[13] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #3 + ext8 V6.16B, V20.16B, V3.16B, #3 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[14] + dup V2.16B, V14.B[14] + dup V1.16B, V13.B[14] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #2 + ext8 V6.16B, V20.16B, V3.16B, #2 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + dup V0.16B, V12.B[15] + dup V2.16B, V14.B[15] + dup V1.16B, V13.B[15] + pmul V3.16B, V15.16B, V0.16B + pmul V5.16B, V17.16B, V2.16B + pmul V4.16B, V16.16B, V1.16B + eor V5.16B, V5.16B, V3.16B + eor V5.16B, V5.16B, V4.16B + eor V3.16B, V3.16B, V11.16B + shl V6.16B, V5.16B, #4 + ushr V7.16B, V5.16B, #4 + eor V3.16B, V3.16B, V6.16B + eor V11.16B, V4.16B, V7.16B + ext8 V7.16B, V3.16B, V20.16B, #1 + ext8 V6.16B, V20.16B, V3.16B, #1 + eor V9.16B, V9.16B, V7.16B + eor V8.16B, V8.16B, V6.16B + eor V9.16B, V9.16B, V11.16B ; Reduce 254-bit number - shl v0.16b, v9.16b, #1 - shl v1.16b, v9.16b, #2 - shl v2.16b, v9.16b, #7 - ushr v3.16b, v9.16b, #7 - ushr v4.16b, v9.16b, #6 - ushr v5.16b, v9.16b, #1 - eor v0.16b, v0.16b, v9.16b - eor v1.16b, v1.16b, v2.16b - eor v0.16b, v0.16b, v1.16b - eor v8.16b, v8.16b, v0.16b - ext v0.16b, v20.16b, v3.16b, #15 - ext v1.16b, v20.16b, v4.16b, #15 - ext v2.16b, v20.16b, v5.16b, #15 - ext v4.16b, v4.16b, v20.16b, #15 - ext v5.16b, v5.16b, v20.16b, #15 - eor v0.16b, v0.16b, v1.16b - eor v8.16b, v8.16b, v2.16b - eor v8.16b, v8.16b, v0.16b - eor v3.16b, v4.16b, v5.16b - shl v0.2d, v3.2d, #1 - shl v1.2d, v3.2d, #2 - shl v2.2d, v3.2d, #7 - eor v3.16b, v3.16b, v0.16b - eor v1.16b, v1.16b, v2.16b - eor v8.16b, v8.16b, v3.16b - eor v18.16b, v8.16b, v1.16b + shl V0.16B, V9.16B, #1 + shl V1.16B, V9.16B, #2 + shl V2.16B, V9.16B, #7 + ushr V3.16B, V9.16B, #7 + ushr V4.16B, V9.16B, #6 + ushr V5.16B, V9.16B, #1 + eor V0.16B, V0.16B, V9.16B + eor V1.16B, V1.16B, V2.16B + eor V0.16B, V0.16B, V1.16B + eor V8.16B, V8.16B, V0.16B + ext8 V0.16B, V20.16B, V3.16B, #15 + ext8 V1.16B, V20.16B, V4.16B, #15 + ext8 V2.16B, V20.16B, V5.16B, #15 + ext8 V4.16B, V4.16B, V20.16B, #15 + ext8 V5.16B, V5.16B, V20.16B, #15 + eor V0.16B, V0.16B, V1.16B + eor V8.16B, V8.16B, V2.16B + eor V8.16B, V8.16B, V0.16B + eor V3.16B, V4.16B, V5.16B + shl V0.2D, V3.2D, #1 + shl V1.2D, V3.2D, #2 + shl V2.2D, V3.2D, #7 + eor V3.16B, V3.16B, V0.16B + eor V1.16B, V1.16B, V2.16B + eor V8.16B, V8.16B, V3.16B + eor V18.16B, V8.16B, V1.16B subs x3, x3, #16 bne L_GCM_gmult_len_NEON_start_block - rbit v18.16b, v18.16b - st1 {v18.2d}, [x0] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + rbit V18.16B, V18.16B + st1 {V18.2D}, [x0] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -47314,781 +47314,781 @@ L_GCM_gmult_len_NEON_start_block AES_GCM_encrypt_NEON PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x9, L_AES_ARM64_NEON_te add x9, x9, L_AES_ARM64_NEON_te adrp x10, L_AES_ARM64_NEON_shift_rows_shuffle add x10, x10, L_AES_ARM64_NEON_shift_rows_shuffle - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x9], #0x40 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x9], #0x40 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x9], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x9] - ld1 {v2.2d}, [x5] - rev32 v2.16b, v2.16b - mov w6, v2.s[3] + ld1 {V16.16B, V17.16B, V18.16B, V19.16B}, [x9], #0x40 + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x9], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x9], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x9] + ld1 {V2.2D}, [x5] + rev32 V2.16B, V2.16B + mov w6, V2.S[3] cmp x2, #0x40 blt L_AES_GCM_encrypt_NEON_start_2 - mov x7, v2.d[0] - mov x8, v2.d[1] + mov x7, V2.D[0] + mov x8, V2.D[1] L_AES_GCM_encrypt_NEON_loop_4 mov x12, x3 - ld1 {v4.2d}, [x12], #16 - mov v8.d[0], x7 - mov v8.d[1], x8 + ld1 {V4.2D}, [x12], #16 + mov V8.D[0], x7 + mov V8.D[1], x8 ; Round: 0 - XOR in key schedule add w6, w6, #1 - mov v8.s[3], w6 - eor v0.16b, v8.16b, v4.16b + mov V8.S[3], w6 + eor V0.16B, V8.16B, V4.16B add w6, w6, #1 - mov v8.s[3], w6 - eor v1.16b, v8.16b, v4.16b + mov V8.S[3], w6 + eor V1.16B, V8.16B, V4.16B add w6, w6, #1 - mov v8.s[3], w6 - eor v2.16b, v8.16b, v4.16b + mov V8.S[3], w6 + eor V2.16B, V8.16B, V4.16B add w6, w6, #1 - mov v8.s[3], w6 - eor v3.16b, v8.16b, v4.16b + mov V8.S[3], w6 + eor V3.16B, V8.16B, V4.16B sub w11, w4, #2 L_AES_GCM_encrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x10] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - movi v0.16b, #27 - and v8.16b, v8.16b, v0.16b - and v9.16b, v9.16b, v0.16b - and v10.16b, v10.16b, v0.16b - and v11.16b, v11.16b, v0.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - eor v2.16b, v10.16b, v6.16b - eor v3.16b, v11.16b, v7.16b - shl v12.4s, v0.4s, #8 - shl v13.4s, v1.4s, #8 - shl v14.4s, v2.4s, #8 - shl v15.4s, v3.4s, #8 - sri v12.4s, v0.4s, #24 - sri v13.4s, v1.4s, #24 - sri v14.4s, v2.4s, #24 - sri v15.4s, v3.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - shl v2.4s, v6.4s, #24 - shl v3.4s, v7.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - sri v2.4s, v6.4s, #8 - sri v3.4s, v7.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - rev32 v6.8h, v6.8h - rev32 v7.8h, v7.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x10] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + movi V0.16B, #27 + and V8.16B, V8.16B, V0.16B + and V9.16B, V9.16B, V0.16B + and V10.16B, V10.16B, V0.16B + and V11.16B, V11.16B, V0.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + eor V2.16B, V10.16B, V6.16B + eor V3.16B, V11.16B, V7.16B + shl V12.4S, V0.4S, #8 + shl V13.4S, V1.4S, #8 + shl V14.4S, V2.4S, #8 + shl V15.4S, V3.4S, #8 + sri V12.4S, V0.4S, #24 + sri V13.4S, V1.4S, #24 + sri V14.4S, V2.4S, #24 + sri V15.4S, V3.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + shl V2.4S, V6.4S, #24 + shl V3.4S, V7.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + sri V2.4S, V6.4S, #8 + sri V3.4S, V7.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + rev32 V6.8H, V6.8H + rev32 V7.8H, V7.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x12], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b + ld1 {V0.2D}, [x12], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x10] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - sshr v10.16b, v2.16b, #7 - sshr v11.16b, v3.16b, #7 - shl v12.16b, v0.16b, #1 - shl v13.16b, v1.16b, #1 - shl v14.16b, v2.16b, #1 - shl v15.16b, v3.16b, #1 - movi v4.16b, #27 - and v8.16b, v8.16b, v4.16b - and v9.16b, v9.16b, v4.16b - and v10.16b, v10.16b, v4.16b - and v11.16b, v11.16b, v4.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v4.16b, v8.16b, v0.16b - eor v5.16b, v9.16b, v1.16b - eor v6.16b, v10.16b, v2.16b - eor v7.16b, v11.16b, v3.16b - shl v12.4s, v4.4s, #8 - shl v13.4s, v5.4s, #8 - shl v14.4s, v6.4s, #8 - shl v15.4s, v7.4s, #8 - sri v12.4s, v4.4s, #24 - sri v13.4s, v5.4s, #24 - sri v14.4s, v6.4s, #24 - sri v15.4s, v7.4s, #24 - shl v4.4s, v0.4s, #24 - shl v5.4s, v1.4s, #24 - shl v6.4s, v2.4s, #24 - shl v7.4s, v3.4s, #24 - sri v4.4s, v0.4s, #8 - sri v5.4s, v1.4s, #8 - sri v6.4s, v2.4s, #8 - sri v7.4s, v3.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - rev32 v2.8h, v2.8h - rev32 v3.8h, v3.8h - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x10] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + sshr V10.16B, V2.16B, #7 + sshr V11.16B, V3.16B, #7 + shl V12.16B, V0.16B, #1 + shl V13.16B, V1.16B, #1 + shl V14.16B, V2.16B, #1 + shl V15.16B, V3.16B, #1 + movi V4.16B, #27 + and V8.16B, V8.16B, V4.16B + and V9.16B, V9.16B, V4.16B + and V10.16B, V10.16B, V4.16B + and V11.16B, V11.16B, V4.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V4.16B, V8.16B, V0.16B + eor V5.16B, V9.16B, V1.16B + eor V6.16B, V10.16B, V2.16B + eor V7.16B, V11.16B, V3.16B + shl V12.4S, V4.4S, #8 + shl V13.4S, V5.4S, #8 + shl V14.4S, V6.4S, #8 + shl V15.4S, V7.4S, #8 + sri V12.4S, V4.4S, #24 + sri V13.4S, V5.4S, #24 + sri V14.4S, V6.4S, #24 + sri V15.4S, V7.4S, #24 + shl V4.4S, V0.4S, #24 + shl V5.4S, V1.4S, #24 + shl V6.4S, V2.4S, #24 + shl V7.4S, V3.4S, #24 + sri V4.4S, V0.4S, #8 + sri V5.4S, V1.4S, #8 + sri V6.4S, V2.4S, #8 + sri V7.4S, V3.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + rev32 V2.8H, V2.8H + rev32 V3.8H, V3.8H + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x12], #16 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b + ld1 {V4.2D}, [x12], #16 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B ; Round Done subs w11, w11, #2 bne L_AES_GCM_encrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x10] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - movi v0.16b, #27 - and v8.16b, v8.16b, v0.16b - and v9.16b, v9.16b, v0.16b - and v10.16b, v10.16b, v0.16b - and v11.16b, v11.16b, v0.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - eor v2.16b, v10.16b, v6.16b - eor v3.16b, v11.16b, v7.16b - shl v12.4s, v0.4s, #8 - shl v13.4s, v1.4s, #8 - shl v14.4s, v2.4s, #8 - shl v15.4s, v3.4s, #8 - sri v12.4s, v0.4s, #24 - sri v13.4s, v1.4s, #24 - sri v14.4s, v2.4s, #24 - sri v15.4s, v3.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - shl v2.4s, v6.4s, #24 - shl v3.4s, v7.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - sri v2.4s, v6.4s, #8 - sri v3.4s, v7.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - rev32 v6.8h, v6.8h - rev32 v7.8h, v7.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x10] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + movi V0.16B, #27 + and V8.16B, V8.16B, V0.16B + and V9.16B, V9.16B, V0.16B + and V10.16B, V10.16B, V0.16B + and V11.16B, V11.16B, V0.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + eor V2.16B, V10.16B, V6.16B + eor V3.16B, V11.16B, V7.16B + shl V12.4S, V0.4S, #8 + shl V13.4S, V1.4S, #8 + shl V14.4S, V2.4S, #8 + shl V15.4S, V3.4S, #8 + sri V12.4S, V0.4S, #24 + sri V13.4S, V1.4S, #24 + sri V14.4S, V2.4S, #24 + sri V15.4S, V3.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + shl V2.4S, V6.4S, #24 + shl V3.4S, V7.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + sri V2.4S, V6.4S, #8 + sri V3.4S, V7.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + rev32 V6.8H, V6.8H + rev32 V7.8H, V7.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x12], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b + ld1 {V0.2D}, [x12], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x10] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x10] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x12], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + ld1 {V4.2D}, [x12], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x0], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 sub x2, x2, #0x40 cmp x2, #0x40 bge L_AES_GCM_encrypt_NEON_loop_4 - mov v2.d[0], x7 - mov v2.d[1], x8 - mov v2.s[3], w6 + mov V2.D[0], x7 + mov V2.D[1], x8 + mov V2.S[3], w6 L_AES_GCM_encrypt_NEON_start_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 cmp x2, #16 beq L_AES_GCM_encrypt_NEON_start_1 blt L_AES_GCM_encrypt_NEON_data_done L_AES_GCM_encrypt_NEON_loop_2 mov x12, x3 - ld1 {v4.2d}, [x12], #16 + ld1 {V4.2D}, [x12], #16 ; Round: 0 - XOR in key schedule add w6, w6, #1 - mov v2.s[3], w6 - eor v0.16b, v2.16b, v4.16b + mov V2.S[3], w6 + eor V0.16B, V2.16B, V4.16B add w6, w6, #1 - mov v2.s[3], w6 - eor v1.16b, v2.16b, v4.16b + mov V2.S[3], w6 + eor V1.16B, V2.16B, V4.16B sub w11, w4, #2 L_AES_GCM_encrypt_NEON_loop_nr_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x10] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v10.16b, v4.16b, #1 - shl v11.16b, v5.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - shl v10.4s, v0.4s, #8 - shl v11.4s, v1.4s, #8 - sri v10.4s, v0.4s, #24 - sri v11.4s, v1.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x10] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V10.16B, V4.16B, #1 + shl V11.16B, V5.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + shl V10.4S, V0.4S, #8 + shl V11.4S, V1.4S, #8 + sri V10.4S, V0.4S, #24 + sri V11.4S, V1.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x12], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + ld1 {V0.2D}, [x12], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; Round Done - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x10] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - shl v10.16b, v0.16b, #1 - shl v11.16b, v1.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v4.16b, v8.16b, v0.16b - eor v5.16b, v9.16b, v1.16b - shl v10.4s, v4.4s, #8 - shl v11.4s, v5.4s, #8 - sri v10.4s, v4.4s, #24 - sri v11.4s, v5.4s, #24 - shl v4.4s, v0.4s, #24 - shl v5.4s, v1.4s, #24 - sri v4.4s, v0.4s, #8 - sri v5.4s, v1.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x10] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + shl V10.16B, V0.16B, #1 + shl V11.16B, V1.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V4.16B, V8.16B, V0.16B + eor V5.16B, V9.16B, V1.16B + shl V10.4S, V4.4S, #8 + shl V11.4S, V5.4S, #8 + sri V10.4S, V4.4S, #24 + sri V11.4S, V5.4S, #24 + shl V4.4S, V0.4S, #24 + shl V5.4S, V1.4S, #24 + sri V4.4S, V0.4S, #8 + sri V5.4S, V1.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x12], #16 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b + ld1 {V4.2D}, [x12], #16 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B ; Round Done subs w11, w11, #2 bne L_AES_GCM_encrypt_NEON_loop_nr_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x10] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v10.16b, v4.16b, #1 - shl v11.16b, v5.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - shl v10.4s, v0.4s, #8 - shl v11.4s, v1.4s, #8 - sri v10.4s, v0.4s, #24 - sri v11.4s, v1.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x10] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V10.16B, V4.16B, #1 + shl V11.16B, V5.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + shl V10.4S, V0.4S, #8 + shl V11.4S, V1.4S, #8 + sri V10.4S, V0.4S, #24 + sri V11.4S, V1.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x12], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + ld1 {V0.2D}, [x12], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; Round Done - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x10] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x10] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x12], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + ld1 {V4.2D}, [x12], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - ld1 {v4.16b, v5.16b}, [x0], #32 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - st1 {v0.16b, v1.16b}, [x1], #32 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + ld1 {V4.16B, V5.16B}, [x0], #32 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + st1 {V0.16B, V1.16B}, [x1], #32 sub x2, x2, #32 cmp x2, #0 beq L_AES_GCM_encrypt_NEON_data_done L_AES_GCM_encrypt_NEON_start_1 - ld1 {v3.2d}, [x10] + ld1 {V3.2D}, [x10] mov x12, x3 add w6, w6, #1 - ld1 {v4.2d}, [x12], #16 - mov v2.s[3], w6 + ld1 {V4.2D}, [x12], #16 + mov V2.S[3], w6 ; Round: 0 - XOR in key schedule - eor v0.16b, v2.16b, v4.16b + eor V0.16B, V2.16B, V4.16B sub w11, w4, #2 L_AES_GCM_encrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x12], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x12], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x12], #16 - sshr v10.16b, v0.16b, #7 - shl v9.16b, v0.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v0.8h - eor v11.16b, v10.16b, v0.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v0.4s, #24 - shl v8.4s, v11.4s, #8 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x12], #16 + sshr V10.16B, V0.16B, #7 + shl V9.16B, V0.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V0.8H + eor V11.16B, V10.16B, V0.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V0.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v4.16b - sri v9.4s, v0.4s, #8 - sri v8.4s, v11.4s, #24 - eor v0.16b, v10.16b, v9.16b - eor v0.16b, v0.16b, v8.16b + eor V10.16B, V10.16B, V4.16B + sri V9.4S, V0.4S, #8 + sri V8.4S, V11.4S, #24 + eor V0.16B, V10.16B, V9.16B + eor V0.16B, V0.16B, V8.16B subs w11, w11, #2 bne L_AES_GCM_encrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x12], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x12], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x12], #16 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x12], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - ld1 {v4.16b}, [x0], #16 - eor v0.16b, v0.16b, v4.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + ld1 {V4.16B}, [x0], #16 + eor V0.16B, V0.16B, V4.16B + st1 {V0.16B}, [x1], #16 L_AES_GCM_encrypt_NEON_data_done - rev32 v2.16b, v2.16b - st1 {v2.2d}, [x5] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + rev32 V2.16B, V2.16B + st1 {V2.2D}, [x5] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -48103,138 +48103,138 @@ AES_XTS_encrypt_NEON PROC stp x17, x19, [x29, #24] stp x20, x21, [x29, #40] str x22, [x29, #56] - stp d8, d9, [x29, #64] - stp d10, d11, [x29, #80] - stp d12, d13, [x29, #96] - stp d14, d15, [x29, #112] + stp D8, D9, [x29, #64] + stp D10, D11, [x29, #80] + stp D12, D13, [x29, #96] + stp D14, D15, [x29, #112] adrp x19, L_AES_ARM64_NEON_te add x19, x19, L_AES_ARM64_NEON_te adrp x20, L_AES_ARM64_NEON_shift_rows_shuffle add x20, x20, L_AES_ARM64_NEON_shift_rows_shuffle - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x19], #0x40 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x19], #0x40 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x19], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x19] - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 - ld1 {v3.2d}, [x20] + ld1 {V16.16B, V17.16B, V18.16B, V19.16B}, [x19], #0x40 + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x19], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x19], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x19] + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 + ld1 {V3.2D}, [x20] mov x17, #0x87 - ld1 {v2.2d}, [x3] - ld1 {v4.2d}, [x5] - rev32 v2.16b, v2.16b + ld1 {V2.2D}, [x3] + ld1 {V4.2D}, [x5] + rev32 V2.16B, V2.16B add x22, x5, #16 ; Round: 0 - XOR in key schedule - eor v2.16b, v2.16b, v4.16b + eor V2.16B, V2.16B, V4.16B sub w21, w7, #2 L_AES_XTS_encrypt_NEON_loop_nr_tweak - eor v8.16b, v2.16b, v12.16b - eor v9.16b, v2.16b, v13.16b - eor v10.16b, v2.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v2.2d}, [x22], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V2.16B, V12.16B + eor V9.16B, V2.16B, V13.16B + eor V10.16B, V2.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V2.2D}, [x22], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v2.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v2.16b, v2.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v2.16b, v2.16b, v9.16b - tbl v2.16b, {v2.16b}, v3.16b - ld1 {v4.2d}, [x22], #16 - sshr v10.16b, v2.16b, #7 - shl v9.16b, v2.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v2.8h - eor v11.16b, v10.16b, v2.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v2.4s, #24 - shl v8.4s, v11.4s, #8 + eor V10.16B, V10.16B, V2.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V2.16B, V2.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V2.16B, V2.16B, V9.16B + tbl V2.16B, {V2.16B}, V3.16B + ld1 {V4.2D}, [x22], #16 + sshr V10.16B, V2.16B, #7 + shl V9.16B, V2.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V2.8H + eor V11.16B, V10.16B, V2.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V2.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v4.16b - sri v9.4s, v2.4s, #8 - sri v8.4s, v11.4s, #24 - eor v2.16b, v10.16b, v9.16b - eor v2.16b, v2.16b, v8.16b + eor V10.16B, V10.16B, V4.16B + sri V9.4S, V2.4S, #8 + sri V8.4S, V11.4S, #24 + eor V2.16B, V10.16B, V9.16B + eor V2.16B, V2.16B, V8.16B subs w21, w21, #2 bne L_AES_XTS_encrypt_NEON_loop_nr_tweak - eor v8.16b, v2.16b, v12.16b - eor v9.16b, v2.16b, v13.16b - eor v10.16b, v2.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v2.2d}, [x22], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V2.16B, V12.16B + eor V9.16B, V2.16B, V13.16B + eor V10.16B, V2.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V2.2D}, [x22], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v2.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v2.16b, v2.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v2.16b, v2.16b, v9.16b - tbl v2.16b, {v2.16b}, v3.16b - ld1 {v4.2d}, [x22], #16 + eor V10.16B, V10.16B, V2.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V2.16B, V2.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V2.16B, V2.16B, V9.16B + tbl V2.16B, {V2.16B}, V3.16B + ld1 {V4.2D}, [x22], #16 ; XOR in Key Schedule - eor v2.16b, v2.16b, v4.16b - rev32 v2.16b, v2.16b - mov x8, v2.d[0] - mov x9, v2.d[1] + eor V2.16B, V2.16B, V4.16B + rev32 V2.16B, V2.16B + mov x8, V2.D[0] + mov x9, V2.D[1] cmp w2, #0x40 blt L_AES_XTS_encrypt_NEON_start_2 L_AES_XTS_encrypt_NEON_loop_4 mov x22, x4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b}, [x22], #16 + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B}, [x22], #16 and x16, x17, x9, asr 63 extr x11, x9, x8, #63 eor x10, x16, x8, lsl 1 @@ -48244,775 +48244,775 @@ L_AES_XTS_encrypt_NEON_loop_4 and x16, x17, x13, asr 63 extr x15, x13, x12, #63 eor x14, x16, x12, lsl 1 - mov v8.d[0], x8 - mov v8.d[1], x9 - mov v9.d[0], x10 - mov v9.d[1], x11 - mov v10.d[0], x12 - mov v10.d[1], x13 - mov v11.d[0], x14 - mov v11.d[1], x15 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + mov V8.D[0], x8 + mov V8.D[1], x9 + mov V9.D[0], x10 + mov V9.D[1], x11 + mov V10.D[0], x12 + mov V10.D[1], x13 + mov V11.D[0], x14 + mov V11.D[1], x15 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B sub w21, w7, #2 L_AES_XTS_encrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x20] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - movi v0.16b, #27 - and v8.16b, v8.16b, v0.16b - and v9.16b, v9.16b, v0.16b - and v10.16b, v10.16b, v0.16b - and v11.16b, v11.16b, v0.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - eor v2.16b, v10.16b, v6.16b - eor v3.16b, v11.16b, v7.16b - shl v12.4s, v0.4s, #8 - shl v13.4s, v1.4s, #8 - shl v14.4s, v2.4s, #8 - shl v15.4s, v3.4s, #8 - sri v12.4s, v0.4s, #24 - sri v13.4s, v1.4s, #24 - sri v14.4s, v2.4s, #24 - sri v15.4s, v3.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - shl v2.4s, v6.4s, #24 - shl v3.4s, v7.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - sri v2.4s, v6.4s, #8 - sri v3.4s, v7.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - rev32 v6.8h, v6.8h - rev32 v7.8h, v7.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x20] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + movi V0.16B, #27 + and V8.16B, V8.16B, V0.16B + and V9.16B, V9.16B, V0.16B + and V10.16B, V10.16B, V0.16B + and V11.16B, V11.16B, V0.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + eor V2.16B, V10.16B, V6.16B + eor V3.16B, V11.16B, V7.16B + shl V12.4S, V0.4S, #8 + shl V13.4S, V1.4S, #8 + shl V14.4S, V2.4S, #8 + shl V15.4S, V3.4S, #8 + sri V12.4S, V0.4S, #24 + sri V13.4S, V1.4S, #24 + sri V14.4S, V2.4S, #24 + sri V15.4S, V3.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + shl V2.4S, V6.4S, #24 + shl V3.4S, V7.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + sri V2.4S, V6.4S, #8 + sri V3.4S, V7.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + rev32 V6.8H, V6.8H + rev32 V7.8H, V7.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x22], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b + ld1 {V0.2D}, [x22], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x20] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - sshr v10.16b, v2.16b, #7 - sshr v11.16b, v3.16b, #7 - shl v12.16b, v0.16b, #1 - shl v13.16b, v1.16b, #1 - shl v14.16b, v2.16b, #1 - shl v15.16b, v3.16b, #1 - movi v4.16b, #27 - and v8.16b, v8.16b, v4.16b - and v9.16b, v9.16b, v4.16b - and v10.16b, v10.16b, v4.16b - and v11.16b, v11.16b, v4.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v4.16b, v8.16b, v0.16b - eor v5.16b, v9.16b, v1.16b - eor v6.16b, v10.16b, v2.16b - eor v7.16b, v11.16b, v3.16b - shl v12.4s, v4.4s, #8 - shl v13.4s, v5.4s, #8 - shl v14.4s, v6.4s, #8 - shl v15.4s, v7.4s, #8 - sri v12.4s, v4.4s, #24 - sri v13.4s, v5.4s, #24 - sri v14.4s, v6.4s, #24 - sri v15.4s, v7.4s, #24 - shl v4.4s, v0.4s, #24 - shl v5.4s, v1.4s, #24 - shl v6.4s, v2.4s, #24 - shl v7.4s, v3.4s, #24 - sri v4.4s, v0.4s, #8 - sri v5.4s, v1.4s, #8 - sri v6.4s, v2.4s, #8 - sri v7.4s, v3.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - rev32 v2.8h, v2.8h - rev32 v3.8h, v3.8h - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x20] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + sshr V10.16B, V2.16B, #7 + sshr V11.16B, V3.16B, #7 + shl V12.16B, V0.16B, #1 + shl V13.16B, V1.16B, #1 + shl V14.16B, V2.16B, #1 + shl V15.16B, V3.16B, #1 + movi V4.16B, #27 + and V8.16B, V8.16B, V4.16B + and V9.16B, V9.16B, V4.16B + and V10.16B, V10.16B, V4.16B + and V11.16B, V11.16B, V4.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V4.16B, V8.16B, V0.16B + eor V5.16B, V9.16B, V1.16B + eor V6.16B, V10.16B, V2.16B + eor V7.16B, V11.16B, V3.16B + shl V12.4S, V4.4S, #8 + shl V13.4S, V5.4S, #8 + shl V14.4S, V6.4S, #8 + shl V15.4S, V7.4S, #8 + sri V12.4S, V4.4S, #24 + sri V13.4S, V5.4S, #24 + sri V14.4S, V6.4S, #24 + sri V15.4S, V7.4S, #24 + shl V4.4S, V0.4S, #24 + shl V5.4S, V1.4S, #24 + shl V6.4S, V2.4S, #24 + shl V7.4S, V3.4S, #24 + sri V4.4S, V0.4S, #8 + sri V5.4S, V1.4S, #8 + sri V6.4S, V2.4S, #8 + sri V7.4S, V3.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + rev32 V2.8H, V2.8H + rev32 V3.8H, V3.8H + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x22], #16 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b + ld1 {V4.2D}, [x22], #16 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B ; Round Done subs w21, w21, #2 bne L_AES_XTS_encrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x20] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - movi v0.16b, #27 - and v8.16b, v8.16b, v0.16b - and v9.16b, v9.16b, v0.16b - and v10.16b, v10.16b, v0.16b - and v11.16b, v11.16b, v0.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - eor v2.16b, v10.16b, v6.16b - eor v3.16b, v11.16b, v7.16b - shl v12.4s, v0.4s, #8 - shl v13.4s, v1.4s, #8 - shl v14.4s, v2.4s, #8 - shl v15.4s, v3.4s, #8 - sri v12.4s, v0.4s, #24 - sri v13.4s, v1.4s, #24 - sri v14.4s, v2.4s, #24 - sri v15.4s, v3.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - shl v2.4s, v6.4s, #24 - shl v3.4s, v7.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - sri v2.4s, v6.4s, #8 - sri v3.4s, v7.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - rev32 v6.8h, v6.8h - rev32 v7.8h, v7.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x20] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + movi V0.16B, #27 + and V8.16B, V8.16B, V0.16B + and V9.16B, V9.16B, V0.16B + and V10.16B, V10.16B, V0.16B + and V11.16B, V11.16B, V0.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + eor V2.16B, V10.16B, V6.16B + eor V3.16B, V11.16B, V7.16B + shl V12.4S, V0.4S, #8 + shl V13.4S, V1.4S, #8 + shl V14.4S, V2.4S, #8 + shl V15.4S, V3.4S, #8 + sri V12.4S, V0.4S, #24 + sri V13.4S, V1.4S, #24 + sri V14.4S, V2.4S, #24 + sri V15.4S, V3.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + shl V2.4S, V6.4S, #24 + shl V3.4S, V7.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + sri V2.4S, V6.4S, #8 + sri V3.4S, V7.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + rev32 V6.8H, V6.8H + rev32 V7.8H, V7.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x22], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b + ld1 {V0.2D}, [x22], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x20] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x20] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x22], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + ld1 {V4.2D}, [x22], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b - mov v8.d[0], x8 - mov v8.d[1], x9 - mov v9.d[0], x10 - mov v9.d[1], x11 - mov v10.d[0], x12 - mov v10.d[1], x13 - mov v11.d[0], x14 - mov v11.d[1], x15 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B + mov V8.D[0], x8 + mov V8.D[1], x9 + mov V9.D[0], x10 + mov V9.D[1], x11 + mov V10.D[0], x12 + mov V10.D[1], x13 + mov V11.D[0], x14 + mov V11.D[1], x15 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 and x16, x17, x15, asr 63 extr x9, x15, x14, #63 eor x8, x16, x14, lsl 1 sub w2, w2, #0x40 cmp w2, #0x40 bge L_AES_XTS_encrypt_NEON_loop_4 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 L_AES_XTS_encrypt_NEON_start_2 cmp w2, #32 blt L_AES_XTS_encrypt_NEON_start_1 mov x22, x4 - ld1 {v0.16b, v1.16b}, [x0], #32 - ld1 {v4.16b}, [x22], #16 + ld1 {V0.16B, V1.16B}, [x0], #32 + ld1 {V4.16B}, [x22], #16 and x16, x17, x9, asr 63 extr x11, x9, x8, #63 eor x10, x16, x8, lsl 1 and x16, x17, x11, asr 63 extr x13, x11, x10, #63 eor x12, x16, x10, lsl 1 - mov v2.d[0], x8 - mov v2.d[1], x9 - mov v3.d[0], x10 - mov v3.d[1], x11 - eor v0.16b, v0.16b, v2.16b - eor v1.16b, v1.16b, v3.16b - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + mov V2.D[0], x8 + mov V2.D[1], x9 + mov V3.D[0], x10 + mov V3.D[1], x11 + eor V0.16B, V0.16B, V2.16B + eor V1.16B, V1.16B, V3.16B + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B sub w21, w7, #2 L_AES_XTS_encrypt_NEON_loop_nr_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x20] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v10.16b, v4.16b, #1 - shl v11.16b, v5.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - shl v10.4s, v0.4s, #8 - shl v11.4s, v1.4s, #8 - sri v10.4s, v0.4s, #24 - sri v11.4s, v1.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x20] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V10.16B, V4.16B, #1 + shl V11.16B, V5.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + shl V10.4S, V0.4S, #8 + shl V11.4S, V1.4S, #8 + sri V10.4S, V0.4S, #24 + sri V11.4S, V1.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x22], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + ld1 {V0.2D}, [x22], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; Round Done - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x20] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - shl v10.16b, v0.16b, #1 - shl v11.16b, v1.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v4.16b, v8.16b, v0.16b - eor v5.16b, v9.16b, v1.16b - shl v10.4s, v4.4s, #8 - shl v11.4s, v5.4s, #8 - sri v10.4s, v4.4s, #24 - sri v11.4s, v5.4s, #24 - shl v4.4s, v0.4s, #24 - shl v5.4s, v1.4s, #24 - sri v4.4s, v0.4s, #8 - sri v5.4s, v1.4s, #8 - rev32 v0.8h, v0.8h - rev32 v1.8h, v1.8h - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x20] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + shl V10.16B, V0.16B, #1 + shl V11.16B, V1.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V4.16B, V8.16B, V0.16B + eor V5.16B, V9.16B, V1.16B + shl V10.4S, V4.4S, #8 + shl V11.4S, V5.4S, #8 + sri V10.4S, V4.4S, #24 + sri V11.4S, V5.4S, #24 + shl V4.4S, V0.4S, #24 + shl V5.4S, V1.4S, #24 + sri V4.4S, V0.4S, #8 + sri V5.4S, V1.4S, #8 + rev32 V0.8H, V0.8H + rev32 V1.8H, V1.8H + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x22], #16 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b + ld1 {V4.2D}, [x22], #16 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B ; Round Done subs w21, w21, #2 bne L_AES_XTS_encrypt_NEON_loop_nr_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x20] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v10.16b, v4.16b, #1 - shl v11.16b, v5.16b, #1 - and v8.16b, v8.16b, v15.16b - and v9.16b, v9.16b, v15.16b - eor v8.16b, v8.16b, v10.16b - eor v9.16b, v9.16b, v11.16b - eor v0.16b, v8.16b, v4.16b - eor v1.16b, v9.16b, v5.16b - shl v10.4s, v0.4s, #8 - shl v11.4s, v1.4s, #8 - sri v10.4s, v0.4s, #24 - sri v11.4s, v1.4s, #24 - shl v0.4s, v4.4s, #24 - shl v1.4s, v5.4s, #24 - sri v0.4s, v4.4s, #8 - sri v1.4s, v5.4s, #8 - rev32 v4.8h, v4.8h - rev32 v5.8h, v5.8h - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x20] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V10.16B, V4.16B, #1 + shl V11.16B, V5.16B, #1 + and V8.16B, V8.16B, V15.16B + and V9.16B, V9.16B, V15.16B + eor V8.16B, V8.16B, V10.16B + eor V9.16B, V9.16B, V11.16B + eor V0.16B, V8.16B, V4.16B + eor V1.16B, V9.16B, V5.16B + shl V10.4S, V0.4S, #8 + shl V11.4S, V1.4S, #8 + sri V10.4S, V0.4S, #24 + sri V11.4S, V1.4S, #24 + shl V0.4S, V4.4S, #24 + shl V1.4S, V5.4S, #24 + sri V0.4S, V4.4S, #8 + sri V1.4S, V5.4S, #8 + rev32 V4.8H, V4.8H + rev32 V5.8H, V5.8H + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x22], #16 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + ld1 {V0.2D}, [x22], #16 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; Round Done - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x20] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x20] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x22], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + ld1 {V4.2D}, [x22], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - eor v0.16b, v0.16b, v2.16b - eor v1.16b, v1.16b, v3.16b - st1 {v0.16b, v1.16b}, [x1], #32 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + eor V0.16B, V0.16B, V2.16B + eor V1.16B, V1.16B, V3.16B + st1 {V0.16B, V1.16B}, [x1], #32 and x16, x17, x11, asr 63 extr x9, x11, x10, #63 eor x8, x16, x10, lsl 1 sub w2, w2, #32 L_AES_XTS_encrypt_NEON_start_1 - ld1 {v3.2d}, [x20] - mov v2.d[0], x8 - mov v2.d[1], x9 + ld1 {V3.2D}, [x20] + mov V2.D[0], x8 + mov V2.D[1], x9 cmp w2, #16 blt L_AES_XTS_encrypt_NEON_start_partial mov x22, x4 - ld1 {v0.16b}, [x0], #16 - ld1 {v4.2d}, [x22], #16 - eor v0.16b, v0.16b, v2.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v4.16b + ld1 {V0.16B}, [x0], #16 + ld1 {V4.2D}, [x22], #16 + eor V0.16B, V0.16B, V2.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V4.16B sub w21, w7, #2 L_AES_XTS_encrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x22], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x22], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x22], #16 - sshr v10.16b, v0.16b, #7 - shl v9.16b, v0.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v0.8h - eor v11.16b, v10.16b, v0.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v0.4s, #24 - shl v8.4s, v11.4s, #8 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x22], #16 + sshr V10.16B, V0.16B, #7 + shl V9.16B, V0.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V0.8H + eor V11.16B, V10.16B, V0.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V0.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v4.16b - sri v9.4s, v0.4s, #8 - sri v8.4s, v11.4s, #24 - eor v0.16b, v10.16b, v9.16b - eor v0.16b, v0.16b, v8.16b + eor V10.16B, V10.16B, V4.16B + sri V9.4S, V0.4S, #8 + sri V8.4S, V11.4S, #24 + eor V0.16B, V10.16B, V9.16B + eor V0.16B, V0.16B, V8.16B subs w21, w21, #2 bne L_AES_XTS_encrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x22], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x22], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x22], #16 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x22], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v2.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V2.16B + st1 {V0.16B}, [x1], #16 subs w2, w2, #16 beq L_AES_XTS_encrypt_NEON_data_done and x16, x17, x9, asr 63 @@ -49020,12 +49020,12 @@ L_AES_XTS_encrypt_NEON_loop_nr_1 eor x8, x16, x8, lsl 1 L_AES_XTS_encrypt_NEON_start_partial cbz w2, L_AES_XTS_encrypt_NEON_data_done - mov v2.d[0], x8 - mov v2.d[1], x9 + mov V2.D[0], x8 + mov V2.D[1], x9 mov x22, x4 sub x1, x1, #16 - ld1 {v0.16b}, [x1], #16 - st1 {v0.2d}, [x6] + ld1 {V0.16B}, [x1], #16 + st1 {V0.2D}, [x6] mov w16, w2 L_AES_XTS_encrypt_NEON_start_byte ldrb w10, [x6] @@ -49037,121 +49037,121 @@ L_AES_XTS_encrypt_NEON_start_byte sub x1, x1, x2 sub x6, x6, x2 sub x1, x1, #16 - ld1 {v0.2d}, [x6] - ld1 {v4.2d}, [x22], #16 - eor v0.16b, v0.16b, v2.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v4.16b + ld1 {V0.2D}, [x6] + ld1 {V4.2D}, [x22], #16 + eor V0.16B, V0.16B, V2.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V4.16B sub w21, w7, #2 L_AES_XTS_encrypt_NEON_loop_nr_partial - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x22], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x22], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x22], #16 - sshr v10.16b, v0.16b, #7 - shl v9.16b, v0.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v0.8h - eor v11.16b, v10.16b, v0.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v0.4s, #24 - shl v8.4s, v11.4s, #8 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x22], #16 + sshr V10.16B, V0.16B, #7 + shl V9.16B, V0.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V0.8H + eor V11.16B, V10.16B, V0.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V0.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v4.16b - sri v9.4s, v0.4s, #8 - sri v8.4s, v11.4s, #24 - eor v0.16b, v10.16b, v9.16b - eor v0.16b, v0.16b, v8.16b + eor V10.16B, V10.16B, V4.16B + sri V9.4S, V0.4S, #8 + sri V8.4S, V11.4S, #24 + eor V0.16B, V10.16B, V9.16B + eor V0.16B, V0.16B, V8.16B subs w21, w21, #2 bne L_AES_XTS_encrypt_NEON_loop_nr_partial - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v0.2d}, [x22], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V0.2D}, [x22], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v0.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x22], #16 + eor V10.16B, V10.16B, V0.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x22], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v2.16b - st1 {v0.16b}, [x1] + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V2.16B + st1 {V0.16B}, [x1] L_AES_XTS_encrypt_NEON_data_done ldp x17, x19, [x29, #24] ldp x20, x21, [x29, #40] ldr x22, [x29, #56] - ldp d8, d9, [x29, #64] - ldp d10, d11, [x29, #80] - ldp d12, d13, [x29, #96] - ldp d14, d15, [x29, #112] + ldp D8, D9, [x29, #64] + ldp D10, D11, [x29, #80] + ldp D12, D13, [x29, #96] + ldp D14, D15, [x29, #112] ldp x29, x30, [sp], #0x80 ret ENDP @@ -49166,10 +49166,10 @@ AES_XTS_decrypt_NEON PROC stp x20, x21, [x29, #32] stp x22, x23, [x29, #48] stp x24, x25, [x29, #64] - stp d8, d9, [x29, #80] - stp d10, d11, [x29, #96] - stp d12, d13, [x29, #112] - stp d14, d15, [x29, #128] + stp D8, D9, [x29, #80] + stp D10, D11, [x29, #96] + stp D12, D13, [x29, #112] + stp D14, D15, [x29, #128] adrp x20, L_AES_ARM64_NEON_te add x20, x20, L_AES_ARM64_NEON_te adrp x21, L_AES_ARM64_NEON_td @@ -49178,138 +49178,138 @@ AES_XTS_decrypt_NEON PROC add x22, x22, L_AES_ARM64_NEON_shift_rows_shuffle adrp x23, L_AES_ARM64_NEON_shift_rows_invshuffle add x23, x23, L_AES_ARM64_NEON_shift_rows_invshuffle - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x20], #0x40 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x20], #0x40 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x20], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x20] - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 - ld1 {v3.2d}, [x22] + ld1 {V16.16B, V17.16B, V18.16B, V19.16B}, [x20], #0x40 + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x20], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x20], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x20] + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 + ld1 {V3.2D}, [x22] mov x17, #0x87 ands w19, w2, #15 cset w16, ne sub w2, w2, w16, lsl 4 - ld1 {v2.2d}, [x3] - ld1 {v4.2d}, [x5] - rev32 v2.16b, v2.16b + ld1 {V2.2D}, [x3] + ld1 {V4.2D}, [x5] + rev32 V2.16B, V2.16B add x25, x5, #16 ; Round: 0 - XOR in key schedule - eor v2.16b, v2.16b, v4.16b + eor V2.16B, V2.16B, V4.16B sub w24, w7, #2 L_AES_XTS_decrypt_NEON_loop_nr_tweak - eor v8.16b, v2.16b, v12.16b - eor v9.16b, v2.16b, v13.16b - eor v10.16b, v2.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v2.2d}, [x25], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V2.16B, V12.16B + eor V9.16B, V2.16B, V13.16B + eor V10.16B, V2.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V2.2D}, [x25], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v2.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v2.16b, v2.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v2.16b, v2.16b, v9.16b - tbl v2.16b, {v2.16b}, v3.16b - ld1 {v4.2d}, [x25], #16 - sshr v10.16b, v2.16b, #7 - shl v9.16b, v2.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v2.8h - eor v11.16b, v10.16b, v2.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v2.4s, #24 - shl v8.4s, v11.4s, #8 + eor V10.16B, V10.16B, V2.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V2.16B, V2.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V2.16B, V2.16B, V9.16B + tbl V2.16B, {V2.16B}, V3.16B + ld1 {V4.2D}, [x25], #16 + sshr V10.16B, V2.16B, #7 + shl V9.16B, V2.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V2.8H + eor V11.16B, V10.16B, V2.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V2.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v4.16b - sri v9.4s, v2.4s, #8 - sri v8.4s, v11.4s, #24 - eor v2.16b, v10.16b, v9.16b - eor v2.16b, v2.16b, v8.16b + eor V10.16B, V10.16B, V4.16B + sri V9.4S, V2.4S, #8 + sri V8.4S, V11.4S, #24 + eor V2.16B, V10.16B, V9.16B + eor V2.16B, V2.16B, V8.16B subs w24, w24, #2 bne L_AES_XTS_decrypt_NEON_loop_nr_tweak - eor v8.16b, v2.16b, v12.16b - eor v9.16b, v2.16b, v13.16b - eor v10.16b, v2.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - ld1 {v2.2d}, [x25], #16 - sshr v10.16b, v4.16b, #7 - shl v9.16b, v4.16b, #1 - and v10.16b, v10.16b, v15.16b - eor v10.16b, v10.16b, v9.16b - rev32 v8.8h, v4.8h - eor v11.16b, v10.16b, v4.16b - eor v10.16b, v10.16b, v8.16b - shl v9.4s, v4.4s, #24 - shl v8.4s, v11.4s, #8 + eor V8.16B, V2.16B, V12.16B + eor V9.16B, V2.16B, V13.16B + eor V10.16B, V2.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + ld1 {V2.2D}, [x25], #16 + sshr V10.16B, V4.16B, #7 + shl V9.16B, V4.16B, #1 + and V10.16B, V10.16B, V15.16B + eor V10.16B, V10.16B, V9.16B + rev32 V8.8H, V4.8H + eor V11.16B, V10.16B, V4.16B + eor V10.16B, V10.16B, V8.16B + shl V9.4S, V4.4S, #24 + shl V8.4S, V11.4S, #8 ; XOR in Key Schedule - eor v10.16b, v10.16b, v2.16b - sri v9.4s, v4.4s, #8 - sri v8.4s, v11.4s, #24 - eor v4.16b, v10.16b, v9.16b - eor v4.16b, v4.16b, v8.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v2.16b, v2.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v2.16b, v2.16b, v9.16b - tbl v2.16b, {v2.16b}, v3.16b - ld1 {v4.2d}, [x25], #16 + eor V10.16B, V10.16B, V2.16B + sri V9.4S, V4.4S, #8 + sri V8.4S, V11.4S, #24 + eor V4.16B, V10.16B, V9.16B + eor V4.16B, V4.16B, V8.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V2.16B, V2.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V2.16B, V2.16B, V9.16B + tbl V2.16B, {V2.16B}, V3.16B + ld1 {V4.2D}, [x25], #16 ; XOR in Key Schedule - eor v2.16b, v2.16b, v4.16b - rev32 v2.16b, v2.16b - mov x8, v2.d[0] - mov x9, v2.d[1] - ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x21], #0x40 - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x21], #0x40 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x21], #0x40 - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x21] - ld1 {v3.2d}, [x23] + eor V2.16B, V2.16B, V4.16B + rev32 V2.16B, V2.16B + mov x8, V2.D[0] + mov x9, V2.D[1] + ld1 {V16.16B, V17.16B, V18.16B, V19.16B}, [x21], #0x40 + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x21], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x21], #0x40 + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x21] + ld1 {V3.2D}, [x23] cmp w2, #0x40 blt L_AES_XTS_decrypt_NEON_start_2 L_AES_XTS_decrypt_NEON_loop_4 mov x25, x4 - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld1 {v4.16b}, [x25], #16 + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld1 {V4.16B}, [x25], #16 and x16, x17, x9, asr 63 extr x11, x9, x8, #63 eor x10, x16, x8, lsl 1 @@ -49319,1045 +49319,1045 @@ L_AES_XTS_decrypt_NEON_loop_4 and x16, x17, x13, asr 63 extr x15, x13, x12, #63 eor x14, x16, x12, lsl 1 - mov v8.d[0], x8 - mov v8.d[1], x9 - mov v9.d[0], x10 - mov v9.d[1], x11 - mov v10.d[0], x12 - mov v10.d[1], x13 - mov v11.d[0], x14 - mov v11.d[1], x15 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + mov V8.D[0], x8 + mov V8.D[1], x9 + mov V9.D[0], x10 + mov V9.D[1], x11 + mov V10.D[0], x12 + mov V10.D[1], x13 + mov V11.D[0], x14 + mov V11.D[1], x15 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B sub w24, w7, #2 L_AES_XTS_decrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x23] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - movi v28.16b, #27 - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - and v8.16b, v8.16b, v28.16b - and v9.16b, v9.16b, v28.16b - and v10.16b, v10.16b, v28.16b - and v11.16b, v11.16b, v28.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - ushr v14.16b, v6.16b, #6 - ushr v15.16b, v7.16b, #6 - shl v0.16b, v4.16b, #2 - shl v1.16b, v5.16b, #2 - shl v2.16b, v6.16b, #2 - shl v3.16b, v7.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - eor v14.16b, v14.16b, v2.16b - eor v15.16b, v15.16b, v3.16b - ushr v0.16b, v4.16b, #5 - ushr v1.16b, v5.16b, #5 - ushr v2.16b, v6.16b, #5 - ushr v3.16b, v7.16b, #5 - pmul v0.16b, v0.16b, v28.16b - pmul v1.16b, v1.16b, v28.16b - pmul v2.16b, v2.16b, v28.16b - pmul v3.16b, v3.16b, v28.16b - shl v28.16b, v4.16b, #3 - shl v29.16b, v5.16b, #3 - shl v30.16b, v6.16b, #3 - shl v31.16b, v7.16b, #3 - eor v0.16b, v0.16b, v28.16b - eor v1.16b, v1.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - eor v3.16b, v3.16b, v31.16b - eor v28.16b, v8.16b, v0.16b - eor v29.16b, v9.16b, v1.16b - eor v30.16b, v10.16b, v2.16b - eor v31.16b, v11.16b, v3.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - eor v8.16b, v12.16b, v0.16b - eor v9.16b, v13.16b, v1.16b - eor v10.16b, v14.16b, v2.16b - eor v11.16b, v15.16b, v3.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v4.16b - eor v29.16b, v29.16b, v5.16b - eor v30.16b, v30.16b, v6.16b - eor v31.16b, v31.16b, v7.16b - shl v4.4s, v28.4s, #8 - shl v5.4s, v29.4s, #8 - shl v6.4s, v30.4s, #8 - shl v7.4s, v31.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - rev32 v10.8h, v10.8h - rev32 v11.8h, v11.8h - sri v4.4s, v28.4s, #24 - sri v5.4s, v29.4s, #24 - sri v6.4s, v30.4s, #24 - sri v7.4s, v31.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b - shl v28.4s, v0.4s, #24 - shl v29.4s, v1.4s, #24 - shl v30.4s, v2.4s, #24 - shl v31.4s, v3.4s, #24 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - sri v28.4s, v0.4s, #8 - sri v29.4s, v1.4s, #8 - sri v30.4s, v2.4s, #8 - sri v31.4s, v3.4s, #8 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x21] + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x23] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + movi V28.16B, #27 + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + and V8.16B, V8.16B, V28.16B + and V9.16B, V9.16B, V28.16B + and V10.16B, V10.16B, V28.16B + and V11.16B, V11.16B, V28.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + ushr V14.16B, V6.16B, #6 + ushr V15.16B, V7.16B, #6 + shl V0.16B, V4.16B, #2 + shl V1.16B, V5.16B, #2 + shl V2.16B, V6.16B, #2 + shl V3.16B, V7.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + eor V14.16B, V14.16B, V2.16B + eor V15.16B, V15.16B, V3.16B + ushr V0.16B, V4.16B, #5 + ushr V1.16B, V5.16B, #5 + ushr V2.16B, V6.16B, #5 + ushr V3.16B, V7.16B, #5 + pmul V0.16B, V0.16B, V28.16B + pmul V1.16B, V1.16B, V28.16B + pmul V2.16B, V2.16B, V28.16B + pmul V3.16B, V3.16B, V28.16B + shl V28.16B, V4.16B, #3 + shl V29.16B, V5.16B, #3 + shl V30.16B, V6.16B, #3 + shl V31.16B, V7.16B, #3 + eor V0.16B, V0.16B, V28.16B + eor V1.16B, V1.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + eor V3.16B, V3.16B, V31.16B + eor V28.16B, V8.16B, V0.16B + eor V29.16B, V9.16B, V1.16B + eor V30.16B, V10.16B, V2.16B + eor V31.16B, V11.16B, V3.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + eor V8.16B, V12.16B, V0.16B + eor V9.16B, V13.16B, V1.16B + eor V10.16B, V14.16B, V2.16B + eor V11.16B, V15.16B, V3.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V4.16B + eor V29.16B, V29.16B, V5.16B + eor V30.16B, V30.16B, V6.16B + eor V31.16B, V31.16B, V7.16B + shl V4.4S, V28.4S, #8 + shl V5.4S, V29.4S, #8 + shl V6.4S, V30.4S, #8 + shl V7.4S, V31.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + rev32 V10.8H, V10.8H + rev32 V11.8H, V11.8H + sri V4.4S, V28.4S, #24 + sri V5.4S, V29.4S, #24 + sri V6.4S, V30.4S, #24 + sri V7.4S, V31.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B + shl V28.4S, V0.4S, #24 + shl V29.4S, V1.4S, #24 + shl V30.4S, V2.4S, #24 + shl V31.4S, V3.4S, #24 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + sri V28.4S, V0.4S, #8 + sri V29.4S, V1.4S, #8 + sri V30.4S, V2.4S, #8 + sri V31.4S, V3.4S, #8 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x21] ; XOR in Key Schedule - ld1 {v0.2d}, [x25], #16 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b + ld1 {V0.2D}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x23] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b - movi v28.16b, #27 - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - sshr v10.16b, v2.16b, #7 - sshr v11.16b, v3.16b, #7 - shl v12.16b, v0.16b, #1 - shl v13.16b, v1.16b, #1 - shl v14.16b, v2.16b, #1 - shl v15.16b, v3.16b, #1 - and v8.16b, v8.16b, v28.16b - and v9.16b, v9.16b, v28.16b - and v10.16b, v10.16b, v28.16b - and v11.16b, v11.16b, v28.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - ushr v12.16b, v0.16b, #6 - ushr v13.16b, v1.16b, #6 - ushr v14.16b, v2.16b, #6 - ushr v15.16b, v3.16b, #6 - shl v4.16b, v0.16b, #2 - shl v5.16b, v1.16b, #2 - shl v6.16b, v2.16b, #2 - shl v7.16b, v3.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v4.16b - eor v13.16b, v13.16b, v5.16b - eor v14.16b, v14.16b, v6.16b - eor v15.16b, v15.16b, v7.16b - ushr v4.16b, v0.16b, #5 - ushr v5.16b, v1.16b, #5 - ushr v6.16b, v2.16b, #5 - ushr v7.16b, v3.16b, #5 - pmul v4.16b, v4.16b, v28.16b - pmul v5.16b, v5.16b, v28.16b - pmul v6.16b, v6.16b, v28.16b - pmul v7.16b, v7.16b, v28.16b - shl v28.16b, v0.16b, #3 - shl v29.16b, v1.16b, #3 - shl v30.16b, v2.16b, #3 - shl v31.16b, v3.16b, #3 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - eor v28.16b, v8.16b, v4.16b - eor v29.16b, v9.16b, v5.16b - eor v30.16b, v10.16b, v6.16b - eor v31.16b, v11.16b, v7.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v6.16b, v6.16b, v2.16b - eor v7.16b, v7.16b, v3.16b - eor v8.16b, v12.16b, v4.16b - eor v9.16b, v13.16b, v5.16b - eor v10.16b, v14.16b, v6.16b - eor v11.16b, v15.16b, v7.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v0.16b - eor v29.16b, v29.16b, v1.16b - eor v30.16b, v30.16b, v2.16b - eor v31.16b, v31.16b, v3.16b - shl v0.4s, v28.4s, #8 - shl v1.4s, v29.4s, #8 - shl v2.4s, v30.4s, #8 - shl v3.4s, v31.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - rev32 v10.8h, v10.8h - rev32 v11.8h, v11.8h - sri v0.4s, v28.4s, #24 - sri v1.4s, v29.4s, #24 - sri v2.4s, v30.4s, #24 - sri v3.4s, v31.4s, #24 - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - eor v2.16b, v2.16b, v14.16b - eor v3.16b, v3.16b, v15.16b - shl v28.4s, v4.4s, #24 - shl v29.4s, v5.4s, #24 - shl v30.4s, v6.4s, #24 - shl v31.4s, v7.4s, #24 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - sri v28.4s, v4.4s, #8 - sri v29.4s, v5.4s, #8 - sri v30.4s, v6.4s, #8 - sri v31.4s, v7.4s, #8 - eor v0.16b, v0.16b, v28.16b - eor v1.16b, v1.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - eor v3.16b, v3.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x21] + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x23] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B + movi V28.16B, #27 + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + sshr V10.16B, V2.16B, #7 + sshr V11.16B, V3.16B, #7 + shl V12.16B, V0.16B, #1 + shl V13.16B, V1.16B, #1 + shl V14.16B, V2.16B, #1 + shl V15.16B, V3.16B, #1 + and V8.16B, V8.16B, V28.16B + and V9.16B, V9.16B, V28.16B + and V10.16B, V10.16B, V28.16B + and V11.16B, V11.16B, V28.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + ushr V12.16B, V0.16B, #6 + ushr V13.16B, V1.16B, #6 + ushr V14.16B, V2.16B, #6 + ushr V15.16B, V3.16B, #6 + shl V4.16B, V0.16B, #2 + shl V5.16B, V1.16B, #2 + shl V6.16B, V2.16B, #2 + shl V7.16B, V3.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V4.16B + eor V13.16B, V13.16B, V5.16B + eor V14.16B, V14.16B, V6.16B + eor V15.16B, V15.16B, V7.16B + ushr V4.16B, V0.16B, #5 + ushr V5.16B, V1.16B, #5 + ushr V6.16B, V2.16B, #5 + ushr V7.16B, V3.16B, #5 + pmul V4.16B, V4.16B, V28.16B + pmul V5.16B, V5.16B, V28.16B + pmul V6.16B, V6.16B, V28.16B + pmul V7.16B, V7.16B, V28.16B + shl V28.16B, V0.16B, #3 + shl V29.16B, V1.16B, #3 + shl V30.16B, V2.16B, #3 + shl V31.16B, V3.16B, #3 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + eor V28.16B, V8.16B, V4.16B + eor V29.16B, V9.16B, V5.16B + eor V30.16B, V10.16B, V6.16B + eor V31.16B, V11.16B, V7.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V6.16B, V6.16B, V2.16B + eor V7.16B, V7.16B, V3.16B + eor V8.16B, V12.16B, V4.16B + eor V9.16B, V13.16B, V5.16B + eor V10.16B, V14.16B, V6.16B + eor V11.16B, V15.16B, V7.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V0.16B + eor V29.16B, V29.16B, V1.16B + eor V30.16B, V30.16B, V2.16B + eor V31.16B, V31.16B, V3.16B + shl V0.4S, V28.4S, #8 + shl V1.4S, V29.4S, #8 + shl V2.4S, V30.4S, #8 + shl V3.4S, V31.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + rev32 V10.8H, V10.8H + rev32 V11.8H, V11.8H + sri V0.4S, V28.4S, #24 + sri V1.4S, V29.4S, #24 + sri V2.4S, V30.4S, #24 + sri V3.4S, V31.4S, #24 + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + eor V2.16B, V2.16B, V14.16B + eor V3.16B, V3.16B, V15.16B + shl V28.4S, V4.4S, #24 + shl V29.4S, V5.4S, #24 + shl V30.4S, V6.4S, #24 + shl V31.4S, V7.4S, #24 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + sri V28.4S, V4.4S, #8 + sri V29.4S, V5.4S, #8 + sri V30.4S, V6.4S, #8 + sri V31.4S, V7.4S, #8 + eor V0.16B, V0.16B, V28.16B + eor V1.16B, V1.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + eor V3.16B, V3.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x21] ; XOR in Key Schedule - ld1 {v4.2d}, [x25], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + ld1 {V4.2D}, [x25], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B ; Round Done subs w24, w24, #2 bne L_AES_XTS_decrypt_NEON_loop_nr_4 - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v6.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v2.16b - tbl v7.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v3.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - eor v10.16b, v2.16b, v12.16b - eor v11.16b, v3.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v13.16b - eor v9.16b, v1.16b, v13.16b - eor v10.16b, v2.16b, v13.16b - eor v11.16b, v3.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - eor v10.16b, v2.16b, v14.16b - eor v11.16b, v3.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - orr v6.16b, v6.16b, v10.16b - orr v7.16b, v7.16b, v11.16b - ld1 {v0.16b}, [x23] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - tbl v6.16b, {v6.16b}, v0.16b - tbl v7.16b, {v7.16b}, v0.16b - movi v28.16b, #27 - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - sshr v10.16b, v6.16b, #7 - sshr v11.16b, v7.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - shl v14.16b, v6.16b, #1 - shl v15.16b, v7.16b, #1 - and v8.16b, v8.16b, v28.16b - and v9.16b, v9.16b, v28.16b - and v10.16b, v10.16b, v28.16b - and v11.16b, v11.16b, v28.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - eor v10.16b, v10.16b, v14.16b - eor v11.16b, v11.16b, v15.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - ushr v14.16b, v6.16b, #6 - ushr v15.16b, v7.16b, #6 - shl v0.16b, v4.16b, #2 - shl v1.16b, v5.16b, #2 - shl v2.16b, v6.16b, #2 - shl v3.16b, v7.16b, #2 - pmul v12.16b, v12.16b, v28.16b - pmul v13.16b, v13.16b, v28.16b - pmul v14.16b, v14.16b, v28.16b - pmul v15.16b, v15.16b, v28.16b - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - eor v14.16b, v14.16b, v2.16b - eor v15.16b, v15.16b, v3.16b - ushr v0.16b, v4.16b, #5 - ushr v1.16b, v5.16b, #5 - ushr v2.16b, v6.16b, #5 - ushr v3.16b, v7.16b, #5 - pmul v0.16b, v0.16b, v28.16b - pmul v1.16b, v1.16b, v28.16b - pmul v2.16b, v2.16b, v28.16b - pmul v3.16b, v3.16b, v28.16b - shl v28.16b, v4.16b, #3 - shl v29.16b, v5.16b, #3 - shl v30.16b, v6.16b, #3 - shl v31.16b, v7.16b, #3 - eor v0.16b, v0.16b, v28.16b - eor v1.16b, v1.16b, v29.16b - eor v2.16b, v2.16b, v30.16b - eor v3.16b, v3.16b, v31.16b - eor v28.16b, v8.16b, v0.16b - eor v29.16b, v9.16b, v1.16b - eor v30.16b, v10.16b, v2.16b - eor v31.16b, v11.16b, v3.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - eor v8.16b, v12.16b, v0.16b - eor v9.16b, v13.16b, v1.16b - eor v10.16b, v14.16b, v2.16b - eor v11.16b, v15.16b, v3.16b - eor v12.16b, v12.16b, v28.16b - eor v13.16b, v13.16b, v29.16b - eor v14.16b, v14.16b, v30.16b - eor v15.16b, v15.16b, v31.16b - eor v28.16b, v28.16b, v4.16b - eor v29.16b, v29.16b, v5.16b - eor v30.16b, v30.16b, v6.16b - eor v31.16b, v31.16b, v7.16b - shl v4.4s, v28.4s, #8 - shl v5.4s, v29.4s, #8 - shl v6.4s, v30.4s, #8 - shl v7.4s, v31.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - rev32 v10.8h, v10.8h - rev32 v11.8h, v11.8h - sri v4.4s, v28.4s, #24 - sri v5.4s, v29.4s, #24 - sri v6.4s, v30.4s, #24 - sri v7.4s, v31.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - eor v6.16b, v6.16b, v14.16b - eor v7.16b, v7.16b, v15.16b - shl v28.4s, v0.4s, #24 - shl v29.4s, v1.4s, #24 - shl v30.4s, v2.4s, #24 - shl v31.4s, v3.4s, #24 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - eor v6.16b, v6.16b, v10.16b - eor v7.16b, v7.16b, v11.16b - sri v28.4s, v0.4s, #8 - sri v29.4s, v1.4s, #8 - sri v30.4s, v2.4s, #8 - sri v31.4s, v3.4s, #8 - eor v4.16b, v4.16b, v28.16b - eor v5.16b, v5.16b, v29.16b - eor v6.16b, v6.16b, v30.16b - eor v7.16b, v7.16b, v31.16b - ld1 {v28.16b, v29.16b, v30.16b, v31.16b}, [x21] + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V6.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V2.16B + tbl V7.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V3.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + eor V10.16B, V2.16B, V12.16B + eor V11.16B, V3.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V13.16B + eor V9.16B, V1.16B, V13.16B + eor V10.16B, V2.16B, V13.16B + eor V11.16B, V3.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + eor V10.16B, V2.16B, V14.16B + eor V11.16B, V3.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + orr V6.16B, V6.16B, V10.16B + orr V7.16B, V7.16B, V11.16B + ld1 {V0.16B}, [x23] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + tbl V6.16B, {V6.16B}, V0.16B + tbl V7.16B, {V7.16B}, V0.16B + movi V28.16B, #27 + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + sshr V10.16B, V6.16B, #7 + sshr V11.16B, V7.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + shl V14.16B, V6.16B, #1 + shl V15.16B, V7.16B, #1 + and V8.16B, V8.16B, V28.16B + and V9.16B, V9.16B, V28.16B + and V10.16B, V10.16B, V28.16B + and V11.16B, V11.16B, V28.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + eor V10.16B, V10.16B, V14.16B + eor V11.16B, V11.16B, V15.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + ushr V14.16B, V6.16B, #6 + ushr V15.16B, V7.16B, #6 + shl V0.16B, V4.16B, #2 + shl V1.16B, V5.16B, #2 + shl V2.16B, V6.16B, #2 + shl V3.16B, V7.16B, #2 + pmul V12.16B, V12.16B, V28.16B + pmul V13.16B, V13.16B, V28.16B + pmul V14.16B, V14.16B, V28.16B + pmul V15.16B, V15.16B, V28.16B + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + eor V14.16B, V14.16B, V2.16B + eor V15.16B, V15.16B, V3.16B + ushr V0.16B, V4.16B, #5 + ushr V1.16B, V5.16B, #5 + ushr V2.16B, V6.16B, #5 + ushr V3.16B, V7.16B, #5 + pmul V0.16B, V0.16B, V28.16B + pmul V1.16B, V1.16B, V28.16B + pmul V2.16B, V2.16B, V28.16B + pmul V3.16B, V3.16B, V28.16B + shl V28.16B, V4.16B, #3 + shl V29.16B, V5.16B, #3 + shl V30.16B, V6.16B, #3 + shl V31.16B, V7.16B, #3 + eor V0.16B, V0.16B, V28.16B + eor V1.16B, V1.16B, V29.16B + eor V2.16B, V2.16B, V30.16B + eor V3.16B, V3.16B, V31.16B + eor V28.16B, V8.16B, V0.16B + eor V29.16B, V9.16B, V1.16B + eor V30.16B, V10.16B, V2.16B + eor V31.16B, V11.16B, V3.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + eor V8.16B, V12.16B, V0.16B + eor V9.16B, V13.16B, V1.16B + eor V10.16B, V14.16B, V2.16B + eor V11.16B, V15.16B, V3.16B + eor V12.16B, V12.16B, V28.16B + eor V13.16B, V13.16B, V29.16B + eor V14.16B, V14.16B, V30.16B + eor V15.16B, V15.16B, V31.16B + eor V28.16B, V28.16B, V4.16B + eor V29.16B, V29.16B, V5.16B + eor V30.16B, V30.16B, V6.16B + eor V31.16B, V31.16B, V7.16B + shl V4.4S, V28.4S, #8 + shl V5.4S, V29.4S, #8 + shl V6.4S, V30.4S, #8 + shl V7.4S, V31.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + rev32 V10.8H, V10.8H + rev32 V11.8H, V11.8H + sri V4.4S, V28.4S, #24 + sri V5.4S, V29.4S, #24 + sri V6.4S, V30.4S, #24 + sri V7.4S, V31.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + eor V6.16B, V6.16B, V14.16B + eor V7.16B, V7.16B, V15.16B + shl V28.4S, V0.4S, #24 + shl V29.4S, V1.4S, #24 + shl V30.4S, V2.4S, #24 + shl V31.4S, V3.4S, #24 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + eor V6.16B, V6.16B, V10.16B + eor V7.16B, V7.16B, V11.16B + sri V28.4S, V0.4S, #8 + sri V29.4S, V1.4S, #8 + sri V30.4S, V2.4S, #8 + sri V31.4S, V3.4S, #8 + eor V4.16B, V4.16B, V28.16B + eor V5.16B, V5.16B, V29.16B + eor V6.16B, V6.16B, V30.16B + eor V7.16B, V7.16B, V31.16B + ld1 {V28.16B, V29.16B, V30.16B, V31.16B}, [x21] ; XOR in Key Schedule - ld1 {v0.2d}, [x25], #16 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b - eor v6.16b, v6.16b, v0.16b - eor v7.16b, v7.16b, v0.16b + ld1 {V0.2D}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B + eor V6.16B, V6.16B, V0.16B + eor V7.16B, V7.16B, V0.16B ; Round Done - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v2.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v6.16b - tbl v3.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v7.16b - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - eor v10.16b, v6.16b, v12.16b - eor v11.16b, v7.16b, v12.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - tbl v10.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v10.16b - tbl v11.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v13.16b - eor v9.16b, v5.16b, v13.16b - eor v10.16b, v6.16b, v13.16b - eor v11.16b, v7.16b, v13.16b - tbl v8.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - eor v10.16b, v6.16b, v14.16b - eor v11.16b, v7.16b, v14.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - tbl v11.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - orr v2.16b, v2.16b, v10.16b - orr v3.16b, v3.16b, v11.16b - ld1 {v4.16b}, [x23] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - tbl v2.16b, {v2.16b}, v4.16b - tbl v3.16b, {v3.16b}, v4.16b + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V2.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V6.16B + tbl V3.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V7.16B + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + eor V10.16B, V6.16B, V12.16B + eor V11.16B, V7.16B, V12.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + tbl V10.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V10.16B + tbl V11.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V13.16B + eor V9.16B, V5.16B, V13.16B + eor V10.16B, V6.16B, V13.16B + eor V11.16B, V7.16B, V13.16B + tbl V8.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + eor V10.16B, V6.16B, V14.16B + eor V11.16B, V7.16B, V14.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + tbl V11.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + orr V2.16B, V2.16B, V10.16B + orr V3.16B, V3.16B, V11.16B + ld1 {V4.16B}, [x23] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + tbl V2.16B, {V2.16B}, V4.16B + tbl V3.16B, {V3.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x25], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b - eor v2.16b, v2.16b, v4.16b - eor v3.16b, v3.16b, v4.16b + ld1 {V4.2D}, [x25], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B + eor V2.16B, V2.16B, V4.16B + eor V3.16B, V3.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - rev32 v2.16b, v2.16b - rev32 v3.16b, v3.16b - mov v8.d[0], x8 - mov v8.d[1], x9 - mov v9.d[0], x10 - mov v9.d[1], x11 - mov v10.d[0], x12 - mov v10.d[1], x13 - mov v11.d[0], x14 - mov v11.d[1], x15 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - eor v2.16b, v2.16b, v10.16b - eor v3.16b, v3.16b, v11.16b - st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + rev32 V2.16B, V2.16B + rev32 V3.16B, V3.16B + mov V8.D[0], x8 + mov V8.D[1], x9 + mov V9.D[0], x10 + mov V9.D[1], x11 + mov V10.D[0], x12 + mov V10.D[1], x13 + mov V11.D[0], x14 + mov V11.D[1], x15 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + eor V2.16B, V2.16B, V10.16B + eor V3.16B, V3.16B, V11.16B + st1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 and x16, x17, x15, asr 63 extr x9, x15, x14, #63 eor x8, x16, x14, lsl 1 sub w2, w2, #0x40 cmp w2, #0x40 bge L_AES_XTS_decrypt_NEON_loop_4 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - movi v15.16b, #27 + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + movi V15.16B, #27 L_AES_XTS_decrypt_NEON_start_2 cmp w2, #32 blt L_AES_XTS_decrypt_NEON_start_1 mov x25, x4 - ld1 {v0.16b, v1.16b}, [x0], #32 - ld1 {v4.16b}, [x25], #16 + ld1 {V0.16B, V1.16B}, [x0], #32 + ld1 {V4.16B}, [x25], #16 and x16, x17, x9, asr 63 extr x11, x9, x8, #63 eor x10, x16, x8, lsl 1 and x16, x17, x11, asr 63 extr x13, x11, x10, #63 eor x12, x16, x10, lsl 1 - mov v2.d[0], x8 - mov v2.d[1], x9 - mov v3.d[0], x10 - mov v3.d[1], x11 - eor v0.16b, v0.16b, v2.16b - eor v1.16b, v1.16b, v3.16b - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + mov V2.D[0], x8 + mov V2.D[1], x9 + mov V3.D[0], x10 + mov V3.D[1], x11 + eor V0.16B, V0.16B, V2.16B + eor V1.16B, V1.16B, V3.16B + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B sub w24, w7, #2 L_AES_XTS_decrypt_NEON_loop_nr_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x23] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - movi v10.16b, #27 - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - and v8.16b, v8.16b, v10.16b - and v9.16b, v9.16b, v10.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - shl v0.16b, v4.16b, #2 - shl v1.16b, v5.16b, #2 - pmul v12.16b, v12.16b, v10.16b - pmul v13.16b, v13.16b, v10.16b - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - ushr v0.16b, v4.16b, #5 - ushr v1.16b, v5.16b, #5 - pmul v0.16b, v0.16b, v10.16b - pmul v1.16b, v1.16b, v10.16b - shl v10.16b, v4.16b, #3 - shl v11.16b, v5.16b, #3 - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b - eor v10.16b, v8.16b, v0.16b - eor v11.16b, v9.16b, v1.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v8.16b, v12.16b, v0.16b - eor v9.16b, v13.16b, v1.16b - eor v12.16b, v12.16b, v10.16b - eor v13.16b, v13.16b, v11.16b - eor v10.16b, v10.16b, v4.16b - eor v11.16b, v11.16b, v5.16b - shl v4.4s, v10.4s, #8 - shl v5.4s, v11.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - sri v4.4s, v10.4s, #24 - sri v5.4s, v11.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - shl v10.4s, v0.4s, #24 - shl v11.4s, v1.4s, #24 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - sri v10.4s, v0.4s, #8 - sri v11.4s, v1.4s, #8 - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x23] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + movi V10.16B, #27 + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + and V8.16B, V8.16B, V10.16B + and V9.16B, V9.16B, V10.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + shl V0.16B, V4.16B, #2 + shl V1.16B, V5.16B, #2 + pmul V12.16B, V12.16B, V10.16B + pmul V13.16B, V13.16B, V10.16B + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + ushr V0.16B, V4.16B, #5 + ushr V1.16B, V5.16B, #5 + pmul V0.16B, V0.16B, V10.16B + pmul V1.16B, V1.16B, V10.16B + shl V10.16B, V4.16B, #3 + shl V11.16B, V5.16B, #3 + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B + eor V10.16B, V8.16B, V0.16B + eor V11.16B, V9.16B, V1.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V8.16B, V12.16B, V0.16B + eor V9.16B, V13.16B, V1.16B + eor V12.16B, V12.16B, V10.16B + eor V13.16B, V13.16B, V11.16B + eor V10.16B, V10.16B, V4.16B + eor V11.16B, V11.16B, V5.16B + shl V4.4S, V10.4S, #8 + shl V5.4S, V11.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + sri V4.4S, V10.4S, #24 + sri V5.4S, V11.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + shl V10.4S, V0.4S, #24 + shl V11.4S, V1.4S, #24 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + sri V10.4S, V0.4S, #8 + sri V11.4S, V1.4S, #8 + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x25], #16 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b + ld1 {V0.2D}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B ; Round Done - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x23] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b - movi v10.16b, #27 - sshr v8.16b, v0.16b, #7 - sshr v9.16b, v1.16b, #7 - shl v12.16b, v0.16b, #1 - shl v13.16b, v1.16b, #1 - and v8.16b, v8.16b, v10.16b - and v9.16b, v9.16b, v10.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - ushr v12.16b, v0.16b, #6 - ushr v13.16b, v1.16b, #6 - shl v4.16b, v0.16b, #2 - shl v5.16b, v1.16b, #2 - pmul v12.16b, v12.16b, v10.16b - pmul v13.16b, v13.16b, v10.16b - eor v12.16b, v12.16b, v4.16b - eor v13.16b, v13.16b, v5.16b - ushr v4.16b, v0.16b, #5 - ushr v5.16b, v1.16b, #5 - pmul v4.16b, v4.16b, v10.16b - pmul v5.16b, v5.16b, v10.16b - shl v10.16b, v0.16b, #3 - shl v11.16b, v1.16b, #3 - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b - eor v10.16b, v8.16b, v4.16b - eor v11.16b, v9.16b, v5.16b - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v1.16b - eor v8.16b, v12.16b, v4.16b - eor v9.16b, v13.16b, v5.16b - eor v12.16b, v12.16b, v10.16b - eor v13.16b, v13.16b, v11.16b - eor v10.16b, v10.16b, v0.16b - eor v11.16b, v11.16b, v1.16b - shl v0.4s, v10.4s, #8 - shl v1.4s, v11.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - sri v0.4s, v10.4s, #24 - sri v1.4s, v11.4s, #24 - eor v0.16b, v0.16b, v12.16b - eor v1.16b, v1.16b, v13.16b - shl v10.4s, v4.4s, #24 - shl v11.4s, v5.4s, #24 - eor v0.16b, v0.16b, v8.16b - eor v1.16b, v1.16b, v9.16b - sri v10.4s, v4.4s, #8 - sri v11.4s, v5.4s, #8 - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x23] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B + movi V10.16B, #27 + sshr V8.16B, V0.16B, #7 + sshr V9.16B, V1.16B, #7 + shl V12.16B, V0.16B, #1 + shl V13.16B, V1.16B, #1 + and V8.16B, V8.16B, V10.16B + and V9.16B, V9.16B, V10.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + ushr V12.16B, V0.16B, #6 + ushr V13.16B, V1.16B, #6 + shl V4.16B, V0.16B, #2 + shl V5.16B, V1.16B, #2 + pmul V12.16B, V12.16B, V10.16B + pmul V13.16B, V13.16B, V10.16B + eor V12.16B, V12.16B, V4.16B + eor V13.16B, V13.16B, V5.16B + ushr V4.16B, V0.16B, #5 + ushr V5.16B, V1.16B, #5 + pmul V4.16B, V4.16B, V10.16B + pmul V5.16B, V5.16B, V10.16B + shl V10.16B, V0.16B, #3 + shl V11.16B, V1.16B, #3 + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B + eor V10.16B, V8.16B, V4.16B + eor V11.16B, V9.16B, V5.16B + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V1.16B + eor V8.16B, V12.16B, V4.16B + eor V9.16B, V13.16B, V5.16B + eor V12.16B, V12.16B, V10.16B + eor V13.16B, V13.16B, V11.16B + eor V10.16B, V10.16B, V0.16B + eor V11.16B, V11.16B, V1.16B + shl V0.4S, V10.4S, #8 + shl V1.4S, V11.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + sri V0.4S, V10.4S, #24 + sri V1.4S, V11.4S, #24 + eor V0.16B, V0.16B, V12.16B + eor V1.16B, V1.16B, V13.16B + shl V10.4S, V4.4S, #24 + shl V11.4S, V5.4S, #24 + eor V0.16B, V0.16B, V8.16B + eor V1.16B, V1.16B, V9.16B + sri V10.4S, V4.4S, #8 + sri V11.4S, V5.4S, #8 + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x25], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + ld1 {V4.2D}, [x25], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B ; Round Done subs w24, w24, #2 bne L_AES_XTS_decrypt_NEON_loop_nr_2 - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v1.16b, v12.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v5.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v1.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v0.16b, v13.16b - eor v11.16b, v1.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - eor v8.16b, v0.16b, v14.16b - eor v9.16b, v1.16b, v14.16b - orr v4.16b, v4.16b, v10.16b - orr v5.16b, v5.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v4.16b, v4.16b, v8.16b - orr v5.16b, v5.16b, v9.16b - ld1 {v0.16b}, [x23] - tbl v4.16b, {v4.16b}, v0.16b - tbl v5.16b, {v5.16b}, v0.16b - movi v10.16b, #27 - sshr v8.16b, v4.16b, #7 - sshr v9.16b, v5.16b, #7 - shl v12.16b, v4.16b, #1 - shl v13.16b, v5.16b, #1 - and v8.16b, v8.16b, v10.16b - and v9.16b, v9.16b, v10.16b - eor v8.16b, v8.16b, v12.16b - eor v9.16b, v9.16b, v13.16b - ushr v12.16b, v4.16b, #6 - ushr v13.16b, v5.16b, #6 - shl v0.16b, v4.16b, #2 - shl v1.16b, v5.16b, #2 - pmul v12.16b, v12.16b, v10.16b - pmul v13.16b, v13.16b, v10.16b - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - ushr v0.16b, v4.16b, #5 - ushr v1.16b, v5.16b, #5 - pmul v0.16b, v0.16b, v10.16b - pmul v1.16b, v1.16b, v10.16b - shl v10.16b, v4.16b, #3 - shl v11.16b, v5.16b, #3 - eor v0.16b, v0.16b, v10.16b - eor v1.16b, v1.16b, v11.16b - eor v10.16b, v8.16b, v0.16b - eor v11.16b, v9.16b, v1.16b - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v8.16b, v12.16b, v0.16b - eor v9.16b, v13.16b, v1.16b - eor v12.16b, v12.16b, v10.16b - eor v13.16b, v13.16b, v11.16b - eor v10.16b, v10.16b, v4.16b - eor v11.16b, v11.16b, v5.16b - shl v4.4s, v10.4s, #8 - shl v5.4s, v11.4s, #8 - rev32 v8.8h, v8.8h - rev32 v9.8h, v9.8h - sri v4.4s, v10.4s, #24 - sri v5.4s, v11.4s, #24 - eor v4.16b, v4.16b, v12.16b - eor v5.16b, v5.16b, v13.16b - shl v10.4s, v0.4s, #24 - shl v11.4s, v1.4s, #24 - eor v4.16b, v4.16b, v8.16b - eor v5.16b, v5.16b, v9.16b - sri v10.4s, v0.4s, #8 - sri v11.4s, v1.4s, #8 - eor v4.16b, v4.16b, v10.16b - eor v5.16b, v5.16b, v11.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V1.16B, V12.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V5.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V1.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V0.16B, V13.16B + eor V11.16B, V1.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + eor V8.16B, V0.16B, V14.16B + eor V9.16B, V1.16B, V14.16B + orr V4.16B, V4.16B, V10.16B + orr V5.16B, V5.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V4.16B, V4.16B, V8.16B + orr V5.16B, V5.16B, V9.16B + ld1 {V0.16B}, [x23] + tbl V4.16B, {V4.16B}, V0.16B + tbl V5.16B, {V5.16B}, V0.16B + movi V10.16B, #27 + sshr V8.16B, V4.16B, #7 + sshr V9.16B, V5.16B, #7 + shl V12.16B, V4.16B, #1 + shl V13.16B, V5.16B, #1 + and V8.16B, V8.16B, V10.16B + and V9.16B, V9.16B, V10.16B + eor V8.16B, V8.16B, V12.16B + eor V9.16B, V9.16B, V13.16B + ushr V12.16B, V4.16B, #6 + ushr V13.16B, V5.16B, #6 + shl V0.16B, V4.16B, #2 + shl V1.16B, V5.16B, #2 + pmul V12.16B, V12.16B, V10.16B + pmul V13.16B, V13.16B, V10.16B + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + ushr V0.16B, V4.16B, #5 + ushr V1.16B, V5.16B, #5 + pmul V0.16B, V0.16B, V10.16B + pmul V1.16B, V1.16B, V10.16B + shl V10.16B, V4.16B, #3 + shl V11.16B, V5.16B, #3 + eor V0.16B, V0.16B, V10.16B + eor V1.16B, V1.16B, V11.16B + eor V10.16B, V8.16B, V0.16B + eor V11.16B, V9.16B, V1.16B + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V8.16B, V12.16B, V0.16B + eor V9.16B, V13.16B, V1.16B + eor V12.16B, V12.16B, V10.16B + eor V13.16B, V13.16B, V11.16B + eor V10.16B, V10.16B, V4.16B + eor V11.16B, V11.16B, V5.16B + shl V4.4S, V10.4S, #8 + shl V5.4S, V11.4S, #8 + rev32 V8.8H, V8.8H + rev32 V9.8H, V9.8H + sri V4.4S, V10.4S, #24 + sri V5.4S, V11.4S, #24 + eor V4.16B, V4.16B, V12.16B + eor V5.16B, V5.16B, V13.16B + shl V10.4S, V0.4S, #24 + shl V11.4S, V1.4S, #24 + eor V4.16B, V4.16B, V8.16B + eor V5.16B, V5.16B, V9.16B + sri V10.4S, V0.4S, #8 + sri V11.4S, V1.4S, #8 + eor V4.16B, V4.16B, V10.16B + eor V5.16B, V5.16B, V11.16B ; XOR in Key Schedule - ld1 {v0.2d}, [x25], #16 - eor v4.16b, v4.16b, v0.16b - eor v5.16b, v5.16b, v0.16b + ld1 {V0.2D}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V5.16B, V5.16B, V0.16B ; Round Done - movi v12.16b, #0x40 - movi v13.16b, #0x80 - movi v14.16b, #0xc0 - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v5.16b, v12.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v1.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v5.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v9.16b - eor v10.16b, v4.16b, v13.16b - eor v11.16b, v5.16b, v13.16b - tbl v10.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v10.16b - tbl v11.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v11.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - eor v8.16b, v4.16b, v14.16b - eor v9.16b, v5.16b, v14.16b - orr v0.16b, v0.16b, v10.16b - orr v1.16b, v1.16b, v11.16b - tbl v8.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v8.16b - tbl v9.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v9.16b - orr v0.16b, v0.16b, v8.16b - orr v1.16b, v1.16b, v9.16b - ld1 {v4.16b}, [x23] - tbl v0.16b, {v0.16b}, v4.16b - tbl v1.16b, {v1.16b}, v4.16b + movi V12.16B, #0x40 + movi V13.16B, #0x80 + movi V14.16B, #0xc0 + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V5.16B, V12.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V1.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V5.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V9.16B + eor V10.16B, V4.16B, V13.16B + eor V11.16B, V5.16B, V13.16B + tbl V10.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V10.16B + tbl V11.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V11.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + eor V8.16B, V4.16B, V14.16B + eor V9.16B, V5.16B, V14.16B + orr V0.16B, V0.16B, V10.16B + orr V1.16B, V1.16B, V11.16B + tbl V8.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V8.16B + tbl V9.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V9.16B + orr V0.16B, V0.16B, V8.16B + orr V1.16B, V1.16B, V9.16B + ld1 {V4.16B}, [x23] + tbl V0.16B, {V0.16B}, V4.16B + tbl V1.16B, {V1.16B}, V4.16B ; XOR in Key Schedule - ld1 {v4.2d}, [x25], #16 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v4.16b + ld1 {V4.2D}, [x25], #16 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V4.16B ; Round Done - rev32 v0.16b, v0.16b - rev32 v1.16b, v1.16b - eor v0.16b, v0.16b, v2.16b - eor v1.16b, v1.16b, v3.16b - st1 {v0.16b, v1.16b}, [x1], #32 + rev32 V0.16B, V0.16B + rev32 V1.16B, V1.16B + eor V0.16B, V0.16B, V2.16B + eor V1.16B, V1.16B, V3.16B + st1 {V0.16B, V1.16B}, [x1], #32 and x16, x17, x11, asr 63 extr x9, x11, x10, #63 eor x8, x16, x10, lsl 1 sub w2, w2, #32 L_AES_XTS_decrypt_NEON_start_1 - ld1 {v3.2d}, [x23] - mov v2.d[0], x8 - mov v2.d[1], x9 + ld1 {V3.2D}, [x23] + mov V2.D[0], x8 + mov V2.D[1], x9 cmp w2, #16 blt L_AES_XTS_decrypt_NEON_start_partial mov x25, x4 - ld1 {v0.16b}, [x0], #16 - ld1 {v4.2d}, [x25], #16 - eor v0.16b, v0.16b, v2.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v4.16b + ld1 {V0.16B}, [x0], #16 + ld1 {V4.2D}, [x25], #16 + eor V0.16B, V0.16B, V2.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V4.16B sub w24, w7, #2 L_AES_XTS_decrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - sshr v10.16b, v4.16b, #7 - ushr v11.16b, v4.16b, #6 - ushr v8.16b, v4.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v4.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v4.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v4.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v4.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v4.16b - shl v4.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v4.4s, v9.4s, #24 - eor v4.16b, v4.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v4.16b, v4.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v4.16b, v4.16b, v9.16b - ld1 {v0.2d}, [x25], #16 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + sshr V10.16B, V4.16B, #7 + ushr V11.16B, V4.16B, #6 + ushr V8.16B, V4.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V4.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V4.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V4.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V4.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V4.16B + shl V4.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V4.4S, V9.4S, #24 + eor V4.16B, V4.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V4.16B, V4.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V4.16B, V4.16B, V9.16B + ld1 {V0.2D}, [x25], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - sshr v10.16b, v0.16b, #7 - ushr v11.16b, v0.16b, #6 - ushr v8.16b, v0.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v0.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v0.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v0.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v0.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v0.16b - shl v0.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v0.4s, v9.4s, #24 - eor v0.16b, v0.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v0.16b, v0.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v0.16b, v0.16b, v9.16b - ld1 {v4.2d}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + sshr V10.16B, V0.16B, #7 + ushr V11.16B, V0.16B, #6 + ushr V8.16B, V0.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V0.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V0.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V0.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V0.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V0.16B + shl V0.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V0.4S, V9.4S, #24 + eor V0.16B, V0.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V0.16B, V0.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V0.16B, V0.16B, V9.16B + ld1 {V4.2D}, [x25], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b + eor V0.16B, V0.16B, V4.16B subs w24, w24, #2 bne L_AES_XTS_decrypt_NEON_loop_nr_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - sshr v10.16b, v4.16b, #7 - ushr v11.16b, v4.16b, #6 - ushr v8.16b, v4.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v4.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v4.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v4.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v4.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v4.16b - shl v4.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v4.4s, v9.4s, #24 - eor v4.16b, v4.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v4.16b, v4.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v4.16b, v4.16b, v9.16b - ld1 {v0.2d}, [x25], #16 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + sshr V10.16B, V4.16B, #7 + ushr V11.16B, V4.16B, #6 + ushr V8.16B, V4.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V4.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V4.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V4.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V4.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V4.16B + shl V4.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V4.4S, V9.4S, #24 + eor V4.16B, V4.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V4.16B, V4.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V4.16B, V4.16B, V9.16B + ld1 {V0.2D}, [x25], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x25], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v2.16b - st1 {v0.16b}, [x1], #16 + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V2.16B + st1 {V0.16B}, [x1], #16 sub w2, w2, #16 cbz w19, L_AES_XTS_decrypt_NEON_data_done and x16, x17, x9, asr 63 @@ -50366,157 +50366,157 @@ L_AES_XTS_decrypt_NEON_loop_nr_1 L_AES_XTS_decrypt_NEON_start_partial mov w2, w19 cbz w2, L_AES_XTS_decrypt_NEON_data_done - mov v2.d[0], x8 - mov v2.d[1], x9 + mov V2.D[0], x8 + mov V2.D[1], x9 and x16, x17, x9, asr 63 extr x11, x9, x8, #63 eor x10, x16, x8, lsl 1 - mov v1.d[0], x10 - mov v1.d[1], x11 + mov V1.D[0], x10 + mov V1.D[1], x11 mov x25, x4 - ld1 {v0.16b}, [x0], #16 - ld1 {v4.2d}, [x25], #16 - eor v0.16b, v0.16b, v1.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v4.16b + ld1 {V0.16B}, [x0], #16 + ld1 {V4.2D}, [x25], #16 + eor V0.16B, V0.16B, V1.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V4.16B sub w24, w7, #2 L_AES_XTS_decrypt_NEON_loop_nr_partial_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - sshr v10.16b, v4.16b, #7 - ushr v11.16b, v4.16b, #6 - ushr v8.16b, v4.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v4.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v4.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v4.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v4.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v4.16b - shl v4.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v4.4s, v9.4s, #24 - eor v4.16b, v4.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v4.16b, v4.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v4.16b, v4.16b, v9.16b - ld1 {v0.2d}, [x25], #16 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + sshr V10.16B, V4.16B, #7 + ushr V11.16B, V4.16B, #6 + ushr V8.16B, V4.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V4.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V4.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V4.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V4.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V4.16B + shl V4.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V4.4S, V9.4S, #24 + eor V4.16B, V4.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V4.16B, V4.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V4.16B, V4.16B, V9.16B + ld1 {V0.2D}, [x25], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - sshr v10.16b, v0.16b, #7 - ushr v11.16b, v0.16b, #6 - ushr v8.16b, v0.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v0.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v0.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v0.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v0.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v0.16b - shl v0.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v0.4s, v9.4s, #24 - eor v0.16b, v0.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v0.16b, v0.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v0.16b, v0.16b, v9.16b - ld1 {v4.2d}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + sshr V10.16B, V0.16B, #7 + ushr V11.16B, V0.16B, #6 + ushr V8.16B, V0.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V0.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V0.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V0.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V0.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V0.16B + shl V0.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V0.4S, V9.4S, #24 + eor V0.16B, V0.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V0.16B, V0.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V0.16B, V0.16B, V9.16B + ld1 {V4.2D}, [x25], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b + eor V0.16B, V0.16B, V4.16B subs w24, w24, #2 bne L_AES_XTS_decrypt_NEON_loop_nr_partial_1 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - sshr v10.16b, v4.16b, #7 - ushr v11.16b, v4.16b, #6 - ushr v8.16b, v4.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v4.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v4.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v4.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v4.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v4.16b - shl v4.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v4.4s, v9.4s, #24 - eor v4.16b, v4.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v4.16b, v4.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v4.16b, v4.16b, v9.16b - ld1 {v0.2d}, [x25], #16 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + sshr V10.16B, V4.16B, #7 + ushr V11.16B, V4.16B, #6 + ushr V8.16B, V4.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V4.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V4.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V4.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V4.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V4.16B + shl V4.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V4.4S, V9.4S, #24 + eor V4.16B, V4.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V4.16B, V4.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V4.16B, V4.16B, V9.16B + ld1 {V0.2D}, [x25], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x25], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v1.16b - st1 {v0.2d}, [x6] + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V1.16B + st1 {V0.2D}, [x6] add x1, x1, #16 mov w16, w2 L_AES_XTS_decrypt_NEON_start_byte @@ -50530,158 +50530,158 @@ L_AES_XTS_decrypt_NEON_start_byte sub x6, x6, x2 sub x1, x1, #16 mov x25, x4 - ld1 {v0.2d}, [x6] - ld1 {v4.2d}, [x25], #16 - eor v0.16b, v0.16b, v2.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v4.16b + ld1 {V0.2D}, [x6] + ld1 {V4.2D}, [x25], #16 + eor V0.16B, V0.16B, V2.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V4.16B sub w24, w7, #2 L_AES_XTS_decrypt_NEON_loop_nr_partial_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - sshr v10.16b, v4.16b, #7 - ushr v11.16b, v4.16b, #6 - ushr v8.16b, v4.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v4.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v4.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v4.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v4.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v4.16b - shl v4.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v4.4s, v9.4s, #24 - eor v4.16b, v4.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v4.16b, v4.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v4.16b, v4.16b, v9.16b - ld1 {v0.2d}, [x25], #16 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + sshr V10.16B, V4.16B, #7 + ushr V11.16B, V4.16B, #6 + ushr V8.16B, V4.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V4.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V4.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V4.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V4.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V4.16B + shl V4.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V4.4S, V9.4S, #24 + eor V4.16B, V4.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V4.16B, V4.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V4.16B, V4.16B, V9.16B + ld1 {V0.2D}, [x25], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - sshr v10.16b, v0.16b, #7 - ushr v11.16b, v0.16b, #6 - ushr v8.16b, v0.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v0.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v0.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v0.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v0.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v0.16b - shl v0.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v0.4s, v9.4s, #24 - eor v0.16b, v0.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v0.16b, v0.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v0.16b, v0.16b, v9.16b - ld1 {v4.2d}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + sshr V10.16B, V0.16B, #7 + ushr V11.16B, V0.16B, #6 + ushr V8.16B, V0.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V0.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V0.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V0.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V0.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V0.16B + shl V0.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V0.4S, V9.4S, #24 + eor V0.16B, V0.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V0.16B, V0.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V0.16B, V0.16B, V9.16B + ld1 {V4.2D}, [x25], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b + eor V0.16B, V0.16B, V4.16B subs w24, w24, #2 bne L_AES_XTS_decrypt_NEON_loop_nr_partial_2 - eor v8.16b, v0.16b, v12.16b - eor v9.16b, v0.16b, v13.16b - eor v10.16b, v0.16b, v14.16b - tbl v4.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v0.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v4.16b, v4.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v4.16b, v4.16b, v9.16b - tbl v4.16b, {v4.16b}, v3.16b - sshr v10.16b, v4.16b, #7 - ushr v11.16b, v4.16b, #6 - ushr v8.16b, v4.16b, #5 - and v10.16b, v10.16b, v15.16b - pmul v11.16b, v11.16b, v15.16b - pmul v8.16b, v8.16b, v15.16b - shl v9.16b, v4.16b, #1 - eor v10.16b, v10.16b, v9.16b - shl v9.16b, v4.16b, #3 - eor v8.16b, v8.16b, v9.16b - shl v9.16b, v4.16b, #2 - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v10.16b, v8.16b - eor v8.16b, v8.16b, v4.16b - eor v10.16b, v11.16b, v8.16b - eor v11.16b, v11.16b, v9.16b - eor v9.16b, v9.16b, v4.16b - shl v4.4s, v9.4s, #8 - rev32 v10.8h, v10.8h - sri v4.4s, v9.4s, #24 - eor v4.16b, v4.16b, v11.16b - shl v9.4s, v8.4s, #24 - eor v4.16b, v4.16b, v10.16b - sri v9.4s, v8.4s, #8 - eor v4.16b, v4.16b, v9.16b - ld1 {v0.2d}, [x25], #16 + eor V8.16B, V0.16B, V12.16B + eor V9.16B, V0.16B, V13.16B + eor V10.16B, V0.16B, V14.16B + tbl V4.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V0.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V4.16B, V4.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V4.16B, V4.16B, V9.16B + tbl V4.16B, {V4.16B}, V3.16B + sshr V10.16B, V4.16B, #7 + ushr V11.16B, V4.16B, #6 + ushr V8.16B, V4.16B, #5 + and V10.16B, V10.16B, V15.16B + pmul V11.16B, V11.16B, V15.16B + pmul V8.16B, V8.16B, V15.16B + shl V9.16B, V4.16B, #1 + eor V10.16B, V10.16B, V9.16B + shl V9.16B, V4.16B, #3 + eor V8.16B, V8.16B, V9.16B + shl V9.16B, V4.16B, #2 + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V10.16B, V8.16B + eor V8.16B, V8.16B, V4.16B + eor V10.16B, V11.16B, V8.16B + eor V11.16B, V11.16B, V9.16B + eor V9.16B, V9.16B, V4.16B + shl V4.4S, V9.4S, #8 + rev32 V10.8H, V10.8H + sri V4.4S, V9.4S, #24 + eor V4.16B, V4.16B, V11.16B + shl V9.4S, V8.4S, #24 + eor V4.16B, V4.16B, V10.16B + sri V9.4S, V8.4S, #8 + eor V4.16B, V4.16B, V9.16B + ld1 {V0.2D}, [x25], #16 ; XOR in Key Schedule - eor v4.16b, v4.16b, v0.16b - eor v8.16b, v4.16b, v12.16b - eor v9.16b, v4.16b, v13.16b - eor v10.16b, v4.16b, v14.16b - tbl v0.16b, {v16.16b, v17.16b, v18.16b, v19.16b}, v4.16b - tbl v8.16b, {v20.16b, v21.16b, v22.16b, v23.16b}, v8.16b - tbl v9.16b, {v24.16b, v25.16b, v26.16b, v27.16b}, v9.16b - tbl v10.16b, {v28.16b, v29.16b, v30.16b, v31.16b}, v10.16b - orr v0.16b, v0.16b, v8.16b - orr v9.16b, v9.16b, v10.16b - orr v0.16b, v0.16b, v9.16b - tbl v0.16b, {v0.16b}, v3.16b - ld1 {v4.2d}, [x25], #16 + eor V4.16B, V4.16B, V0.16B + eor V8.16B, V4.16B, V12.16B + eor V9.16B, V4.16B, V13.16B + eor V10.16B, V4.16B, V14.16B + tbl V0.16B, {V16.16B, V17.16B, V18.16B, V19.16B}, V4.16B + tbl V8.16B, {V20.16B, V21.16B, V22.16B, V23.16B}, V8.16B + tbl V9.16B, {V24.16B, V25.16B, V26.16B, V27.16B}, V9.16B + tbl V10.16B, {V28.16B, V29.16B, V30.16B, V31.16B}, V10.16B + orr V0.16B, V0.16B, V8.16B + orr V9.16B, V9.16B, V10.16B + orr V0.16B, V0.16B, V9.16B + tbl V0.16B, {V0.16B}, V3.16B + ld1 {V4.2D}, [x25], #16 ; XOR in Key Schedule - eor v0.16b, v0.16b, v4.16b - rev32 v0.16b, v0.16b - eor v0.16b, v0.16b, v2.16b - st1 {v0.16b}, [x1] + eor V0.16B, V0.16B, V4.16B + rev32 V0.16B, V0.16B + eor V0.16B, V0.16B, V2.16B + st1 {V0.16B}, [x1] L_AES_XTS_decrypt_NEON_data_done ldp x17, x19, [x29, #16] ldp x20, x21, [x29, #32] ldp x22, x23, [x29, #48] ldp x24, x25, [x29, #64] - ldp d8, d9, [x29, #80] - ldp d10, d11, [x29, #96] - ldp d12, d13, [x29, #112] - ldp d14, d15, [x29, #128] + ldp D8, D9, [x29, #80] + ldp D10, D11, [x29, #96] + ldp D12, D13, [x29, #112] + ldp D14, D15, [x29, #128] ldp x29, x30, [sp], #0x90 ret ENDP @@ -50690,7 +50690,7 @@ L_AES_XTS_decrypt_NEON_data_done ENDIF IF :LNOT::DEF:WOLFSSL_ARMASM_NEON_NO_TABLE_LOOKUP IF :DEF:HAVE_AES_DECRYPT - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_td DCD 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e @@ -50759,7 +50759,7 @@ L_AES_ARM64_td DCD 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857 ENDIF IF :DEF:HAVE_AES_DECRYPT :LOR: :DEF:HAVE_AES_CBC :LOR: :DEF:HAVE_AESCCM :LOR: :DEF:HAVE_AESGCM :LOR: :DEF:WOLFSSL_AES_DIRECT :LOR: :DEF:WOLFSSL_AES_COUNTER - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_te DCD 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b @@ -50941,7 +50941,7 @@ L_AES_invert_key_mix_loop ret ENDP ENDIF - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_rcon DCD 0x01000000, 0x02000000, 0x04000000, 0x08000000 @@ -52154,7 +52154,7 @@ L_AES_CTR_encrypt_loop_nr ENDIF IF :DEF:HAVE_AES_DECRYPT IF :DEF:WOLFSSL_AES_DIRECT :LOR: :DEF:WOLFSSL_AES_COUNTER :LOR: :DEF:HAVE_AES_CBC :LOR: :DEF:HAVE_AES_ECB - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_AES_ARM64_td4 DCB 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38 @@ -53062,7 +53062,7 @@ L_AES_CBC_decrypt_end_dec ENDIF ENDIF IF :DEF:HAVE_AESGCM - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_GCM_gmult_len_r DCD 0x00000000, 0x1c200000, 0x38400000, 0x24600000 diff --git a/wolfcrypt/src/port/arm/armv8-chacha-asm.asm b/wolfcrypt/src/port/arm/armv8-chacha-asm.asm index 6a8a7e6565..842f25f3ff 100644 --- a/wolfcrypt/src/port/arm/armv8-chacha-asm.asm +++ b/wolfcrypt/src/port/arm/armv8-chacha-asm.asm @@ -25,11 +25,11 @@ ; ruby ./chacha/chacha.rb arm64 \ ; ../wolfssl/wolfcrypt/src/port/arm/armv8-chacha-asm.asm IF :DEF:HAVE_CHACHA - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_chacha20_arm64_ctr DCD 0x00000000, 0x00000001, 0x00000002, 0x00000003 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_chacha20_arm64_rol8 DCD 0x02010003, 0x06050407, 0x0a09080b, 0x0e0d0c0f @@ -45,66 +45,66 @@ wc_chacha_crypt_bytes PROC stp x22, x23, [x29, #56] stp x24, x25, [x29, #72] str x26, [x29, #88] - stp d8, d9, [x29, #96] - stp d10, d11, [x29, #112] - stp d12, d13, [x29, #128] - stp d14, d15, [x29, #144] + stp D8, D9, [x29, #96] + stp D10, D11, [x29, #112] + stp D12, D13, [x29, #128] + stp D14, D15, [x29, #144] adrp x5, L_chacha20_arm64_rol8 add x5, x5, L_chacha20_arm64_rol8 adrp x6, L_chacha20_arm64_ctr add x6, x6, L_chacha20_arm64_ctr - eor v29.16b, v29.16b, v29.16b + eor V29.16B, V29.16B, V29.16B mov x26, #5 - eor v31.16b, v31.16b, v31.16b + eor V31.16B, V31.16B, V31.16B mov w7, #1 - ld1 {v30.16b}, [x5] - ld1 {v28.4s}, [x6] + ld1 {V30.16B}, [x5] + ld1 {V28.4S}, [x6] add x4, x0, #0x44 - mov v29.s[0], w26 - mov v31.s[0], w7 + mov V29.S[0], w26 + mov V31.S[0], w7 ; Load state to encrypt - ld1 {v16.4s, v17.4s, v18.4s, v19.4s}, [x0] + ld1 {V16.4S, V17.4S, V18.4S, V19.4S}, [x0] cmp x3, #0x140 blt L_chacha_crypt_bytes_arm64_lt_320 mov w25, #4 L_chacha_crypt_bytes_arm64_loop_320 ; Move state into regular register - mov x8, v16.d[0] - mov x10, v16.d[1] - mov x12, v17.d[0] - mov x14, v17.d[1] - mov x16, v18.d[0] - mov x19, v18.d[1] - mov x21, v19.d[0] - mov x23, v19.d[1] + mov x8, V16.D[0] + mov x10, V16.D[1] + mov x12, V17.D[0] + mov x14, V17.D[1] + mov x16, V18.D[0] + mov x19, V18.D[1] + mov x21, V19.D[0] + mov x23, V19.D[1] sub x3, x3, #0x140 ; Move state into vector registers - dup v0.4s, v16.s[0] - dup v1.4s, v16.s[1] + dup V0.4S, V16.S[0] + dup V1.4S, V16.S[1] lsr x9, x8, #32 - dup v2.4s, v16.s[2] - dup v3.4s, v16.s[3] + dup V2.4S, V16.S[2] + dup V3.4S, V16.S[3] lsr x11, x10, #32 - dup v4.4s, v17.s[0] - dup v5.4s, v17.s[1] + dup V4.4S, V17.S[0] + dup V5.4S, V17.S[1] lsr x13, x12, #32 - dup v6.4s, v17.s[2] - dup v7.4s, v17.s[3] + dup V6.4S, V17.S[2] + dup V7.4S, V17.S[3] lsr x15, x14, #32 - dup v8.4s, v18.s[0] - dup v9.4s, v18.s[1] + dup V8.4S, V18.S[0] + dup V9.4S, V18.S[1] lsr x17, x16, #32 - dup v10.4s, v18.s[2] - dup v11.4s, v18.s[3] + dup V10.4S, V18.S[2] + dup V11.4S, V18.S[3] lsr x20, x19, #32 - dup v12.4s, v19.s[0] - dup v13.4s, v19.s[1] + dup V12.4S, V19.S[0] + dup V13.4S, V19.S[1] lsr x22, x21, #32 - dup v14.4s, v19.s[2] - dup v15.4s, v19.s[3] + dup V14.4S, V19.S[2] + dup V15.4S, V19.S[3] lsr x24, x23, #32 ; Add to counter word - add v12.4s, v12.4s, v28.4s + add V12.4S, V12.4S, V28.4S add w21, w21, w25 ; Set number of odd+even rounds to perform mov x26, #10 @@ -112,684 +112,684 @@ L_chacha_crypt_bytes_arm64_round_start_320 subs x26, x26, #1 ; Round odd ; a += b; d ^= a; d <<<= 16; - add v0.4s, v0.4s, v4.4s + add V0.4S, V0.4S, V4.4S add w8, w8, w12 - add v1.4s, v1.4s, v5.4s + add V1.4S, V1.4S, V5.4S add w9, w9, w13 - add v2.4s, v2.4s, v6.4s + add V2.4S, V2.4S, V6.4S add w10, w10, w14 - add v3.4s, v3.4s, v7.4s + add V3.4S, V3.4S, V7.4S add w11, w11, w15 - eor v12.16b, v12.16b, v0.16b + eor V12.16B, V12.16B, V0.16B eor w21, w21, w8 - eor v13.16b, v13.16b, v1.16b + eor V13.16B, V13.16B, V1.16B eor w22, w22, w9 - eor v14.16b, v14.16b, v2.16b + eor V14.16B, V14.16B, V2.16B eor w23, w23, w10 - eor v15.16b, v15.16b, v3.16b + eor V15.16B, V15.16B, V3.16B eor w24, w24, w11 - rev32 v12.8h, v12.8h + rev32 V12.8H, V12.8H ror w21, w21, #16 - rev32 v13.8h, v13.8h + rev32 V13.8H, V13.8H ror w22, w22, #16 - rev32 v14.8h, v14.8h + rev32 V14.8H, V14.8H ror w23, w23, #16 - rev32 v15.8h, v15.8h + rev32 V15.8H, V15.8H ror w24, w24, #16 ; c += d; b ^= c; b <<<= 12; - add v8.4s, v8.4s, v12.4s + add V8.4S, V8.4S, V12.4S add w16, w16, w21 - add v9.4s, v9.4s, v13.4s + add V9.4S, V9.4S, V13.4S add w17, w17, w22 - add v10.4s, v10.4s, v14.4s + add V10.4S, V10.4S, V14.4S add w19, w19, w23 - add v11.4s, v11.4s, v15.4s + add V11.4S, V11.4S, V15.4S add w20, w20, w24 - eor v20.16b, v4.16b, v8.16b + eor V20.16B, V4.16B, V8.16B eor w12, w12, w16 - eor v21.16b, v5.16b, v9.16b + eor V21.16B, V5.16B, V9.16B eor w13, w13, w17 - eor v22.16b, v6.16b, v10.16b + eor V22.16B, V6.16B, V10.16B eor w14, w14, w19 - eor v23.16b, v7.16b, v11.16b + eor V23.16B, V7.16B, V11.16B eor w15, w15, w20 - shl v4.4s, v20.4s, #12 + shl V4.4S, V20.4S, #12 ror w12, w12, #20 - shl v5.4s, v21.4s, #12 + shl V5.4S, V21.4S, #12 ror w13, w13, #20 - shl v6.4s, v22.4s, #12 + shl V6.4S, V22.4S, #12 ror w14, w14, #20 - shl v7.4s, v23.4s, #12 + shl V7.4S, V23.4S, #12 ror w15, w15, #20 - sri v4.4s, v20.4s, #20 - sri v5.4s, v21.4s, #20 - sri v6.4s, v22.4s, #20 - sri v7.4s, v23.4s, #20 + sri V4.4S, V20.4S, #20 + sri V5.4S, V21.4S, #20 + sri V6.4S, V22.4S, #20 + sri V7.4S, V23.4S, #20 ; a += b; d ^= a; d <<<= 8; - add v0.4s, v0.4s, v4.4s + add V0.4S, V0.4S, V4.4S add w8, w8, w12 - add v1.4s, v1.4s, v5.4s + add V1.4S, V1.4S, V5.4S add w9, w9, w13 - add v2.4s, v2.4s, v6.4s + add V2.4S, V2.4S, V6.4S add w10, w10, w14 - add v3.4s, v3.4s, v7.4s + add V3.4S, V3.4S, V7.4S add w11, w11, w15 - eor v12.16b, v12.16b, v0.16b + eor V12.16B, V12.16B, V0.16B eor w21, w21, w8 - eor v13.16b, v13.16b, v1.16b + eor V13.16B, V13.16B, V1.16B eor w22, w22, w9 - eor v14.16b, v14.16b, v2.16b + eor V14.16B, V14.16B, V2.16B eor w23, w23, w10 - eor v15.16b, v15.16b, v3.16b + eor V15.16B, V15.16B, V3.16B eor w24, w24, w11 - tbl v12.16b, {v12.16b}, v30.16b + tbl V12.16B, {V12.16B}, V30.16B ror w21, w21, #24 - tbl v13.16b, {v13.16b}, v30.16b + tbl V13.16B, {V13.16B}, V30.16B ror w22, w22, #24 - tbl v14.16b, {v14.16b}, v30.16b + tbl V14.16B, {V14.16B}, V30.16B ror w23, w23, #24 - tbl v15.16b, {v15.16b}, v30.16b + tbl V15.16B, {V15.16B}, V30.16B ror w24, w24, #24 ; c += d; b ^= c; b <<<= 7; - add v8.4s, v8.4s, v12.4s + add V8.4S, V8.4S, V12.4S add w16, w16, w21 - add v9.4s, v9.4s, v13.4s + add V9.4S, V9.4S, V13.4S add w17, w17, w22 - add v10.4s, v10.4s, v14.4s + add V10.4S, V10.4S, V14.4S add w19, w19, w23 - add v11.4s, v11.4s, v15.4s + add V11.4S, V11.4S, V15.4S add w20, w20, w24 - eor v20.16b, v4.16b, v8.16b + eor V20.16B, V4.16B, V8.16B eor w12, w12, w16 - eor v21.16b, v5.16b, v9.16b + eor V21.16B, V5.16B, V9.16B eor w13, w13, w17 - eor v22.16b, v6.16b, v10.16b + eor V22.16B, V6.16B, V10.16B eor w14, w14, w19 - eor v23.16b, v7.16b, v11.16b + eor V23.16B, V7.16B, V11.16B eor w15, w15, w20 - shl v4.4s, v20.4s, #7 + shl V4.4S, V20.4S, #7 ror w12, w12, #25 - shl v5.4s, v21.4s, #7 + shl V5.4S, V21.4S, #7 ror w13, w13, #25 - shl v6.4s, v22.4s, #7 + shl V6.4S, V22.4S, #7 ror w14, w14, #25 - shl v7.4s, v23.4s, #7 + shl V7.4S, V23.4S, #7 ror w15, w15, #25 - sri v4.4s, v20.4s, #25 - sri v5.4s, v21.4s, #25 - sri v6.4s, v22.4s, #25 - sri v7.4s, v23.4s, #25 + sri V4.4S, V20.4S, #25 + sri V5.4S, V21.4S, #25 + sri V6.4S, V22.4S, #25 + sri V7.4S, V23.4S, #25 ; Round even ; a += b; d ^= a; d <<<= 16; - add v0.4s, v0.4s, v5.4s + add V0.4S, V0.4S, V5.4S add w8, w8, w13 - add v1.4s, v1.4s, v6.4s + add V1.4S, V1.4S, V6.4S add w9, w9, w14 - add v2.4s, v2.4s, v7.4s + add V2.4S, V2.4S, V7.4S add w10, w10, w15 - add v3.4s, v3.4s, v4.4s + add V3.4S, V3.4S, V4.4S add w11, w11, w12 - eor v15.16b, v15.16b, v0.16b + eor V15.16B, V15.16B, V0.16B eor w24, w24, w8 - eor v12.16b, v12.16b, v1.16b + eor V12.16B, V12.16B, V1.16B eor w21, w21, w9 - eor v13.16b, v13.16b, v2.16b + eor V13.16B, V13.16B, V2.16B eor w22, w22, w10 - eor v14.16b, v14.16b, v3.16b + eor V14.16B, V14.16B, V3.16B eor w23, w23, w11 - rev32 v15.8h, v15.8h + rev32 V15.8H, V15.8H ror w24, w24, #16 - rev32 v12.8h, v12.8h + rev32 V12.8H, V12.8H ror w21, w21, #16 - rev32 v13.8h, v13.8h + rev32 V13.8H, V13.8H ror w22, w22, #16 - rev32 v14.8h, v14.8h + rev32 V14.8H, V14.8H ror w23, w23, #16 ; c += d; b ^= c; b <<<= 12; - add v10.4s, v10.4s, v15.4s + add V10.4S, V10.4S, V15.4S add w19, w19, w24 - add v11.4s, v11.4s, v12.4s + add V11.4S, V11.4S, V12.4S add w20, w20, w21 - add v8.4s, v8.4s, v13.4s + add V8.4S, V8.4S, V13.4S add w16, w16, w22 - add v9.4s, v9.4s, v14.4s + add V9.4S, V9.4S, V14.4S add w17, w17, w23 - eor v20.16b, v5.16b, v10.16b + eor V20.16B, V5.16B, V10.16B eor w13, w13, w19 - eor v21.16b, v6.16b, v11.16b + eor V21.16B, V6.16B, V11.16B eor w14, w14, w20 - eor v22.16b, v7.16b, v8.16b + eor V22.16B, V7.16B, V8.16B eor w15, w15, w16 - eor v23.16b, v4.16b, v9.16b + eor V23.16B, V4.16B, V9.16B eor w12, w12, w17 - shl v5.4s, v20.4s, #12 + shl V5.4S, V20.4S, #12 ror w13, w13, #20 - shl v6.4s, v21.4s, #12 + shl V6.4S, V21.4S, #12 ror w14, w14, #20 - shl v7.4s, v22.4s, #12 + shl V7.4S, V22.4S, #12 ror w15, w15, #20 - shl v4.4s, v23.4s, #12 + shl V4.4S, V23.4S, #12 ror w12, w12, #20 - sri v5.4s, v20.4s, #20 - sri v6.4s, v21.4s, #20 - sri v7.4s, v22.4s, #20 - sri v4.4s, v23.4s, #20 + sri V5.4S, V20.4S, #20 + sri V6.4S, V21.4S, #20 + sri V7.4S, V22.4S, #20 + sri V4.4S, V23.4S, #20 ; a += b; d ^= a; d <<<= 8; - add v0.4s, v0.4s, v5.4s + add V0.4S, V0.4S, V5.4S add w8, w8, w13 - add v1.4s, v1.4s, v6.4s + add V1.4S, V1.4S, V6.4S add w9, w9, w14 - add v2.4s, v2.4s, v7.4s + add V2.4S, V2.4S, V7.4S add w10, w10, w15 - add v3.4s, v3.4s, v4.4s + add V3.4S, V3.4S, V4.4S add w11, w11, w12 - eor v15.16b, v15.16b, v0.16b + eor V15.16B, V15.16B, V0.16B eor w24, w24, w8 - eor v12.16b, v12.16b, v1.16b + eor V12.16B, V12.16B, V1.16B eor w21, w21, w9 - eor v13.16b, v13.16b, v2.16b + eor V13.16B, V13.16B, V2.16B eor w22, w22, w10 - eor v14.16b, v14.16b, v3.16b + eor V14.16B, V14.16B, V3.16B eor w23, w23, w11 - tbl v15.16b, {v15.16b}, v30.16b + tbl V15.16B, {V15.16B}, V30.16B ror w24, w24, #24 - tbl v12.16b, {v12.16b}, v30.16b + tbl V12.16B, {V12.16B}, V30.16B ror w21, w21, #24 - tbl v13.16b, {v13.16b}, v30.16b + tbl V13.16B, {V13.16B}, V30.16B ror w22, w22, #24 - tbl v14.16b, {v14.16b}, v30.16b + tbl V14.16B, {V14.16B}, V30.16B ror w23, w23, #24 ; c += d; b ^= c; b <<<= 7; - add v10.4s, v10.4s, v15.4s + add V10.4S, V10.4S, V15.4S add w19, w19, w24 - add v11.4s, v11.4s, v12.4s + add V11.4S, V11.4S, V12.4S add w20, w20, w21 - add v8.4s, v8.4s, v13.4s + add V8.4S, V8.4S, V13.4S add w16, w16, w22 - add v9.4s, v9.4s, v14.4s + add V9.4S, V9.4S, V14.4S add w17, w17, w23 - eor v20.16b, v5.16b, v10.16b + eor V20.16B, V5.16B, V10.16B eor w13, w13, w19 - eor v21.16b, v6.16b, v11.16b + eor V21.16B, V6.16B, V11.16B eor w14, w14, w20 - eor v22.16b, v7.16b, v8.16b + eor V22.16B, V7.16B, V8.16B eor w15, w15, w16 - eor v23.16b, v4.16b, v9.16b + eor V23.16B, V4.16B, V9.16B eor w12, w12, w17 - shl v5.4s, v20.4s, #7 + shl V5.4S, V20.4S, #7 ror w13, w13, #25 - shl v6.4s, v21.4s, #7 + shl V6.4S, V21.4S, #7 ror w14, w14, #25 - shl v7.4s, v22.4s, #7 + shl V7.4S, V22.4S, #7 ror w15, w15, #25 - shl v4.4s, v23.4s, #7 + shl V4.4S, V23.4S, #7 ror w12, w12, #25 - sri v5.4s, v20.4s, #25 - sri v6.4s, v21.4s, #25 - sri v7.4s, v22.4s, #25 - sri v4.4s, v23.4s, #25 + sri V5.4S, V20.4S, #25 + sri V6.4S, V21.4S, #25 + sri V7.4S, V22.4S, #25 + sri V4.4S, V23.4S, #25 bne L_chacha_crypt_bytes_arm64_round_start_320 ; Add counter now rather than after transposed - add v12.4s, v12.4s, v28.4s + add V12.4S, V12.4S, V28.4S add w21, w21, w25 ; Load message - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 ; Transpose vectors - trn1 v20.4s, v0.4s, v1.4s - trn1 v22.4s, v2.4s, v3.4s + trn1 V20.4S, V0.4S, V1.4S + trn1 V22.4S, V2.4S, V3.4S orr x8, x8, x9, lsl 32 - trn2 v21.4s, v0.4s, v1.4s - trn2 v23.4s, v2.4s, v3.4s - trn1 v0.2d, v20.2d, v22.2d - trn1 v1.2d, v21.2d, v23.2d + trn2 V21.4S, V0.4S, V1.4S + trn2 V23.4S, V2.4S, V3.4S + trn1 V0.2D, V20.2D, V22.2D + trn1 V1.2D, V21.2D, V23.2D orr x10, x10, x11, lsl 32 - trn2 v2.2d, v20.2d, v22.2d - trn2 v3.2d, v21.2d, v23.2d - trn1 v20.4s, v4.4s, v5.4s - trn1 v22.4s, v6.4s, v7.4s + trn2 V2.2D, V20.2D, V22.2D + trn2 V3.2D, V21.2D, V23.2D + trn1 V20.4S, V4.4S, V5.4S + trn1 V22.4S, V6.4S, V7.4S orr x12, x12, x13, lsl 32 - trn2 v21.4s, v4.4s, v5.4s - trn2 v23.4s, v6.4s, v7.4s - trn1 v4.2d, v20.2d, v22.2d - trn1 v5.2d, v21.2d, v23.2d + trn2 V21.4S, V4.4S, V5.4S + trn2 V23.4S, V6.4S, V7.4S + trn1 V4.2D, V20.2D, V22.2D + trn1 V5.2D, V21.2D, V23.2D orr x14, x14, x15, lsl 32 - trn2 v6.2d, v20.2d, v22.2d - trn2 v7.2d, v21.2d, v23.2d - trn1 v20.4s, v8.4s, v9.4s - trn1 v22.4s, v10.4s, v11.4s + trn2 V6.2D, V20.2D, V22.2D + trn2 V7.2D, V21.2D, V23.2D + trn1 V20.4S, V8.4S, V9.4S + trn1 V22.4S, V10.4S, V11.4S orr x16, x16, x17, lsl 32 - trn2 v21.4s, v8.4s, v9.4s - trn2 v23.4s, v10.4s, v11.4s - trn1 v8.2d, v20.2d, v22.2d - trn1 v9.2d, v21.2d, v23.2d + trn2 V21.4S, V8.4S, V9.4S + trn2 V23.4S, V10.4S, V11.4S + trn1 V8.2D, V20.2D, V22.2D + trn1 V9.2D, V21.2D, V23.2D orr x19, x19, x20, lsl 32 - trn2 v10.2d, v20.2d, v22.2d - trn2 v11.2d, v21.2d, v23.2d - trn1 v20.4s, v12.4s, v13.4s - trn1 v22.4s, v14.4s, v15.4s + trn2 V10.2D, V20.2D, V22.2D + trn2 V11.2D, V21.2D, V23.2D + trn1 V20.4S, V12.4S, V13.4S + trn1 V22.4S, V14.4S, V15.4S orr x21, x21, x22, lsl 32 - trn2 v21.4s, v12.4s, v13.4s - trn2 v23.4s, v14.4s, v15.4s - trn1 v12.2d, v20.2d, v22.2d - trn1 v13.2d, v21.2d, v23.2d + trn2 V21.4S, V12.4S, V13.4S + trn2 V23.4S, V14.4S, V15.4S + trn1 V12.2D, V20.2D, V22.2D + trn1 V13.2D, V21.2D, V23.2D orr x23, x23, x24, lsl 32 - trn2 v14.2d, v20.2d, v22.2d - trn2 v15.2d, v21.2d, v23.2d + trn2 V14.2D, V20.2D, V22.2D + trn2 V15.2D, V21.2D, V23.2D ; Add back state, XOR in message and store (load next block) - add v20.4s, v0.4s, v16.4s - add v21.4s, v4.4s, v17.4s - add v22.4s, v8.4s, v18.4s - add v23.4s, v12.4s, v19.4s - eor v20.16b, v20.16b, v24.16b - eor v21.16b, v21.16b, v25.16b - eor v22.16b, v22.16b, v26.16b - eor v23.16b, v23.16b, v27.16b - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 - add v20.4s, v1.4s, v16.4s - add v21.4s, v5.4s, v17.4s - add v22.4s, v9.4s, v18.4s - add v23.4s, v13.4s, v19.4s - eor v20.16b, v20.16b, v24.16b - eor v21.16b, v21.16b, v25.16b - eor v22.16b, v22.16b, v26.16b - eor v23.16b, v23.16b, v27.16b - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 - add v20.4s, v2.4s, v16.4s - add v21.4s, v6.4s, v17.4s - add v22.4s, v10.4s, v18.4s - add v23.4s, v14.4s, v19.4s - eor v20.16b, v20.16b, v24.16b - eor v21.16b, v21.16b, v25.16b - eor v22.16b, v22.16b, v26.16b - eor v23.16b, v23.16b, v27.16b - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 - add v20.4s, v3.4s, v16.4s - add v21.4s, v7.4s, v17.4s - add v22.4s, v11.4s, v18.4s - add v23.4s, v15.4s, v19.4s - eor v20.16b, v20.16b, v24.16b - eor v21.16b, v21.16b, v25.16b - eor v22.16b, v22.16b, v26.16b - eor v23.16b, v23.16b, v27.16b - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 + add V20.4S, V0.4S, V16.4S + add V21.4S, V4.4S, V17.4S + add V22.4S, V8.4S, V18.4S + add V23.4S, V12.4S, V19.4S + eor V20.16B, V20.16B, V24.16B + eor V21.16B, V21.16B, V25.16B + eor V22.16B, V22.16B, V26.16B + eor V23.16B, V23.16B, V27.16B + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 + add V20.4S, V1.4S, V16.4S + add V21.4S, V5.4S, V17.4S + add V22.4S, V9.4S, V18.4S + add V23.4S, V13.4S, V19.4S + eor V20.16B, V20.16B, V24.16B + eor V21.16B, V21.16B, V25.16B + eor V22.16B, V22.16B, V26.16B + eor V23.16B, V23.16B, V27.16B + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 + add V20.4S, V2.4S, V16.4S + add V21.4S, V6.4S, V17.4S + add V22.4S, V10.4S, V18.4S + add V23.4S, V14.4S, V19.4S + eor V20.16B, V20.16B, V24.16B + eor V21.16B, V21.16B, V25.16B + eor V22.16B, V22.16B, V26.16B + eor V23.16B, V23.16B, V27.16B + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 + add V20.4S, V3.4S, V16.4S + add V21.4S, V7.4S, V17.4S + add V22.4S, V11.4S, V18.4S + add V23.4S, V15.4S, V19.4S + eor V20.16B, V20.16B, V24.16B + eor V21.16B, V21.16B, V25.16B + eor V22.16B, V22.16B, V26.16B + eor V23.16B, V23.16B, V27.16B + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 ; Move regular registers into vector registers for adding and xor - mov v0.d[0], x8 - mov v0.d[1], x10 - mov v1.d[0], x12 - mov v1.d[1], x14 - mov v2.d[0], x16 - mov v2.d[1], x19 - mov v3.d[0], x21 - mov v3.d[1], x23 + mov V0.D[0], x8 + mov V0.D[1], x10 + mov V1.D[0], x12 + mov V1.D[1], x14 + mov V2.D[0], x16 + mov V2.D[1], x19 + mov V3.D[0], x21 + mov V3.D[1], x23 ; Add back state, XOR in message and store - add v0.4s, v0.4s, v16.4s - add v1.4s, v1.4s, v17.4s - add v2.4s, v2.4s, v18.4s - add v3.4s, v3.4s, v19.4s - eor v0.16b, v0.16b, v24.16b - eor v1.16b, v1.16b, v25.16b - eor v2.16b, v2.16b, v26.16b - eor v3.16b, v3.16b, v27.16b - st1 {v0.4s, v1.4s, v2.4s, v3.4s}, [x1], #0x40 + add V0.4S, V0.4S, V16.4S + add V1.4S, V1.4S, V17.4S + add V2.4S, V2.4S, V18.4S + add V3.4S, V3.4S, V19.4S + eor V0.16B, V0.16B, V24.16B + eor V1.16B, V1.16B, V25.16B + eor V2.16B, V2.16B, V26.16B + eor V3.16B, V3.16B, V27.16B + st1 {V0.4S, V1.4S, V2.4S, V3.4S}, [x1], #0x40 cmp x3, #0x140 - add v19.4s, v19.4s, v29.4s + add V19.4S, V19.4S, V29.4S bge L_chacha_crypt_bytes_arm64_loop_320 ; Done doing 320 bytes at a time L_chacha_crypt_bytes_arm64_lt_320 cmp x3, #0x100 blt L_chacha_crypt_bytes_arm64_lt_256 ; Move state into vector registers - dup v0.4s, v16.s[0] - dup v1.4s, v16.s[1] - dup v2.4s, v16.s[2] - dup v3.4s, v16.s[3] - dup v4.4s, v17.s[0] - dup v5.4s, v17.s[1] - dup v6.4s, v17.s[2] - dup v7.4s, v17.s[3] - dup v8.4s, v18.s[0] - dup v9.4s, v18.s[1] - dup v10.4s, v18.s[2] - dup v11.4s, v18.s[3] - dup v12.4s, v19.s[0] - dup v13.4s, v19.s[1] - dup v14.4s, v19.s[2] - dup v15.4s, v19.s[3] + dup V0.4S, V16.S[0] + dup V1.4S, V16.S[1] + dup V2.4S, V16.S[2] + dup V3.4S, V16.S[3] + dup V4.4S, V17.S[0] + dup V5.4S, V17.S[1] + dup V6.4S, V17.S[2] + dup V7.4S, V17.S[3] + dup V8.4S, V18.S[0] + dup V9.4S, V18.S[1] + dup V10.4S, V18.S[2] + dup V11.4S, V18.S[3] + dup V12.4S, V19.S[0] + dup V13.4S, V19.S[1] + dup V14.4S, V19.S[2] + dup V15.4S, V19.S[3] ; Add to counter word - add v12.4s, v12.4s, v28.4s + add V12.4S, V12.4S, V28.4S ; Set number of odd+even rounds to perform mov x26, #10 L_chacha_crypt_bytes_arm64_round_start_256 subs x26, x26, #1 ; Round odd ; a += b; d ^= a; d <<<= 16; - add v0.4s, v0.4s, v4.4s - add v1.4s, v1.4s, v5.4s - add v2.4s, v2.4s, v6.4s - add v3.4s, v3.4s, v7.4s - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - eor v14.16b, v14.16b, v2.16b - eor v15.16b, v15.16b, v3.16b - rev32 v12.8h, v12.8h - rev32 v13.8h, v13.8h - rev32 v14.8h, v14.8h - rev32 v15.8h, v15.8h + add V0.4S, V0.4S, V4.4S + add V1.4S, V1.4S, V5.4S + add V2.4S, V2.4S, V6.4S + add V3.4S, V3.4S, V7.4S + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + eor V14.16B, V14.16B, V2.16B + eor V15.16B, V15.16B, V3.16B + rev32 V12.8H, V12.8H + rev32 V13.8H, V13.8H + rev32 V14.8H, V14.8H + rev32 V15.8H, V15.8H ; c += d; b ^= c; b <<<= 12; - add v8.4s, v8.4s, v12.4s - add v9.4s, v9.4s, v13.4s - add v10.4s, v10.4s, v14.4s - add v11.4s, v11.4s, v15.4s - eor v20.16b, v4.16b, v8.16b - eor v21.16b, v5.16b, v9.16b - eor v22.16b, v6.16b, v10.16b - eor v23.16b, v7.16b, v11.16b - shl v4.4s, v20.4s, #12 - shl v5.4s, v21.4s, #12 - shl v6.4s, v22.4s, #12 - shl v7.4s, v23.4s, #12 - sri v4.4s, v20.4s, #20 - sri v5.4s, v21.4s, #20 - sri v6.4s, v22.4s, #20 - sri v7.4s, v23.4s, #20 + add V8.4S, V8.4S, V12.4S + add V9.4S, V9.4S, V13.4S + add V10.4S, V10.4S, V14.4S + add V11.4S, V11.4S, V15.4S + eor V20.16B, V4.16B, V8.16B + eor V21.16B, V5.16B, V9.16B + eor V22.16B, V6.16B, V10.16B + eor V23.16B, V7.16B, V11.16B + shl V4.4S, V20.4S, #12 + shl V5.4S, V21.4S, #12 + shl V6.4S, V22.4S, #12 + shl V7.4S, V23.4S, #12 + sri V4.4S, V20.4S, #20 + sri V5.4S, V21.4S, #20 + sri V6.4S, V22.4S, #20 + sri V7.4S, V23.4S, #20 ; a += b; d ^= a; d <<<= 8; - add v0.4s, v0.4s, v4.4s - add v1.4s, v1.4s, v5.4s - add v2.4s, v2.4s, v6.4s - add v3.4s, v3.4s, v7.4s - eor v12.16b, v12.16b, v0.16b - eor v13.16b, v13.16b, v1.16b - eor v14.16b, v14.16b, v2.16b - eor v15.16b, v15.16b, v3.16b - tbl v12.16b, {v12.16b}, v30.16b - tbl v13.16b, {v13.16b}, v30.16b - tbl v14.16b, {v14.16b}, v30.16b - tbl v15.16b, {v15.16b}, v30.16b + add V0.4S, V0.4S, V4.4S + add V1.4S, V1.4S, V5.4S + add V2.4S, V2.4S, V6.4S + add V3.4S, V3.4S, V7.4S + eor V12.16B, V12.16B, V0.16B + eor V13.16B, V13.16B, V1.16B + eor V14.16B, V14.16B, V2.16B + eor V15.16B, V15.16B, V3.16B + tbl V12.16B, {V12.16B}, V30.16B + tbl V13.16B, {V13.16B}, V30.16B + tbl V14.16B, {V14.16B}, V30.16B + tbl V15.16B, {V15.16B}, V30.16B ; c += d; b ^= c; b <<<= 7; - add v8.4s, v8.4s, v12.4s - add v9.4s, v9.4s, v13.4s - add v10.4s, v10.4s, v14.4s - add v11.4s, v11.4s, v15.4s - eor v20.16b, v4.16b, v8.16b - eor v21.16b, v5.16b, v9.16b - eor v22.16b, v6.16b, v10.16b - eor v23.16b, v7.16b, v11.16b - shl v4.4s, v20.4s, #7 - shl v5.4s, v21.4s, #7 - shl v6.4s, v22.4s, #7 - shl v7.4s, v23.4s, #7 - sri v4.4s, v20.4s, #25 - sri v5.4s, v21.4s, #25 - sri v6.4s, v22.4s, #25 - sri v7.4s, v23.4s, #25 + add V8.4S, V8.4S, V12.4S + add V9.4S, V9.4S, V13.4S + add V10.4S, V10.4S, V14.4S + add V11.4S, V11.4S, V15.4S + eor V20.16B, V4.16B, V8.16B + eor V21.16B, V5.16B, V9.16B + eor V22.16B, V6.16B, V10.16B + eor V23.16B, V7.16B, V11.16B + shl V4.4S, V20.4S, #7 + shl V5.4S, V21.4S, #7 + shl V6.4S, V22.4S, #7 + shl V7.4S, V23.4S, #7 + sri V4.4S, V20.4S, #25 + sri V5.4S, V21.4S, #25 + sri V6.4S, V22.4S, #25 + sri V7.4S, V23.4S, #25 ; Round even ; a += b; d ^= a; d <<<= 16; - add v0.4s, v0.4s, v5.4s - add v1.4s, v1.4s, v6.4s - add v2.4s, v2.4s, v7.4s - add v3.4s, v3.4s, v4.4s - eor v15.16b, v15.16b, v0.16b - eor v12.16b, v12.16b, v1.16b - eor v13.16b, v13.16b, v2.16b - eor v14.16b, v14.16b, v3.16b - rev32 v15.8h, v15.8h - rev32 v12.8h, v12.8h - rev32 v13.8h, v13.8h - rev32 v14.8h, v14.8h + add V0.4S, V0.4S, V5.4S + add V1.4S, V1.4S, V6.4S + add V2.4S, V2.4S, V7.4S + add V3.4S, V3.4S, V4.4S + eor V15.16B, V15.16B, V0.16B + eor V12.16B, V12.16B, V1.16B + eor V13.16B, V13.16B, V2.16B + eor V14.16B, V14.16B, V3.16B + rev32 V15.8H, V15.8H + rev32 V12.8H, V12.8H + rev32 V13.8H, V13.8H + rev32 V14.8H, V14.8H ; c += d; b ^= c; b <<<= 12; - add v10.4s, v10.4s, v15.4s - add v11.4s, v11.4s, v12.4s - add v8.4s, v8.4s, v13.4s - add v9.4s, v9.4s, v14.4s - eor v20.16b, v5.16b, v10.16b - eor v21.16b, v6.16b, v11.16b - eor v22.16b, v7.16b, v8.16b - eor v23.16b, v4.16b, v9.16b - shl v5.4s, v20.4s, #12 - shl v6.4s, v21.4s, #12 - shl v7.4s, v22.4s, #12 - shl v4.4s, v23.4s, #12 - sri v5.4s, v20.4s, #20 - sri v6.4s, v21.4s, #20 - sri v7.4s, v22.4s, #20 - sri v4.4s, v23.4s, #20 + add V10.4S, V10.4S, V15.4S + add V11.4S, V11.4S, V12.4S + add V8.4S, V8.4S, V13.4S + add V9.4S, V9.4S, V14.4S + eor V20.16B, V5.16B, V10.16B + eor V21.16B, V6.16B, V11.16B + eor V22.16B, V7.16B, V8.16B + eor V23.16B, V4.16B, V9.16B + shl V5.4S, V20.4S, #12 + shl V6.4S, V21.4S, #12 + shl V7.4S, V22.4S, #12 + shl V4.4S, V23.4S, #12 + sri V5.4S, V20.4S, #20 + sri V6.4S, V21.4S, #20 + sri V7.4S, V22.4S, #20 + sri V4.4S, V23.4S, #20 ; a += b; d ^= a; d <<<= 8; - add v0.4s, v0.4s, v5.4s - add v1.4s, v1.4s, v6.4s - add v2.4s, v2.4s, v7.4s - add v3.4s, v3.4s, v4.4s - eor v15.16b, v15.16b, v0.16b - eor v12.16b, v12.16b, v1.16b - eor v13.16b, v13.16b, v2.16b - eor v14.16b, v14.16b, v3.16b - tbl v15.16b, {v15.16b}, v30.16b - tbl v12.16b, {v12.16b}, v30.16b - tbl v13.16b, {v13.16b}, v30.16b - tbl v14.16b, {v14.16b}, v30.16b + add V0.4S, V0.4S, V5.4S + add V1.4S, V1.4S, V6.4S + add V2.4S, V2.4S, V7.4S + add V3.4S, V3.4S, V4.4S + eor V15.16B, V15.16B, V0.16B + eor V12.16B, V12.16B, V1.16B + eor V13.16B, V13.16B, V2.16B + eor V14.16B, V14.16B, V3.16B + tbl V15.16B, {V15.16B}, V30.16B + tbl V12.16B, {V12.16B}, V30.16B + tbl V13.16B, {V13.16B}, V30.16B + tbl V14.16B, {V14.16B}, V30.16B ; c += d; b ^= c; b <<<= 7; - add v10.4s, v10.4s, v15.4s - add v11.4s, v11.4s, v12.4s - add v8.4s, v8.4s, v13.4s - add v9.4s, v9.4s, v14.4s - eor v20.16b, v5.16b, v10.16b - eor v21.16b, v6.16b, v11.16b - eor v22.16b, v7.16b, v8.16b - eor v23.16b, v4.16b, v9.16b - shl v5.4s, v20.4s, #7 - shl v6.4s, v21.4s, #7 - shl v7.4s, v22.4s, #7 - shl v4.4s, v23.4s, #7 - sri v5.4s, v20.4s, #25 - sri v6.4s, v21.4s, #25 - sri v7.4s, v22.4s, #25 - sri v4.4s, v23.4s, #25 + add V10.4S, V10.4S, V15.4S + add V11.4S, V11.4S, V12.4S + add V8.4S, V8.4S, V13.4S + add V9.4S, V9.4S, V14.4S + eor V20.16B, V5.16B, V10.16B + eor V21.16B, V6.16B, V11.16B + eor V22.16B, V7.16B, V8.16B + eor V23.16B, V4.16B, V9.16B + shl V5.4S, V20.4S, #7 + shl V6.4S, V21.4S, #7 + shl V7.4S, V22.4S, #7 + shl V4.4S, V23.4S, #7 + sri V5.4S, V20.4S, #25 + sri V6.4S, V21.4S, #25 + sri V7.4S, V22.4S, #25 + sri V4.4S, V23.4S, #25 bne L_chacha_crypt_bytes_arm64_round_start_256 mov x26, #4 ; Add counter now rather than after transposed - add v12.4s, v12.4s, v28.4s + add V12.4S, V12.4S, V28.4S ; Load message - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 ; Transpose vectors - trn1 v20.4s, v0.4s, v1.4s - trn1 v22.4s, v2.4s, v3.4s - trn2 v21.4s, v0.4s, v1.4s - trn2 v23.4s, v2.4s, v3.4s - trn1 v0.2d, v20.2d, v22.2d - trn1 v1.2d, v21.2d, v23.2d - trn2 v2.2d, v20.2d, v22.2d - trn2 v3.2d, v21.2d, v23.2d - trn1 v20.4s, v4.4s, v5.4s - trn1 v22.4s, v6.4s, v7.4s - trn2 v21.4s, v4.4s, v5.4s - trn2 v23.4s, v6.4s, v7.4s - trn1 v4.2d, v20.2d, v22.2d - trn1 v5.2d, v21.2d, v23.2d - trn2 v6.2d, v20.2d, v22.2d - trn2 v7.2d, v21.2d, v23.2d - trn1 v20.4s, v8.4s, v9.4s - trn1 v22.4s, v10.4s, v11.4s - trn2 v21.4s, v8.4s, v9.4s - trn2 v23.4s, v10.4s, v11.4s - trn1 v8.2d, v20.2d, v22.2d - trn1 v9.2d, v21.2d, v23.2d - trn2 v10.2d, v20.2d, v22.2d - trn2 v11.2d, v21.2d, v23.2d - trn1 v20.4s, v12.4s, v13.4s - trn1 v22.4s, v14.4s, v15.4s - trn2 v21.4s, v12.4s, v13.4s - trn2 v23.4s, v14.4s, v15.4s - trn1 v12.2d, v20.2d, v22.2d - trn1 v13.2d, v21.2d, v23.2d - trn2 v14.2d, v20.2d, v22.2d - trn2 v15.2d, v21.2d, v23.2d + trn1 V20.4S, V0.4S, V1.4S + trn1 V22.4S, V2.4S, V3.4S + trn2 V21.4S, V0.4S, V1.4S + trn2 V23.4S, V2.4S, V3.4S + trn1 V0.2D, V20.2D, V22.2D + trn1 V1.2D, V21.2D, V23.2D + trn2 V2.2D, V20.2D, V22.2D + trn2 V3.2D, V21.2D, V23.2D + trn1 V20.4S, V4.4S, V5.4S + trn1 V22.4S, V6.4S, V7.4S + trn2 V21.4S, V4.4S, V5.4S + trn2 V23.4S, V6.4S, V7.4S + trn1 V4.2D, V20.2D, V22.2D + trn1 V5.2D, V21.2D, V23.2D + trn2 V6.2D, V20.2D, V22.2D + trn2 V7.2D, V21.2D, V23.2D + trn1 V20.4S, V8.4S, V9.4S + trn1 V22.4S, V10.4S, V11.4S + trn2 V21.4S, V8.4S, V9.4S + trn2 V23.4S, V10.4S, V11.4S + trn1 V8.2D, V20.2D, V22.2D + trn1 V9.2D, V21.2D, V23.2D + trn2 V10.2D, V20.2D, V22.2D + trn2 V11.2D, V21.2D, V23.2D + trn1 V20.4S, V12.4S, V13.4S + trn1 V22.4S, V14.4S, V15.4S + trn2 V21.4S, V12.4S, V13.4S + trn2 V23.4S, V14.4S, V15.4S + trn1 V12.2D, V20.2D, V22.2D + trn1 V13.2D, V21.2D, V23.2D + trn2 V14.2D, V20.2D, V22.2D + trn2 V15.2D, V21.2D, V23.2D ; Add back state, XOR in message and store (load next block) - add v20.4s, v0.4s, v16.4s - add v21.4s, v4.4s, v17.4s - add v22.4s, v8.4s, v18.4s - add v23.4s, v12.4s, v19.4s - eor v20.16b, v20.16b, v24.16b - eor v21.16b, v21.16b, v25.16b - eor v22.16b, v22.16b, v26.16b - eor v23.16b, v23.16b, v27.16b - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 - add v20.4s, v1.4s, v16.4s - add v21.4s, v5.4s, v17.4s - add v22.4s, v9.4s, v18.4s - add v23.4s, v13.4s, v19.4s - eor v20.16b, v20.16b, v24.16b - eor v21.16b, v21.16b, v25.16b - eor v22.16b, v22.16b, v26.16b - eor v23.16b, v23.16b, v27.16b - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 - add v20.4s, v2.4s, v16.4s - add v21.4s, v6.4s, v17.4s - add v22.4s, v10.4s, v18.4s - add v23.4s, v14.4s, v19.4s - eor v20.16b, v20.16b, v24.16b - eor v21.16b, v21.16b, v25.16b - eor v22.16b, v22.16b, v26.16b - eor v23.16b, v23.16b, v27.16b - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 - add v20.4s, v3.4s, v16.4s - add v21.4s, v7.4s, v17.4s - add v22.4s, v11.4s, v18.4s - add v23.4s, v15.4s, v19.4s - eor v20.16b, v20.16b, v24.16b - eor v21.16b, v21.16b, v25.16b - eor v22.16b, v22.16b, v26.16b - eor v23.16b, v23.16b, v27.16b - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 - mov v29.s[0], w26 + add V20.4S, V0.4S, V16.4S + add V21.4S, V4.4S, V17.4S + add V22.4S, V8.4S, V18.4S + add V23.4S, V12.4S, V19.4S + eor V20.16B, V20.16B, V24.16B + eor V21.16B, V21.16B, V25.16B + eor V22.16B, V22.16B, V26.16B + eor V23.16B, V23.16B, V27.16B + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 + add V20.4S, V1.4S, V16.4S + add V21.4S, V5.4S, V17.4S + add V22.4S, V9.4S, V18.4S + add V23.4S, V13.4S, V19.4S + eor V20.16B, V20.16B, V24.16B + eor V21.16B, V21.16B, V25.16B + eor V22.16B, V22.16B, V26.16B + eor V23.16B, V23.16B, V27.16B + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 + add V20.4S, V2.4S, V16.4S + add V21.4S, V6.4S, V17.4S + add V22.4S, V10.4S, V18.4S + add V23.4S, V14.4S, V19.4S + eor V20.16B, V20.16B, V24.16B + eor V21.16B, V21.16B, V25.16B + eor V22.16B, V22.16B, V26.16B + eor V23.16B, V23.16B, V27.16B + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 + add V20.4S, V3.4S, V16.4S + add V21.4S, V7.4S, V17.4S + add V22.4S, V11.4S, V18.4S + add V23.4S, V15.4S, V19.4S + eor V20.16B, V20.16B, V24.16B + eor V21.16B, V21.16B, V25.16B + eor V22.16B, V22.16B, V26.16B + eor V23.16B, V23.16B, V27.16B + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 + mov V29.S[0], w26 sub x3, x3, #0x100 - add v19.4s, v19.4s, v29.4s + add V19.4S, V19.4S, V29.4S ; Done 256-byte block L_chacha_crypt_bytes_arm64_lt_256 cmp x3, #0x80 blt L_chacha_crypt_bytes_arm64_lt_128 - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 ; Move state into vector registers - mov v4.16b, v16.16b - mov v5.16b, v17.16b - mov v6.16b, v18.16b - mov v7.16b, v19.16b - mov v0.16b, v16.16b - mov v1.16b, v17.16b - mov v2.16b, v18.16b - mov v3.16b, v19.16b + mov V4.16B, V16.16B + mov V5.16B, V17.16B + mov V6.16B, V18.16B + mov V7.16B, V19.16B + mov V0.16B, V16.16B + mov V1.16B, V17.16B + mov V2.16B, V18.16B + mov V3.16B, V19.16B ; Add counter word - add v7.4s, v7.4s, v31.4s + add V7.4S, V7.4S, V31.4S ; Set number of odd+even rounds to perform mov x26, #10 L_chacha_crypt_bytes_arm64_round_start_128 subs x26, x26, #1 ; Round odd ; a += b; d ^= a; d <<<= 16; - add v0.4s, v0.4s, v1.4s - add v4.4s, v4.4s, v5.4s - eor v3.16b, v3.16b, v0.16b - eor v7.16b, v7.16b, v4.16b - rev32 v3.8h, v3.8h - rev32 v7.8h, v7.8h + add V0.4S, V0.4S, V1.4S + add V4.4S, V4.4S, V5.4S + eor V3.16B, V3.16B, V0.16B + eor V7.16B, V7.16B, V4.16B + rev32 V3.8H, V3.8H + rev32 V7.8H, V7.8H ; c += d; b ^= c; b <<<= 12; - add v2.4s, v2.4s, v3.4s - add v6.4s, v6.4s, v7.4s - eor v20.16b, v1.16b, v2.16b - eor v21.16b, v5.16b, v6.16b - shl v1.4s, v20.4s, #12 - shl v5.4s, v21.4s, #12 - sri v1.4s, v20.4s, #20 - sri v5.4s, v21.4s, #20 + add V2.4S, V2.4S, V3.4S + add V6.4S, V6.4S, V7.4S + eor V20.16B, V1.16B, V2.16B + eor V21.16B, V5.16B, V6.16B + shl V1.4S, V20.4S, #12 + shl V5.4S, V21.4S, #12 + sri V1.4S, V20.4S, #20 + sri V5.4S, V21.4S, #20 ; a += b; d ^= a; d <<<= 8; - add v0.4s, v0.4s, v1.4s - add v4.4s, v4.4s, v5.4s - eor v3.16b, v3.16b, v0.16b - eor v7.16b, v7.16b, v4.16b - tbl v3.16b, {v3.16b}, v30.16b - tbl v7.16b, {v7.16b}, v30.16b + add V0.4S, V0.4S, V1.4S + add V4.4S, V4.4S, V5.4S + eor V3.16B, V3.16B, V0.16B + eor V7.16B, V7.16B, V4.16B + tbl V3.16B, {V3.16B}, V30.16B + tbl V7.16B, {V7.16B}, V30.16B ; c += d; b ^= c; b <<<= 7; - add v2.4s, v2.4s, v3.4s - add v6.4s, v6.4s, v7.4s - eor v20.16b, v1.16b, v2.16b - eor v21.16b, v5.16b, v6.16b - shl v1.4s, v20.4s, #7 - shl v5.4s, v21.4s, #7 - sri v1.4s, v20.4s, #25 - sri v5.4s, v21.4s, #25 - ext v3.16b, v3.16b, v3.16b, #12 - ext v7.16b, v7.16b, v7.16b, #12 - ext v1.16b, v1.16b, v1.16b, #4 - ext v5.16b, v5.16b, v5.16b, #4 - ext v2.16b, v2.16b, v2.16b, #8 - ext v6.16b, v6.16b, v6.16b, #8 + add V2.4S, V2.4S, V3.4S + add V6.4S, V6.4S, V7.4S + eor V20.16B, V1.16B, V2.16B + eor V21.16B, V5.16B, V6.16B + shl V1.4S, V20.4S, #7 + shl V5.4S, V21.4S, #7 + sri V1.4S, V20.4S, #25 + sri V5.4S, V21.4S, #25 + ext8 V3.16B, V3.16B, V3.16B, #12 + ext8 V7.16B, V7.16B, V7.16B, #12 + ext8 V1.16B, V1.16B, V1.16B, #4 + ext8 V5.16B, V5.16B, V5.16B, #4 + ext8 V2.16B, V2.16B, V2.16B, #8 + ext8 V6.16B, V6.16B, V6.16B, #8 ; Round even ; a += b; d ^= a; d <<<= 16; - add v0.4s, v0.4s, v1.4s - add v4.4s, v4.4s, v5.4s - eor v3.16b, v3.16b, v0.16b - eor v7.16b, v7.16b, v4.16b - rev32 v3.8h, v3.8h - rev32 v7.8h, v7.8h + add V0.4S, V0.4S, V1.4S + add V4.4S, V4.4S, V5.4S + eor V3.16B, V3.16B, V0.16B + eor V7.16B, V7.16B, V4.16B + rev32 V3.8H, V3.8H + rev32 V7.8H, V7.8H ; c += d; b ^= c; b <<<= 12; - add v2.4s, v2.4s, v3.4s - add v6.4s, v6.4s, v7.4s - eor v20.16b, v1.16b, v2.16b - eor v21.16b, v5.16b, v6.16b - shl v1.4s, v20.4s, #12 - shl v5.4s, v21.4s, #12 - sri v1.4s, v20.4s, #20 - sri v5.4s, v21.4s, #20 + add V2.4S, V2.4S, V3.4S + add V6.4S, V6.4S, V7.4S + eor V20.16B, V1.16B, V2.16B + eor V21.16B, V5.16B, V6.16B + shl V1.4S, V20.4S, #12 + shl V5.4S, V21.4S, #12 + sri V1.4S, V20.4S, #20 + sri V5.4S, V21.4S, #20 ; a += b; d ^= a; d <<<= 8; - add v0.4s, v0.4s, v1.4s - add v4.4s, v4.4s, v5.4s - eor v3.16b, v3.16b, v0.16b - eor v7.16b, v7.16b, v4.16b - tbl v3.16b, {v3.16b}, v30.16b - tbl v7.16b, {v7.16b}, v30.16b + add V0.4S, V0.4S, V1.4S + add V4.4S, V4.4S, V5.4S + eor V3.16B, V3.16B, V0.16B + eor V7.16B, V7.16B, V4.16B + tbl V3.16B, {V3.16B}, V30.16B + tbl V7.16B, {V7.16B}, V30.16B ; c += d; b ^= c; b <<<= 7; - add v2.4s, v2.4s, v3.4s - add v6.4s, v6.4s, v7.4s - eor v20.16b, v1.16b, v2.16b - eor v21.16b, v5.16b, v6.16b - shl v1.4s, v20.4s, #7 - shl v5.4s, v21.4s, #7 - sri v1.4s, v20.4s, #25 - sri v5.4s, v21.4s, #25 - ext v3.16b, v3.16b, v3.16b, #4 - ext v7.16b, v7.16b, v7.16b, #4 - ext v1.16b, v1.16b, v1.16b, #12 - ext v5.16b, v5.16b, v5.16b, #12 - ext v2.16b, v2.16b, v2.16b, #8 - ext v6.16b, v6.16b, v6.16b, #8 + add V2.4S, V2.4S, V3.4S + add V6.4S, V6.4S, V7.4S + eor V20.16B, V1.16B, V2.16B + eor V21.16B, V5.16B, V6.16B + shl V1.4S, V20.4S, #7 + shl V5.4S, V21.4S, #7 + sri V1.4S, V20.4S, #25 + sri V5.4S, V21.4S, #25 + ext8 V3.16B, V3.16B, V3.16B, #4 + ext8 V7.16B, V7.16B, V7.16B, #4 + ext8 V1.16B, V1.16B, V1.16B, #12 + ext8 V5.16B, V5.16B, V5.16B, #12 + ext8 V2.16B, V2.16B, V2.16B, #8 + ext8 V6.16B, V6.16B, V6.16B, #8 bne L_chacha_crypt_bytes_arm64_round_start_128 ; Add back state, XOR in message and store (load next block) - add v0.4s, v0.4s, v16.4s - add v1.4s, v1.4s, v17.4s - add v2.4s, v2.4s, v18.4s - add v3.4s, v3.4s, v19.4s - eor v24.16b, v24.16b, v0.16b - eor v25.16b, v25.16b, v1.16b - eor v26.16b, v26.16b, v2.16b - eor v27.16b, v27.16b, v3.16b - ld1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x2], #0x40 - st1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], #0x40 - add v19.4s, v19.4s, v31.4s - add v4.4s, v4.4s, v16.4s - add v5.4s, v5.4s, v17.4s - add v6.4s, v6.4s, v18.4s - add v7.4s, v7.4s, v19.4s - eor v20.16b, v20.16b, v4.16b - eor v21.16b, v21.16b, v5.16b - eor v22.16b, v22.16b, v6.16b - eor v23.16b, v23.16b, v7.16b - st1 {v20.16b, v21.16b, v22.16b, v23.16b}, [x1], #0x40 - add v19.4s, v19.4s, v31.4s + add V0.4S, V0.4S, V16.4S + add V1.4S, V1.4S, V17.4S + add V2.4S, V2.4S, V18.4S + add V3.4S, V3.4S, V19.4S + eor V24.16B, V24.16B, V0.16B + eor V25.16B, V25.16B, V1.16B + eor V26.16B, V26.16B, V2.16B + eor V27.16B, V27.16B, V3.16B + ld1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x2], #0x40 + st1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x1], #0x40 + add V19.4S, V19.4S, V31.4S + add V4.4S, V4.4S, V16.4S + add V5.4S, V5.4S, V17.4S + add V6.4S, V6.4S, V18.4S + add V7.4S, V7.4S, V19.4S + eor V20.16B, V20.16B, V4.16B + eor V21.16B, V21.16B, V5.16B + eor V22.16B, V22.16B, V6.16B + eor V23.16B, V23.16B, V7.16B + st1 {V20.16B, V21.16B, V22.16B, V23.16B}, [x1], #0x40 + add V19.4S, V19.4S, V31.4S sub x3, x3, #0x80 ; Done 128-byte block L_chacha_crypt_bytes_arm64_lt_128 @@ -798,75 +798,75 @@ L_chacha_crypt_bytes_arm64_lt_128 mov w5, #0x40 L_chacha_crypt_bytes_arm64_loop_64 ; Move state into vector registers - mov v0.16b, v16.16b - mov v1.16b, v17.16b - mov v2.16b, v18.16b - mov v3.16b, v19.16b + mov V0.16B, V16.16B + mov V1.16B, V17.16B + mov V2.16B, V18.16B + mov V3.16B, V19.16B ; Set number of odd+even rounds to perform mov x26, #10 L_chacha_crypt_bytes_arm64_round_64 subs x26, x26, #1 ; Round odd ; a += b; d ^= a; d <<<= 16; - add v0.4s, v0.4s, v1.4s - eor v3.16b, v3.16b, v0.16b - rev32 v3.8h, v3.8h + add V0.4S, V0.4S, V1.4S + eor V3.16B, V3.16B, V0.16B + rev32 V3.8H, V3.8H ; c += d; b ^= c; b <<<= 12; - add v2.4s, v2.4s, v3.4s - eor v20.16b, v1.16b, v2.16b - shl v1.4s, v20.4s, #12 - sri v1.4s, v20.4s, #20 + add V2.4S, V2.4S, V3.4S + eor V20.16B, V1.16B, V2.16B + shl V1.4S, V20.4S, #12 + sri V1.4S, V20.4S, #20 ; a += b; d ^= a; d <<<= 8; - add v0.4s, v0.4s, v1.4s - eor v3.16b, v3.16b, v0.16b - tbl v3.16b, {v3.16b}, v30.16b + add V0.4S, V0.4S, V1.4S + eor V3.16B, V3.16B, V0.16B + tbl V3.16B, {V3.16B}, V30.16B ; c += d; b ^= c; b <<<= 7; - add v2.4s, v2.4s, v3.4s - eor v20.16b, v1.16b, v2.16b - shl v1.4s, v20.4s, #7 - sri v1.4s, v20.4s, #25 - ext v3.16b, v3.16b, v3.16b, #12 - ext v1.16b, v1.16b, v1.16b, #4 - ext v2.16b, v2.16b, v2.16b, #8 + add V2.4S, V2.4S, V3.4S + eor V20.16B, V1.16B, V2.16B + shl V1.4S, V20.4S, #7 + sri V1.4S, V20.4S, #25 + ext8 V3.16B, V3.16B, V3.16B, #12 + ext8 V1.16B, V1.16B, V1.16B, #4 + ext8 V2.16B, V2.16B, V2.16B, #8 ; Round even ; a += b; d ^= a; d <<<= 16; - add v0.4s, v0.4s, v1.4s - eor v3.16b, v3.16b, v0.16b - rev32 v3.8h, v3.8h + add V0.4S, V0.4S, V1.4S + eor V3.16B, V3.16B, V0.16B + rev32 V3.8H, V3.8H ; c += d; b ^= c; b <<<= 12; - add v2.4s, v2.4s, v3.4s - eor v20.16b, v1.16b, v2.16b - shl v1.4s, v20.4s, #12 - sri v1.4s, v20.4s, #20 + add V2.4S, V2.4S, V3.4S + eor V20.16B, V1.16B, V2.16B + shl V1.4S, V20.4S, #12 + sri V1.4S, V20.4S, #20 ; a += b; d ^= a; d <<<= 8; - add v0.4s, v0.4s, v1.4s - eor v3.16b, v3.16b, v0.16b - tbl v3.16b, {v3.16b}, v30.16b + add V0.4S, V0.4S, V1.4S + eor V3.16B, V3.16B, V0.16B + tbl V3.16B, {V3.16B}, V30.16B ; c += d; b ^= c; b <<<= 7; - add v2.4s, v2.4s, v3.4s - eor v20.16b, v1.16b, v2.16b - shl v1.4s, v20.4s, #7 - sri v1.4s, v20.4s, #25 - ext v3.16b, v3.16b, v3.16b, #4 - ext v1.16b, v1.16b, v1.16b, #12 - ext v2.16b, v2.16b, v2.16b, #8 + add V2.4S, V2.4S, V3.4S + eor V20.16B, V1.16B, V2.16B + shl V1.4S, V20.4S, #7 + sri V1.4S, V20.4S, #25 + ext8 V3.16B, V3.16B, V3.16B, #4 + ext8 V1.16B, V1.16B, V1.16B, #12 + ext8 V2.16B, V2.16B, V2.16B, #8 bne L_chacha_crypt_bytes_arm64_round_64 ; Add back state - add v0.4s, v0.4s, v16.4s - add v1.4s, v1.4s, v17.4s - add v2.4s, v2.4s, v18.4s - add v3.4s, v3.4s, v19.4s + add V0.4S, V0.4S, V16.4S + add V1.4S, V1.4S, V17.4S + add V2.4S, V2.4S, V18.4S + add V3.4S, V3.4S, V19.4S ; Check if data is less than 64 bytes - store in over cmp x3, #0x40 - add v19.4s, v19.4s, v31.4s + add V19.4S, V19.4S, V31.4S blt L_chacha_crypt_bytes_arm64_lt_64 ; Encipher 64 bytes - ld1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x2], #0x40 - eor v24.16b, v24.16b, v0.16b - eor v25.16b, v25.16b, v1.16b - eor v26.16b, v26.16b, v2.16b - eor v27.16b, v27.16b, v3.16b - st1 {v24.16b, v25.16b, v26.16b, v27.16b}, [x1], #0x40 + ld1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x2], #0x40 + eor V24.16B, V24.16B, V0.16B + eor V25.16B, V25.16B, V1.16B + eor V26.16B, V26.16B, V2.16B + eor V27.16B, V27.16B, V3.16B + st1 {V24.16B, V25.16B, V26.16B, V27.16B}, [x1], #0x40 ; Check for more bytes to be enciphered subs x3, x3, #0x40 bne L_chacha_crypt_bytes_arm64_loop_64 @@ -875,41 +875,41 @@ L_chacha_crypt_bytes_arm64_lt_64 ; Calculate bytes left in block not used sub w5, w5, w3 ; Store encipher block in over for further operations and left - st1 {v0.4s, v1.4s, v2.4s, v3.4s}, [x4] + st1 {V0.4S, V1.4S, V2.4S, V3.4S}, [x4] str w5, [x0, #64] ; Encipher 32 bytes cmp x3, #32 blt L_chacha_crypt_bytes_arm64_lt_32 - ld1 {v24.16b, v25.16b}, [x2], #32 - eor v24.16b, v24.16b, v0.16b - eor v25.16b, v25.16b, v1.16b - st1 {v24.16b, v25.16b}, [x1], #32 + ld1 {V24.16B, V25.16B}, [x2], #32 + eor V24.16B, V24.16B, V0.16B + eor V25.16B, V25.16B, V1.16B + st1 {V24.16B, V25.16B}, [x1], #32 subs x3, x3, #32 - mov v0.16b, v2.16b - mov v1.16b, v3.16b + mov V0.16B, V2.16B + mov V1.16B, V3.16B beq L_chacha_crypt_bytes_arm64_done L_chacha_crypt_bytes_arm64_lt_32 cmp x3, #16 blt L_chacha_crypt_bytes_arm64_lt_16 ; Encipher 16 bytes - ld1 {v24.16b}, [x2], #16 - eor v24.16b, v24.16b, v0.16b - st1 {v24.16b}, [x1], #16 + ld1 {V24.16B}, [x2], #16 + eor V24.16B, V24.16B, V0.16B + st1 {V24.16B}, [x1], #16 subs x3, x3, #16 - mov v0.16b, v1.16b + mov V0.16B, V1.16B beq L_chacha_crypt_bytes_arm64_done L_chacha_crypt_bytes_arm64_lt_16 cmp x3, #8 blt L_chacha_crypt_bytes_arm64_lt_8 ; Encipher 8 bytes - ld1 {v24.8b}, [x2], #8 - eor v24.8b, v24.8b, v0.8b - st1 {v24.8b}, [x1], #8 + ld1 {V24.8B}, [x2], #8 + eor V24.8B, V24.8B, V0.8B + st1 {V24.8B}, [x1], #8 subs x3, x3, #8 - mov v0.d[0], v0.d[1] + mov V0.D[0], V0.D[1] beq L_chacha_crypt_bytes_arm64_done L_chacha_crypt_bytes_arm64_lt_8 - mov x5, v0.d[0] + mov x5, V0.D[0] L_chacha_crypt_bytes_arm64_loop_lt_8 ; Encipher 1 byte at a time ldrb w6, [x2], #1 @@ -920,16 +920,16 @@ L_chacha_crypt_bytes_arm64_loop_lt_8 bgt L_chacha_crypt_bytes_arm64_loop_lt_8 L_chacha_crypt_bytes_arm64_done L_chacha_crypt_bytes_arm64_done_all - st1 {v16.4s, v17.4s, v18.4s, v19.4s}, [x0] + st1 {V16.4S, V17.4S, V18.4S, V19.4S}, [x0] ldp x17, x19, [x29, #24] ldp x20, x21, [x29, #40] ldp x22, x23, [x29, #56] ldp x24, x25, [x29, #72] ldr x26, [x29, #88] - ldp d8, d9, [x29, #96] - ldp d10, d11, [x29, #112] - ldp d12, d13, [x29, #128] - ldp d14, d15, [x29, #144] + ldp D8, D9, [x29, #96] + ldp D10, D11, [x29, #112] + ldp D12, D13, [x29, #128] + ldp D14, D15, [x29, #144] ldp x29, x30, [sp], #0xa0 ret ENDP @@ -944,7 +944,7 @@ wc_chacha_setiv PROC str w4, [x0, #60] ret ENDP - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_chacha_setkey_arm64_constant DCD 0x61707865, 0x3120646e, 0x79622d36, 0x6b206574 @@ -958,20 +958,20 @@ wc_chacha_setkey PROC subs x2, x2, #16 add x3, x3, x2 ; Start with constants - ld1 {v0.4s}, [x3] - ld1 {v1.16b}, [x1], #16 + ld1 {V0.4S}, [x3] + ld1 {V1.16B}, [x1], #16 IF :DEF:BIG_ENDIAN_ORDER - rev32 v1.8h, v1.8h + rev32 V1.8H, V1.8H ENDIF - st1 {v0.4s}, [x0], #16 - st1 {v1.4s}, [x0], #16 + st1 {V0.4S}, [x0], #16 + st1 {V1.4S}, [x0], #16 beq L_chacha_setkey_arm64_done - ld1 {v1.16b}, [x1] + ld1 {V1.16B}, [x1] IF :DEF:BIG_ENDIAN_ORDER - rev32 v1.8h, v1.8h + rev32 V1.8H, V1.8H ENDIF L_chacha_setkey_arm64_done - st1 {v1.4s}, [x0] + st1 {V1.4S}, [x0] ret ENDP AREA |.text|, CODE, READONLY @@ -982,11 +982,11 @@ L_chacha_use_over_arm64_16byte_loop cmp x3, #16 blt L_chacha_use_over_arm64_word_loop ; 16 bytes of state XORed into message. - ld1 {v0.16b}, [x0], #16 - ld1 {v1.16b}, [x2], #16 - eor v1.16b, v1.16b, v0.16b + ld1 {V0.16B}, [x0], #16 + ld1 {V1.16B}, [x2], #16 + eor V1.16B, V1.16B, V0.16B subs x3, x3, #16 - st1 {v1.16b}, [x1], #16 + st1 {V1.16B}, [x1], #16 beq L_chacha_use_over_arm64_done b L_chacha_use_over_arm64_16byte_loop L_chacha_use_over_arm64_word_loop diff --git a/wolfcrypt/src/port/arm/armv8-curve25519.asm b/wolfcrypt/src/port/arm/armv8-curve25519.asm index 6c06c06bb6..e2706c3614 100644 --- a/wolfcrypt/src/port/arm/armv8-curve25519.asm +++ b/wolfcrypt/src/port/arm/armv8-curve25519.asm @@ -1696,7 +1696,7 @@ L_fe_invert8 ret ENDP IF :LNOT::DEF:HAVE_ED25519 :LAND: :LNOT::DEF:WOLFSSL_CURVE25519_USE_ED25519 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 16 L_curve25519_base_x2 DCQ 0x5cae469cdd684efb, 0x8f3f5ced1e350b5c @@ -5047,6 +5047,14 @@ L_curve25519_bits adcs x7, x7, x25 adcs x8, x8, x26 adc x9, x9, x27 + ; Reduce if top bit set + mov x3, #19 + and x4, x3, x9, asr 63 + adds x6, x6, x4 + adcs x7, x7, xzr + and x9, x9, #0x7fffffffffffffff + adcs x8, x8, xzr + adc x9, x9, xzr ; Square ; A[0] * A[1] umulh x16, x19, x20 diff --git a/wolfcrypt/src/port/arm/armv8-mlkem-asm.asm b/wolfcrypt/src/port/arm/armv8-mlkem-asm.asm index cc8271d85e..cc93e3147d 100644 --- a/wolfcrypt/src/port/arm/armv8-mlkem-asm.asm +++ b/wolfcrypt/src/port/arm/armv8-mlkem-asm.asm @@ -24,12 +24,12 @@ ; cd ../scripts ; ruby ./kyber/kyber.rb arm64 \ ; ../wolfssl/wolfcrypt/src/port/arm/armv8-mlkem-asm.asm - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_aarch64_consts DCW 0x0d01, 0xf301, 0x4ebf, 0x0549, 0x5049, 0x0000, 0x0000, 0x0000 IF :DEF:WOLFSSL_HAVE_MLKEM - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_aarch64_zetas DCW 0x08ed, 0x0a0b, 0x0b9a, 0x0714, 0x05d5, 0x058e, 0x011f, 0x00ca @@ -68,7 +68,7 @@ L_mlkem_aarch64_zetas DCW 0x071b, 0x071b, 0x09ab, 0x09ab, 0x099b, 0x099b, 0x01de, 0x01de DCW 0x0c95, 0x0c95, 0x0bcd, 0x0bcd, 0x03e4, 0x03e4, 0x03df, 0x03df DCW 0x03be, 0x03be, 0x074d, 0x074d, 0x05f2, 0x05f2, 0x065c, 0x065c - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_aarch64_zetas_qinv DCW 0xffed, 0x7b0b, 0x399a, 0x0314, 0x34d5, 0xcf8e, 0x6e1f, 0xbeca @@ -113,10 +113,10 @@ L_mlkem_aarch64_zetas_qinv mlkem_ntt PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x2, L_mlkem_aarch64_zetas add x2, x2, L_mlkem_aarch64_zetas adrp x3, L_mlkem_aarch64_zetas_qinv @@ -124,1259 +124,1259 @@ mlkem_ntt PROC adrp x4, L_mlkem_aarch64_consts add x4, x4, L_mlkem_aarch64_consts add x1, x0, #0x100 - ldr q4, [x4] - ldr q5, [x0] - ldr q6, [x0, #32] - ldr q7, [x0, #64] - ldr q8, [x0, #96] - ldr q9, [x0, #128] - ldr q10, [x0, #160] - ldr q11, [x0, #192] - ldr q12, [x0, #224] - ldr q13, [x1] - ldr q14, [x1, #32] - ldr q15, [x1, #64] - ldr q16, [x1, #96] - ldr q17, [x1, #128] - ldr q18, [x1, #160] - ldr q19, [x1, #192] - ldr q20, [x1, #224] - ldr q0, [x2] - ldr q1, [x3] - mul v29.8h, v13.8h, v1.h[1] - mul v30.8h, v14.8h, v1.h[1] - sqrdmulh v21.8h, v13.8h, v0.h[1] - sqrdmulh v22.8h, v14.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v15.8h, v1.h[1] - mul v30.8h, v16.8h, v1.h[1] - sqrdmulh v23.8h, v15.8h, v0.h[1] - sqrdmulh v24.8h, v16.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v17.8h, v1.h[1] - mul v30.8h, v18.8h, v1.h[1] - sqrdmulh v25.8h, v17.8h, v0.h[1] - sqrdmulh v26.8h, v18.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[1] - mul v30.8h, v20.8h, v1.h[1] - sqrdmulh v27.8h, v19.8h, v0.h[1] - sqrdmulh v28.8h, v20.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v13.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v14.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v15.8h, v7.8h, v23.8h - add v7.8h, v7.8h, v23.8h - sub v16.8h, v8.8h, v24.8h - add v8.8h, v8.8h, v24.8h - sub v17.8h, v9.8h, v25.8h - add v9.8h, v9.8h, v25.8h - sub v18.8h, v10.8h, v26.8h - add v10.8h, v10.8h, v26.8h - sub v19.8h, v11.8h, v27.8h - add v11.8h, v11.8h, v27.8h - sub v20.8h, v12.8h, v28.8h - add v12.8h, v12.8h, v28.8h - mul v29.8h, v9.8h, v1.h[2] - mul v30.8h, v10.8h, v1.h[2] - sqrdmulh v21.8h, v9.8h, v0.h[2] - sqrdmulh v22.8h, v10.8h, v0.h[2] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v11.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[2] - sqrdmulh v23.8h, v11.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[2] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v17.8h, v1.h[3] - mul v30.8h, v18.8h, v1.h[3] - sqrdmulh v25.8h, v17.8h, v0.h[3] - sqrdmulh v26.8h, v18.8h, v0.h[3] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[3] - mul v30.8h, v20.8h, v1.h[3] - sqrdmulh v27.8h, v19.8h, v0.h[3] - sqrdmulh v28.8h, v20.8h, v0.h[3] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v9.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v10.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v11.8h, v7.8h, v23.8h - add v7.8h, v7.8h, v23.8h - sub v12.8h, v8.8h, v24.8h - add v8.8h, v8.8h, v24.8h - sub v17.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v18.8h, v14.8h, v26.8h - add v14.8h, v14.8h, v26.8h - sub v19.8h, v15.8h, v27.8h - add v15.8h, v15.8h, v27.8h - sub v20.8h, v16.8h, v28.8h - add v16.8h, v16.8h, v28.8h - mul v29.8h, v7.8h, v1.h[4] - mul v30.8h, v8.8h, v1.h[4] - sqrdmulh v21.8h, v7.8h, v0.h[4] - sqrdmulh v22.8h, v8.8h, v0.h[4] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v11.8h, v1.h[5] - mul v30.8h, v12.8h, v1.h[5] - sqrdmulh v23.8h, v11.8h, v0.h[5] - sqrdmulh v24.8h, v12.8h, v0.h[5] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v15.8h, v1.h[6] - mul v30.8h, v16.8h, v1.h[6] - sqrdmulh v25.8h, v15.8h, v0.h[6] - sqrdmulh v26.8h, v16.8h, v0.h[6] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[7] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v19.8h, v0.h[7] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v7.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v11.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v10.8h, v24.8h - add v10.8h, v10.8h, v24.8h - sub v15.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v14.8h, v26.8h - add v14.8h, v14.8h, v26.8h - sub v19.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v18.8h, v28.8h - add v18.8h, v18.8h, v28.8h - ldr q0, [x2, #16] - ldr q1, [x3, #16] - mul v29.8h, v6.8h, v1.h[0] - mul v30.8h, v8.8h, v1.h[1] - sqrdmulh v21.8h, v6.8h, v0.h[0] - sqrdmulh v22.8h, v8.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v10.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[3] - sqrdmulh v23.8h, v10.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[3] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v14.8h, v1.h[4] - mul v30.8h, v16.8h, v1.h[5] - sqrdmulh v25.8h, v14.8h, v0.h[4] - sqrdmulh v26.8h, v16.8h, v0.h[5] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v18.8h, v1.h[6] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v18.8h, v0.h[6] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - str q5, [x0] - str q6, [x0, #32] - str q7, [x0, #64] - str q8, [x0, #96] - str q9, [x0, #128] - str q10, [x0, #160] - str q11, [x0, #192] - str q12, [x0, #224] - str q13, [x1] - str q14, [x1, #32] - str q15, [x1, #64] - str q16, [x1, #96] - str q17, [x1, #128] - str q18, [x1, #160] - str q19, [x1, #192] - str q20, [x1, #224] - ldr q5, [x0, #16] - ldr q6, [x0, #48] - ldr q7, [x0, #80] - ldr q8, [x0, #112] - ldr q9, [x0, #144] - ldr q10, [x0, #176] - ldr q11, [x0, #208] - ldr q12, [x0, #240] - ldr q13, [x1, #16] - ldr q14, [x1, #48] - ldr q15, [x1, #80] - ldr q16, [x1, #112] - ldr q17, [x1, #144] - ldr q18, [x1, #176] - ldr q19, [x1, #208] - ldr q20, [x1, #240] - ldr q0, [x2] - ldr q1, [x3] - mul v29.8h, v13.8h, v1.h[1] - mul v30.8h, v14.8h, v1.h[1] - sqrdmulh v21.8h, v13.8h, v0.h[1] - sqrdmulh v22.8h, v14.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v15.8h, v1.h[1] - mul v30.8h, v16.8h, v1.h[1] - sqrdmulh v23.8h, v15.8h, v0.h[1] - sqrdmulh v24.8h, v16.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v17.8h, v1.h[1] - mul v30.8h, v18.8h, v1.h[1] - sqrdmulh v25.8h, v17.8h, v0.h[1] - sqrdmulh v26.8h, v18.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[1] - mul v30.8h, v20.8h, v1.h[1] - sqrdmulh v27.8h, v19.8h, v0.h[1] - sqrdmulh v28.8h, v20.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v13.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v14.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v15.8h, v7.8h, v23.8h - add v7.8h, v7.8h, v23.8h - sub v16.8h, v8.8h, v24.8h - add v8.8h, v8.8h, v24.8h - sub v17.8h, v9.8h, v25.8h - add v9.8h, v9.8h, v25.8h - sub v18.8h, v10.8h, v26.8h - add v10.8h, v10.8h, v26.8h - sub v19.8h, v11.8h, v27.8h - add v11.8h, v11.8h, v27.8h - sub v20.8h, v12.8h, v28.8h - add v12.8h, v12.8h, v28.8h - mul v29.8h, v9.8h, v1.h[2] - mul v30.8h, v10.8h, v1.h[2] - sqrdmulh v21.8h, v9.8h, v0.h[2] - sqrdmulh v22.8h, v10.8h, v0.h[2] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v11.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[2] - sqrdmulh v23.8h, v11.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[2] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v17.8h, v1.h[3] - mul v30.8h, v18.8h, v1.h[3] - sqrdmulh v25.8h, v17.8h, v0.h[3] - sqrdmulh v26.8h, v18.8h, v0.h[3] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[3] - mul v30.8h, v20.8h, v1.h[3] - sqrdmulh v27.8h, v19.8h, v0.h[3] - sqrdmulh v28.8h, v20.8h, v0.h[3] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v9.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v10.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v11.8h, v7.8h, v23.8h - add v7.8h, v7.8h, v23.8h - sub v12.8h, v8.8h, v24.8h - add v8.8h, v8.8h, v24.8h - sub v17.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v18.8h, v14.8h, v26.8h - add v14.8h, v14.8h, v26.8h - sub v19.8h, v15.8h, v27.8h - add v15.8h, v15.8h, v27.8h - sub v20.8h, v16.8h, v28.8h - add v16.8h, v16.8h, v28.8h - mul v29.8h, v7.8h, v1.h[4] - mul v30.8h, v8.8h, v1.h[4] - sqrdmulh v21.8h, v7.8h, v0.h[4] - sqrdmulh v22.8h, v8.8h, v0.h[4] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v11.8h, v1.h[5] - mul v30.8h, v12.8h, v1.h[5] - sqrdmulh v23.8h, v11.8h, v0.h[5] - sqrdmulh v24.8h, v12.8h, v0.h[5] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v15.8h, v1.h[6] - mul v30.8h, v16.8h, v1.h[6] - sqrdmulh v25.8h, v15.8h, v0.h[6] - sqrdmulh v26.8h, v16.8h, v0.h[6] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[7] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v19.8h, v0.h[7] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v7.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v11.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v10.8h, v24.8h - add v10.8h, v10.8h, v24.8h - sub v15.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v14.8h, v26.8h - add v14.8h, v14.8h, v26.8h - sub v19.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v18.8h, v28.8h - add v18.8h, v18.8h, v28.8h - ldr q0, [x2, #16] - ldr q1, [x3, #16] - mul v29.8h, v6.8h, v1.h[0] - mul v30.8h, v8.8h, v1.h[1] - sqrdmulh v21.8h, v6.8h, v0.h[0] - sqrdmulh v22.8h, v8.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v10.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[3] - sqrdmulh v23.8h, v10.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[3] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v14.8h, v1.h[4] - mul v30.8h, v16.8h, v1.h[5] - sqrdmulh v25.8h, v14.8h, v0.h[4] - sqrdmulh v26.8h, v16.8h, v0.h[5] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v18.8h, v1.h[6] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v18.8h, v0.h[6] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - str q5, [x0, #16] - str q6, [x0, #48] - str q7, [x0, #80] - str q8, [x0, #112] - str q9, [x0, #144] - str q10, [x0, #176] - str q11, [x0, #208] - str q12, [x0, #240] - str q13, [x1, #16] - str q14, [x1, #48] - str q15, [x1, #80] - str q16, [x1, #112] - str q17, [x1, #144] - str q18, [x1, #176] - str q19, [x1, #208] - str q20, [x1, #240] - ldp q5, q6, [x0] - ldp q7, q8, [x0, #32] - ldp q9, q10, [x0, #64] - ldp q11, q12, [x0, #96] - ldp q13, q14, [x0, #128] - ldp q15, q16, [x0, #160] - ldp q17, q18, [x0, #192] - ldp q19, q20, [x0, #224] - ldr q0, [x2, #32] - ldr q1, [x3, #32] - mul v29.8h, v6.8h, v1.h[0] - mul v30.8h, v8.8h, v1.h[1] - sqrdmulh v21.8h, v6.8h, v0.h[0] - sqrdmulh v22.8h, v8.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v10.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[3] - sqrdmulh v23.8h, v10.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[3] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v14.8h, v1.h[4] - mul v30.8h, v16.8h, v1.h[5] - sqrdmulh v25.8h, v14.8h, v0.h[4] - sqrdmulh v26.8h, v16.8h, v0.h[5] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v18.8h, v1.h[6] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v18.8h, v0.h[6] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - ldr q0, [x2, #64] - ldr q2, [x2, #80] - ldr q1, [x3, #64] - ldr q3, [x3, #80] - mov v29.16b, v5.16b - mov v30.16b, v7.16b - trn1 v5.2d, v5.2d, v6.2d - trn1 v7.2d, v7.2d, v8.2d - trn2 v6.2d, v29.2d, v6.2d - trn2 v8.2d, v30.2d, v8.2d - mul v29.8h, v6.8h, v1.8h - mul v30.8h, v8.8h, v3.8h - sqrdmulh v21.8h, v6.8h, v0.8h - sqrdmulh v22.8h, v8.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - ldr q0, [x2, #96] - ldr q2, [x2, #112] - ldr q1, [x3, #96] - ldr q3, [x3, #112] - mov v29.16b, v9.16b - mov v30.16b, v11.16b - trn1 v9.2d, v9.2d, v10.2d - trn1 v11.2d, v11.2d, v12.2d - trn2 v10.2d, v29.2d, v10.2d - trn2 v12.2d, v30.2d, v12.2d - mul v29.8h, v10.8h, v1.8h - mul v30.8h, v12.8h, v3.8h - sqrdmulh v23.8h, v10.8h, v0.8h - sqrdmulh v24.8h, v12.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #128] - ldr q2, [x2, #144] - ldr q1, [x3, #128] - ldr q3, [x3, #144] - mov v29.16b, v13.16b - mov v30.16b, v15.16b - trn1 v13.2d, v13.2d, v14.2d - trn1 v15.2d, v15.2d, v16.2d - trn2 v14.2d, v29.2d, v14.2d - trn2 v16.2d, v30.2d, v16.2d - mul v29.8h, v14.8h, v1.8h - mul v30.8h, v16.8h, v3.8h - sqrdmulh v25.8h, v14.8h, v0.8h - sqrdmulh v26.8h, v16.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - ldr q0, [x2, #160] - ldr q2, [x2, #176] - ldr q1, [x3, #160] - ldr q3, [x3, #176] - mov v29.16b, v17.16b - mov v30.16b, v19.16b - trn1 v17.2d, v17.2d, v18.2d - trn1 v19.2d, v19.2d, v20.2d - trn2 v18.2d, v29.2d, v18.2d - trn2 v20.2d, v30.2d, v20.2d - mul v29.8h, v18.8h, v1.8h - mul v30.8h, v20.8h, v3.8h - sqrdmulh v27.8h, v18.8h, v0.8h - sqrdmulh v28.8h, v20.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - ldr q0, [x2, #320] - ldr q2, [x2, #336] - ldr q1, [x3, #320] - ldr q3, [x3, #336] - mov v29.16b, v5.16b - mov v30.16b, v7.16b - trn1 v5.4s, v5.4s, v6.4s - trn1 v7.4s, v7.4s, v8.4s - trn2 v6.4s, v29.4s, v6.4s - trn2 v8.4s, v30.4s, v8.4s - mul v29.8h, v6.8h, v1.8h - mul v30.8h, v8.8h, v3.8h - sqrdmulh v21.8h, v6.8h, v0.8h - sqrdmulh v22.8h, v8.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - ldr q0, [x2, #352] - ldr q2, [x2, #368] - ldr q1, [x3, #352] - ldr q3, [x3, #368] - mov v29.16b, v9.16b - mov v30.16b, v11.16b - trn1 v9.4s, v9.4s, v10.4s - trn1 v11.4s, v11.4s, v12.4s - trn2 v10.4s, v29.4s, v10.4s - trn2 v12.4s, v30.4s, v12.4s - mul v29.8h, v10.8h, v1.8h - mul v30.8h, v12.8h, v3.8h - sqrdmulh v23.8h, v10.8h, v0.8h - sqrdmulh v24.8h, v12.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #384] - ldr q2, [x2, #400] - ldr q1, [x3, #384] - ldr q3, [x3, #400] - mov v29.16b, v13.16b - mov v30.16b, v15.16b - trn1 v13.4s, v13.4s, v14.4s - trn1 v15.4s, v15.4s, v16.4s - trn2 v14.4s, v29.4s, v14.4s - trn2 v16.4s, v30.4s, v16.4s - mul v29.8h, v14.8h, v1.8h - mul v30.8h, v16.8h, v3.8h - sqrdmulh v25.8h, v14.8h, v0.8h - sqrdmulh v26.8h, v16.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - ldr q0, [x2, #416] - ldr q2, [x2, #432] - ldr q1, [x3, #416] - ldr q3, [x3, #432] - mov v29.16b, v17.16b - mov v30.16b, v19.16b - trn1 v17.4s, v17.4s, v18.4s - trn1 v19.4s, v19.4s, v20.4s - trn2 v18.4s, v29.4s, v18.4s - trn2 v20.4s, v30.4s, v20.4s - mul v29.8h, v18.8h, v1.8h - mul v30.8h, v20.8h, v3.8h - sqrdmulh v27.8h, v18.8h, v0.8h - sqrdmulh v28.8h, v20.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - sqdmulh v21.8h, v5.8h, v4.h[2] - sqdmulh v22.8h, v6.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v5.8h, v21.8h, v4.h[0] - mls v6.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v7.8h, v4.h[2] - sqdmulh v22.8h, v8.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v7.8h, v21.8h, v4.h[0] - mls v8.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v9.8h, v4.h[2] - sqdmulh v22.8h, v10.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v9.8h, v21.8h, v4.h[0] - mls v10.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v11.8h, v4.h[2] - sqdmulh v22.8h, v12.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v11.8h, v21.8h, v4.h[0] - mls v12.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v13.8h, v4.h[2] - sqdmulh v22.8h, v14.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v13.8h, v21.8h, v4.h[0] - mls v14.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v15.8h, v4.h[2] - sqdmulh v22.8h, v16.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v15.8h, v21.8h, v4.h[0] - mls v16.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v17.8h, v4.h[2] - sqdmulh v22.8h, v18.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v17.8h, v21.8h, v4.h[0] - mls v18.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v19.8h, v4.h[2] - sqdmulh v22.8h, v20.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v19.8h, v21.8h, v4.h[0] - mls v20.8h, v22.8h, v4.h[0] - mov v29.16b, v5.16b - trn1 v5.4s, v5.4s, v6.4s - trn2 v6.4s, v29.4s, v6.4s - mov v29.16b, v5.16b - trn1 v5.2d, v5.2d, v6.2d - trn2 v6.2d, v29.2d, v6.2d - mov v29.16b, v7.16b - trn1 v7.4s, v7.4s, v8.4s - trn2 v8.4s, v29.4s, v8.4s - mov v29.16b, v7.16b - trn1 v7.2d, v7.2d, v8.2d - trn2 v8.2d, v29.2d, v8.2d - mov v29.16b, v9.16b - trn1 v9.4s, v9.4s, v10.4s - trn2 v10.4s, v29.4s, v10.4s - mov v29.16b, v9.16b - trn1 v9.2d, v9.2d, v10.2d - trn2 v10.2d, v29.2d, v10.2d - mov v29.16b, v11.16b - trn1 v11.4s, v11.4s, v12.4s - trn2 v12.4s, v29.4s, v12.4s - mov v29.16b, v11.16b - trn1 v11.2d, v11.2d, v12.2d - trn2 v12.2d, v29.2d, v12.2d - mov v29.16b, v13.16b - trn1 v13.4s, v13.4s, v14.4s - trn2 v14.4s, v29.4s, v14.4s - mov v29.16b, v13.16b - trn1 v13.2d, v13.2d, v14.2d - trn2 v14.2d, v29.2d, v14.2d - mov v29.16b, v15.16b - trn1 v15.4s, v15.4s, v16.4s - trn2 v16.4s, v29.4s, v16.4s - mov v29.16b, v15.16b - trn1 v15.2d, v15.2d, v16.2d - trn2 v16.2d, v29.2d, v16.2d - mov v29.16b, v17.16b - trn1 v17.4s, v17.4s, v18.4s - trn2 v18.4s, v29.4s, v18.4s - mov v29.16b, v17.16b - trn1 v17.2d, v17.2d, v18.2d - trn2 v18.2d, v29.2d, v18.2d - mov v29.16b, v19.16b - trn1 v19.4s, v19.4s, v20.4s - trn2 v20.4s, v29.4s, v20.4s - mov v29.16b, v19.16b - trn1 v19.2d, v19.2d, v20.2d - trn2 v20.2d, v29.2d, v20.2d - stp q5, q6, [x0] - stp q7, q8, [x0, #32] - stp q9, q10, [x0, #64] - stp q11, q12, [x0, #96] - stp q13, q14, [x0, #128] - stp q15, q16, [x0, #160] - stp q17, q18, [x0, #192] - stp q19, q20, [x0, #224] - ldp q5, q6, [x1] - ldp q7, q8, [x1, #32] - ldp q9, q10, [x1, #64] - ldp q11, q12, [x1, #96] - ldp q13, q14, [x1, #128] - ldp q15, q16, [x1, #160] - ldp q17, q18, [x1, #192] - ldp q19, q20, [x1, #224] - ldr q0, [x2, #48] - ldr q1, [x3, #48] - mul v29.8h, v6.8h, v1.h[0] - mul v30.8h, v8.8h, v1.h[1] - sqrdmulh v21.8h, v6.8h, v0.h[0] - sqrdmulh v22.8h, v8.8h, v0.h[1] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v10.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[3] - sqrdmulh v23.8h, v10.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[3] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v14.8h, v1.h[4] - mul v30.8h, v16.8h, v1.h[5] - sqrdmulh v25.8h, v14.8h, v0.h[4] - sqrdmulh v26.8h, v16.8h, v0.h[5] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v18.8h, v1.h[6] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v18.8h, v0.h[6] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - ldr q0, [x2, #192] - ldr q2, [x2, #208] - ldr q1, [x3, #192] - ldr q3, [x3, #208] - mov v29.16b, v5.16b - mov v30.16b, v7.16b - trn1 v5.2d, v5.2d, v6.2d - trn1 v7.2d, v7.2d, v8.2d - trn2 v6.2d, v29.2d, v6.2d - trn2 v8.2d, v30.2d, v8.2d - mul v29.8h, v6.8h, v1.8h - mul v30.8h, v8.8h, v3.8h - sqrdmulh v21.8h, v6.8h, v0.8h - sqrdmulh v22.8h, v8.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - ldr q0, [x2, #224] - ldr q2, [x2, #240] - ldr q1, [x3, #224] - ldr q3, [x3, #240] - mov v29.16b, v9.16b - mov v30.16b, v11.16b - trn1 v9.2d, v9.2d, v10.2d - trn1 v11.2d, v11.2d, v12.2d - trn2 v10.2d, v29.2d, v10.2d - trn2 v12.2d, v30.2d, v12.2d - mul v29.8h, v10.8h, v1.8h - mul v30.8h, v12.8h, v3.8h - sqrdmulh v23.8h, v10.8h, v0.8h - sqrdmulh v24.8h, v12.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #256] - ldr q2, [x2, #272] - ldr q1, [x3, #256] - ldr q3, [x3, #272] - mov v29.16b, v13.16b - mov v30.16b, v15.16b - trn1 v13.2d, v13.2d, v14.2d - trn1 v15.2d, v15.2d, v16.2d - trn2 v14.2d, v29.2d, v14.2d - trn2 v16.2d, v30.2d, v16.2d - mul v29.8h, v14.8h, v1.8h - mul v30.8h, v16.8h, v3.8h - sqrdmulh v25.8h, v14.8h, v0.8h - sqrdmulh v26.8h, v16.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - ldr q0, [x2, #288] - ldr q2, [x2, #304] - ldr q1, [x3, #288] - ldr q3, [x3, #304] - mov v29.16b, v17.16b - mov v30.16b, v19.16b - trn1 v17.2d, v17.2d, v18.2d - trn1 v19.2d, v19.2d, v20.2d - trn2 v18.2d, v29.2d, v18.2d - trn2 v20.2d, v30.2d, v20.2d - mul v29.8h, v18.8h, v1.8h - mul v30.8h, v20.8h, v3.8h - sqrdmulh v27.8h, v18.8h, v0.8h - sqrdmulh v28.8h, v20.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - ldr q0, [x2, #448] - ldr q2, [x2, #464] - ldr q1, [x3, #448] - ldr q3, [x3, #464] - mov v29.16b, v5.16b - mov v30.16b, v7.16b - trn1 v5.4s, v5.4s, v6.4s - trn1 v7.4s, v7.4s, v8.4s - trn2 v6.4s, v29.4s, v6.4s - trn2 v8.4s, v30.4s, v8.4s - mul v29.8h, v6.8h, v1.8h - mul v30.8h, v8.8h, v3.8h - sqrdmulh v21.8h, v6.8h, v0.8h - sqrdmulh v22.8h, v8.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v21.8h, v21.8h, v29.8h - sub v22.8h, v22.8h, v30.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - ldr q0, [x2, #480] - ldr q2, [x2, #496] - ldr q1, [x3, #480] - ldr q3, [x3, #496] - mov v29.16b, v9.16b - mov v30.16b, v11.16b - trn1 v9.4s, v9.4s, v10.4s - trn1 v11.4s, v11.4s, v12.4s - trn2 v10.4s, v29.4s, v10.4s - trn2 v12.4s, v30.4s, v12.4s - mul v29.8h, v10.8h, v1.8h - mul v30.8h, v12.8h, v3.8h - sqrdmulh v23.8h, v10.8h, v0.8h - sqrdmulh v24.8h, v12.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v23.8h, v23.8h, v29.8h - sub v24.8h, v24.8h, v30.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #512] - ldr q2, [x2, #528] - ldr q1, [x3, #512] - ldr q3, [x3, #528] - mov v29.16b, v13.16b - mov v30.16b, v15.16b - trn1 v13.4s, v13.4s, v14.4s - trn1 v15.4s, v15.4s, v16.4s - trn2 v14.4s, v29.4s, v14.4s - trn2 v16.4s, v30.4s, v16.4s - mul v29.8h, v14.8h, v1.8h - mul v30.8h, v16.8h, v3.8h - sqrdmulh v25.8h, v14.8h, v0.8h - sqrdmulh v26.8h, v16.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v25.8h, v25.8h, v29.8h - sub v26.8h, v26.8h, v30.8h - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - ldr q0, [x2, #544] - ldr q2, [x2, #560] - ldr q1, [x3, #544] - ldr q3, [x3, #560] - mov v29.16b, v17.16b - mov v30.16b, v19.16b - trn1 v17.4s, v17.4s, v18.4s - trn1 v19.4s, v19.4s, v20.4s - trn2 v18.4s, v29.4s, v18.4s - trn2 v20.4s, v30.4s, v20.4s - mul v29.8h, v18.8h, v1.8h - mul v30.8h, v20.8h, v3.8h - sqrdmulh v27.8h, v18.8h, v0.8h - sqrdmulh v28.8h, v20.8h, v2.8h - sqrdmulh v29.8h, v29.8h, v4.h[0] - sqrdmulh v30.8h, v30.8h, v4.h[0] - sub v27.8h, v27.8h, v29.8h - sub v28.8h, v28.8h, v30.8h - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - sqdmulh v21.8h, v5.8h, v4.h[2] - sqdmulh v22.8h, v6.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v5.8h, v21.8h, v4.h[0] - mls v6.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v7.8h, v4.h[2] - sqdmulh v22.8h, v8.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v7.8h, v21.8h, v4.h[0] - mls v8.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v9.8h, v4.h[2] - sqdmulh v22.8h, v10.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v9.8h, v21.8h, v4.h[0] - mls v10.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v11.8h, v4.h[2] - sqdmulh v22.8h, v12.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v11.8h, v21.8h, v4.h[0] - mls v12.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v13.8h, v4.h[2] - sqdmulh v22.8h, v14.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v13.8h, v21.8h, v4.h[0] - mls v14.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v15.8h, v4.h[2] - sqdmulh v22.8h, v16.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v15.8h, v21.8h, v4.h[0] - mls v16.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v17.8h, v4.h[2] - sqdmulh v22.8h, v18.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v17.8h, v21.8h, v4.h[0] - mls v18.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v19.8h, v4.h[2] - sqdmulh v22.8h, v20.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v19.8h, v21.8h, v4.h[0] - mls v20.8h, v22.8h, v4.h[0] - mov v29.16b, v5.16b - trn1 v5.4s, v5.4s, v6.4s - trn2 v6.4s, v29.4s, v6.4s - mov v29.16b, v5.16b - trn1 v5.2d, v5.2d, v6.2d - trn2 v6.2d, v29.2d, v6.2d - mov v29.16b, v7.16b - trn1 v7.4s, v7.4s, v8.4s - trn2 v8.4s, v29.4s, v8.4s - mov v29.16b, v7.16b - trn1 v7.2d, v7.2d, v8.2d - trn2 v8.2d, v29.2d, v8.2d - mov v29.16b, v9.16b - trn1 v9.4s, v9.4s, v10.4s - trn2 v10.4s, v29.4s, v10.4s - mov v29.16b, v9.16b - trn1 v9.2d, v9.2d, v10.2d - trn2 v10.2d, v29.2d, v10.2d - mov v29.16b, v11.16b - trn1 v11.4s, v11.4s, v12.4s - trn2 v12.4s, v29.4s, v12.4s - mov v29.16b, v11.16b - trn1 v11.2d, v11.2d, v12.2d - trn2 v12.2d, v29.2d, v12.2d - mov v29.16b, v13.16b - trn1 v13.4s, v13.4s, v14.4s - trn2 v14.4s, v29.4s, v14.4s - mov v29.16b, v13.16b - trn1 v13.2d, v13.2d, v14.2d - trn2 v14.2d, v29.2d, v14.2d - mov v29.16b, v15.16b - trn1 v15.4s, v15.4s, v16.4s - trn2 v16.4s, v29.4s, v16.4s - mov v29.16b, v15.16b - trn1 v15.2d, v15.2d, v16.2d - trn2 v16.2d, v29.2d, v16.2d - mov v29.16b, v17.16b - trn1 v17.4s, v17.4s, v18.4s - trn2 v18.4s, v29.4s, v18.4s - mov v29.16b, v17.16b - trn1 v17.2d, v17.2d, v18.2d - trn2 v18.2d, v29.2d, v18.2d - mov v29.16b, v19.16b - trn1 v19.4s, v19.4s, v20.4s - trn2 v20.4s, v29.4s, v20.4s - mov v29.16b, v19.16b - trn1 v19.2d, v19.2d, v20.2d - trn2 v20.2d, v29.2d, v20.2d - stp q5, q6, [x1] - stp q7, q8, [x1, #32] - stp q9, q10, [x1, #64] - stp q11, q12, [x1, #96] - stp q13, q14, [x1, #128] - stp q15, q16, [x1, #160] - stp q17, q18, [x1, #192] - stp q19, q20, [x1, #224] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldr Q4, [x4] + ldr Q5, [x0] + ldr Q6, [x0, #32] + ldr Q7, [x0, #64] + ldr Q8, [x0, #96] + ldr Q9, [x0, #128] + ldr Q10, [x0, #160] + ldr Q11, [x0, #192] + ldr Q12, [x0, #224] + ldr Q13, [x1] + ldr Q14, [x1, #32] + ldr Q15, [x1, #64] + ldr Q16, [x1, #96] + ldr Q17, [x1, #128] + ldr Q18, [x1, #160] + ldr Q19, [x1, #192] + ldr Q20, [x1, #224] + ldr Q0, [x2] + ldr Q1, [x3] + mul V29.8H, V13.8H, V1.H[1] + mul V30.8H, V14.8H, V1.H[1] + sqrdmulh V21.8H, V13.8H, V0.H[1] + sqrdmulh V22.8H, V14.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V15.8H, V1.H[1] + mul V30.8H, V16.8H, V1.H[1] + sqrdmulh V23.8H, V15.8H, V0.H[1] + sqrdmulh V24.8H, V16.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V17.8H, V1.H[1] + mul V30.8H, V18.8H, V1.H[1] + sqrdmulh V25.8H, V17.8H, V0.H[1] + sqrdmulh V26.8H, V18.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[1] + mul V30.8H, V20.8H, V1.H[1] + sqrdmulh V27.8H, V19.8H, V0.H[1] + sqrdmulh V28.8H, V20.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V13.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V14.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V15.8H, V7.8H, V23.8H + add V7.8H, V7.8H, V23.8H + sub V16.8H, V8.8H, V24.8H + add V8.8H, V8.8H, V24.8H + sub V17.8H, V9.8H, V25.8H + add V9.8H, V9.8H, V25.8H + sub V18.8H, V10.8H, V26.8H + add V10.8H, V10.8H, V26.8H + sub V19.8H, V11.8H, V27.8H + add V11.8H, V11.8H, V27.8H + sub V20.8H, V12.8H, V28.8H + add V12.8H, V12.8H, V28.8H + mul V29.8H, V9.8H, V1.H[2] + mul V30.8H, V10.8H, V1.H[2] + sqrdmulh V21.8H, V9.8H, V0.H[2] + sqrdmulh V22.8H, V10.8H, V0.H[2] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V11.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[2] + sqrdmulh V23.8H, V11.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[2] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V17.8H, V1.H[3] + mul V30.8H, V18.8H, V1.H[3] + sqrdmulh V25.8H, V17.8H, V0.H[3] + sqrdmulh V26.8H, V18.8H, V0.H[3] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[3] + mul V30.8H, V20.8H, V1.H[3] + sqrdmulh V27.8H, V19.8H, V0.H[3] + sqrdmulh V28.8H, V20.8H, V0.H[3] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V9.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V10.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V11.8H, V7.8H, V23.8H + add V7.8H, V7.8H, V23.8H + sub V12.8H, V8.8H, V24.8H + add V8.8H, V8.8H, V24.8H + sub V17.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V18.8H, V14.8H, V26.8H + add V14.8H, V14.8H, V26.8H + sub V19.8H, V15.8H, V27.8H + add V15.8H, V15.8H, V27.8H + sub V20.8H, V16.8H, V28.8H + add V16.8H, V16.8H, V28.8H + mul V29.8H, V7.8H, V1.H[4] + mul V30.8H, V8.8H, V1.H[4] + sqrdmulh V21.8H, V7.8H, V0.H[4] + sqrdmulh V22.8H, V8.8H, V0.H[4] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V11.8H, V1.H[5] + mul V30.8H, V12.8H, V1.H[5] + sqrdmulh V23.8H, V11.8H, V0.H[5] + sqrdmulh V24.8H, V12.8H, V0.H[5] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V15.8H, V1.H[6] + mul V30.8H, V16.8H, V1.H[6] + sqrdmulh V25.8H, V15.8H, V0.H[6] + sqrdmulh V26.8H, V16.8H, V0.H[6] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[7] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V19.8H, V0.H[7] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V7.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V11.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V10.8H, V24.8H + add V10.8H, V10.8H, V24.8H + sub V15.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V14.8H, V26.8H + add V14.8H, V14.8H, V26.8H + sub V19.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V18.8H, V28.8H + add V18.8H, V18.8H, V28.8H + ldr Q0, [x2, #16] + ldr Q1, [x3, #16] + mul V29.8H, V6.8H, V1.H[0] + mul V30.8H, V8.8H, V1.H[1] + sqrdmulh V21.8H, V6.8H, V0.H[0] + sqrdmulh V22.8H, V8.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V10.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[3] + sqrdmulh V23.8H, V10.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[3] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V14.8H, V1.H[4] + mul V30.8H, V16.8H, V1.H[5] + sqrdmulh V25.8H, V14.8H, V0.H[4] + sqrdmulh V26.8H, V16.8H, V0.H[5] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V18.8H, V1.H[6] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V18.8H, V0.H[6] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + str Q5, [x0] + str Q6, [x0, #32] + str Q7, [x0, #64] + str Q8, [x0, #96] + str Q9, [x0, #128] + str Q10, [x0, #160] + str Q11, [x0, #192] + str Q12, [x0, #224] + str Q13, [x1] + str Q14, [x1, #32] + str Q15, [x1, #64] + str Q16, [x1, #96] + str Q17, [x1, #128] + str Q18, [x1, #160] + str Q19, [x1, #192] + str Q20, [x1, #224] + ldr Q5, [x0, #16] + ldr Q6, [x0, #48] + ldr Q7, [x0, #80] + ldr Q8, [x0, #112] + ldr Q9, [x0, #144] + ldr Q10, [x0, #176] + ldr Q11, [x0, #208] + ldr Q12, [x0, #240] + ldr Q13, [x1, #16] + ldr Q14, [x1, #48] + ldr Q15, [x1, #80] + ldr Q16, [x1, #112] + ldr Q17, [x1, #144] + ldr Q18, [x1, #176] + ldr Q19, [x1, #208] + ldr Q20, [x1, #240] + ldr Q0, [x2] + ldr Q1, [x3] + mul V29.8H, V13.8H, V1.H[1] + mul V30.8H, V14.8H, V1.H[1] + sqrdmulh V21.8H, V13.8H, V0.H[1] + sqrdmulh V22.8H, V14.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V15.8H, V1.H[1] + mul V30.8H, V16.8H, V1.H[1] + sqrdmulh V23.8H, V15.8H, V0.H[1] + sqrdmulh V24.8H, V16.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V17.8H, V1.H[1] + mul V30.8H, V18.8H, V1.H[1] + sqrdmulh V25.8H, V17.8H, V0.H[1] + sqrdmulh V26.8H, V18.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[1] + mul V30.8H, V20.8H, V1.H[1] + sqrdmulh V27.8H, V19.8H, V0.H[1] + sqrdmulh V28.8H, V20.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V13.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V14.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V15.8H, V7.8H, V23.8H + add V7.8H, V7.8H, V23.8H + sub V16.8H, V8.8H, V24.8H + add V8.8H, V8.8H, V24.8H + sub V17.8H, V9.8H, V25.8H + add V9.8H, V9.8H, V25.8H + sub V18.8H, V10.8H, V26.8H + add V10.8H, V10.8H, V26.8H + sub V19.8H, V11.8H, V27.8H + add V11.8H, V11.8H, V27.8H + sub V20.8H, V12.8H, V28.8H + add V12.8H, V12.8H, V28.8H + mul V29.8H, V9.8H, V1.H[2] + mul V30.8H, V10.8H, V1.H[2] + sqrdmulh V21.8H, V9.8H, V0.H[2] + sqrdmulh V22.8H, V10.8H, V0.H[2] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V11.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[2] + sqrdmulh V23.8H, V11.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[2] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V17.8H, V1.H[3] + mul V30.8H, V18.8H, V1.H[3] + sqrdmulh V25.8H, V17.8H, V0.H[3] + sqrdmulh V26.8H, V18.8H, V0.H[3] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[3] + mul V30.8H, V20.8H, V1.H[3] + sqrdmulh V27.8H, V19.8H, V0.H[3] + sqrdmulh V28.8H, V20.8H, V0.H[3] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V9.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V10.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V11.8H, V7.8H, V23.8H + add V7.8H, V7.8H, V23.8H + sub V12.8H, V8.8H, V24.8H + add V8.8H, V8.8H, V24.8H + sub V17.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V18.8H, V14.8H, V26.8H + add V14.8H, V14.8H, V26.8H + sub V19.8H, V15.8H, V27.8H + add V15.8H, V15.8H, V27.8H + sub V20.8H, V16.8H, V28.8H + add V16.8H, V16.8H, V28.8H + mul V29.8H, V7.8H, V1.H[4] + mul V30.8H, V8.8H, V1.H[4] + sqrdmulh V21.8H, V7.8H, V0.H[4] + sqrdmulh V22.8H, V8.8H, V0.H[4] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V11.8H, V1.H[5] + mul V30.8H, V12.8H, V1.H[5] + sqrdmulh V23.8H, V11.8H, V0.H[5] + sqrdmulh V24.8H, V12.8H, V0.H[5] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V15.8H, V1.H[6] + mul V30.8H, V16.8H, V1.H[6] + sqrdmulh V25.8H, V15.8H, V0.H[6] + sqrdmulh V26.8H, V16.8H, V0.H[6] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[7] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V19.8H, V0.H[7] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V7.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V11.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V10.8H, V24.8H + add V10.8H, V10.8H, V24.8H + sub V15.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V14.8H, V26.8H + add V14.8H, V14.8H, V26.8H + sub V19.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V18.8H, V28.8H + add V18.8H, V18.8H, V28.8H + ldr Q0, [x2, #16] + ldr Q1, [x3, #16] + mul V29.8H, V6.8H, V1.H[0] + mul V30.8H, V8.8H, V1.H[1] + sqrdmulh V21.8H, V6.8H, V0.H[0] + sqrdmulh V22.8H, V8.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V10.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[3] + sqrdmulh V23.8H, V10.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[3] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V14.8H, V1.H[4] + mul V30.8H, V16.8H, V1.H[5] + sqrdmulh V25.8H, V14.8H, V0.H[4] + sqrdmulh V26.8H, V16.8H, V0.H[5] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V18.8H, V1.H[6] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V18.8H, V0.H[6] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + str Q5, [x0, #16] + str Q6, [x0, #48] + str Q7, [x0, #80] + str Q8, [x0, #112] + str Q9, [x0, #144] + str Q10, [x0, #176] + str Q11, [x0, #208] + str Q12, [x0, #240] + str Q13, [x1, #16] + str Q14, [x1, #48] + str Q15, [x1, #80] + str Q16, [x1, #112] + str Q17, [x1, #144] + str Q18, [x1, #176] + str Q19, [x1, #208] + str Q20, [x1, #240] + ldp Q5, Q6, [x0] + ldp Q7, Q8, [x0, #32] + ldp Q9, Q10, [x0, #64] + ldp Q11, Q12, [x0, #96] + ldp Q13, Q14, [x0, #128] + ldp Q15, Q16, [x0, #160] + ldp Q17, Q18, [x0, #192] + ldp Q19, Q20, [x0, #224] + ldr Q0, [x2, #32] + ldr Q1, [x3, #32] + mul V29.8H, V6.8H, V1.H[0] + mul V30.8H, V8.8H, V1.H[1] + sqrdmulh V21.8H, V6.8H, V0.H[0] + sqrdmulh V22.8H, V8.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V10.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[3] + sqrdmulh V23.8H, V10.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[3] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V14.8H, V1.H[4] + mul V30.8H, V16.8H, V1.H[5] + sqrdmulh V25.8H, V14.8H, V0.H[4] + sqrdmulh V26.8H, V16.8H, V0.H[5] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V18.8H, V1.H[6] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V18.8H, V0.H[6] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + ldr Q0, [x2, #64] + ldr Q2, [x2, #80] + ldr Q1, [x3, #64] + ldr Q3, [x3, #80] + mov V29.16B, V5.16B + mov V30.16B, V7.16B + trn1 V5.2D, V5.2D, V6.2D + trn1 V7.2D, V7.2D, V8.2D + trn2 V6.2D, V29.2D, V6.2D + trn2 V8.2D, V30.2D, V8.2D + mul V29.8H, V6.8H, V1.8H + mul V30.8H, V8.8H, V3.8H + sqrdmulh V21.8H, V6.8H, V0.8H + sqrdmulh V22.8H, V8.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + ldr Q0, [x2, #96] + ldr Q2, [x2, #112] + ldr Q1, [x3, #96] + ldr Q3, [x3, #112] + mov V29.16B, V9.16B + mov V30.16B, V11.16B + trn1 V9.2D, V9.2D, V10.2D + trn1 V11.2D, V11.2D, V12.2D + trn2 V10.2D, V29.2D, V10.2D + trn2 V12.2D, V30.2D, V12.2D + mul V29.8H, V10.8H, V1.8H + mul V30.8H, V12.8H, V3.8H + sqrdmulh V23.8H, V10.8H, V0.8H + sqrdmulh V24.8H, V12.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #128] + ldr Q2, [x2, #144] + ldr Q1, [x3, #128] + ldr Q3, [x3, #144] + mov V29.16B, V13.16B + mov V30.16B, V15.16B + trn1 V13.2D, V13.2D, V14.2D + trn1 V15.2D, V15.2D, V16.2D + trn2 V14.2D, V29.2D, V14.2D + trn2 V16.2D, V30.2D, V16.2D + mul V29.8H, V14.8H, V1.8H + mul V30.8H, V16.8H, V3.8H + sqrdmulh V25.8H, V14.8H, V0.8H + sqrdmulh V26.8H, V16.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + ldr Q0, [x2, #160] + ldr Q2, [x2, #176] + ldr Q1, [x3, #160] + ldr Q3, [x3, #176] + mov V29.16B, V17.16B + mov V30.16B, V19.16B + trn1 V17.2D, V17.2D, V18.2D + trn1 V19.2D, V19.2D, V20.2D + trn2 V18.2D, V29.2D, V18.2D + trn2 V20.2D, V30.2D, V20.2D + mul V29.8H, V18.8H, V1.8H + mul V30.8H, V20.8H, V3.8H + sqrdmulh V27.8H, V18.8H, V0.8H + sqrdmulh V28.8H, V20.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + ldr Q0, [x2, #320] + ldr Q2, [x2, #336] + ldr Q1, [x3, #320] + ldr Q3, [x3, #336] + mov V29.16B, V5.16B + mov V30.16B, V7.16B + trn1 V5.4S, V5.4S, V6.4S + trn1 V7.4S, V7.4S, V8.4S + trn2 V6.4S, V29.4S, V6.4S + trn2 V8.4S, V30.4S, V8.4S + mul V29.8H, V6.8H, V1.8H + mul V30.8H, V8.8H, V3.8H + sqrdmulh V21.8H, V6.8H, V0.8H + sqrdmulh V22.8H, V8.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + ldr Q0, [x2, #352] + ldr Q2, [x2, #368] + ldr Q1, [x3, #352] + ldr Q3, [x3, #368] + mov V29.16B, V9.16B + mov V30.16B, V11.16B + trn1 V9.4S, V9.4S, V10.4S + trn1 V11.4S, V11.4S, V12.4S + trn2 V10.4S, V29.4S, V10.4S + trn2 V12.4S, V30.4S, V12.4S + mul V29.8H, V10.8H, V1.8H + mul V30.8H, V12.8H, V3.8H + sqrdmulh V23.8H, V10.8H, V0.8H + sqrdmulh V24.8H, V12.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #384] + ldr Q2, [x2, #400] + ldr Q1, [x3, #384] + ldr Q3, [x3, #400] + mov V29.16B, V13.16B + mov V30.16B, V15.16B + trn1 V13.4S, V13.4S, V14.4S + trn1 V15.4S, V15.4S, V16.4S + trn2 V14.4S, V29.4S, V14.4S + trn2 V16.4S, V30.4S, V16.4S + mul V29.8H, V14.8H, V1.8H + mul V30.8H, V16.8H, V3.8H + sqrdmulh V25.8H, V14.8H, V0.8H + sqrdmulh V26.8H, V16.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + ldr Q0, [x2, #416] + ldr Q2, [x2, #432] + ldr Q1, [x3, #416] + ldr Q3, [x3, #432] + mov V29.16B, V17.16B + mov V30.16B, V19.16B + trn1 V17.4S, V17.4S, V18.4S + trn1 V19.4S, V19.4S, V20.4S + trn2 V18.4S, V29.4S, V18.4S + trn2 V20.4S, V30.4S, V20.4S + mul V29.8H, V18.8H, V1.8H + mul V30.8H, V20.8H, V3.8H + sqrdmulh V27.8H, V18.8H, V0.8H + sqrdmulh V28.8H, V20.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + sqdmulh V21.8H, V5.8H, V4.H[2] + sqdmulh V22.8H, V6.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V5.8H, V21.8H, V4.H[0] + mls V6.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V7.8H, V4.H[2] + sqdmulh V22.8H, V8.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V7.8H, V21.8H, V4.H[0] + mls V8.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V9.8H, V4.H[2] + sqdmulh V22.8H, V10.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V9.8H, V21.8H, V4.H[0] + mls V10.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V11.8H, V4.H[2] + sqdmulh V22.8H, V12.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V11.8H, V21.8H, V4.H[0] + mls V12.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V13.8H, V4.H[2] + sqdmulh V22.8H, V14.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V13.8H, V21.8H, V4.H[0] + mls V14.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V15.8H, V4.H[2] + sqdmulh V22.8H, V16.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V15.8H, V21.8H, V4.H[0] + mls V16.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V17.8H, V4.H[2] + sqdmulh V22.8H, V18.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V17.8H, V21.8H, V4.H[0] + mls V18.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V19.8H, V4.H[2] + sqdmulh V22.8H, V20.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V19.8H, V21.8H, V4.H[0] + mls V20.8H, V22.8H, V4.H[0] + mov V29.16B, V5.16B + trn1 V5.4S, V5.4S, V6.4S + trn2 V6.4S, V29.4S, V6.4S + mov V29.16B, V5.16B + trn1 V5.2D, V5.2D, V6.2D + trn2 V6.2D, V29.2D, V6.2D + mov V29.16B, V7.16B + trn1 V7.4S, V7.4S, V8.4S + trn2 V8.4S, V29.4S, V8.4S + mov V29.16B, V7.16B + trn1 V7.2D, V7.2D, V8.2D + trn2 V8.2D, V29.2D, V8.2D + mov V29.16B, V9.16B + trn1 V9.4S, V9.4S, V10.4S + trn2 V10.4S, V29.4S, V10.4S + mov V29.16B, V9.16B + trn1 V9.2D, V9.2D, V10.2D + trn2 V10.2D, V29.2D, V10.2D + mov V29.16B, V11.16B + trn1 V11.4S, V11.4S, V12.4S + trn2 V12.4S, V29.4S, V12.4S + mov V29.16B, V11.16B + trn1 V11.2D, V11.2D, V12.2D + trn2 V12.2D, V29.2D, V12.2D + mov V29.16B, V13.16B + trn1 V13.4S, V13.4S, V14.4S + trn2 V14.4S, V29.4S, V14.4S + mov V29.16B, V13.16B + trn1 V13.2D, V13.2D, V14.2D + trn2 V14.2D, V29.2D, V14.2D + mov V29.16B, V15.16B + trn1 V15.4S, V15.4S, V16.4S + trn2 V16.4S, V29.4S, V16.4S + mov V29.16B, V15.16B + trn1 V15.2D, V15.2D, V16.2D + trn2 V16.2D, V29.2D, V16.2D + mov V29.16B, V17.16B + trn1 V17.4S, V17.4S, V18.4S + trn2 V18.4S, V29.4S, V18.4S + mov V29.16B, V17.16B + trn1 V17.2D, V17.2D, V18.2D + trn2 V18.2D, V29.2D, V18.2D + mov V29.16B, V19.16B + trn1 V19.4S, V19.4S, V20.4S + trn2 V20.4S, V29.4S, V20.4S + mov V29.16B, V19.16B + trn1 V19.2D, V19.2D, V20.2D + trn2 V20.2D, V29.2D, V20.2D + stp Q5, Q6, [x0] + stp Q7, Q8, [x0, #32] + stp Q9, Q10, [x0, #64] + stp Q11, Q12, [x0, #96] + stp Q13, Q14, [x0, #128] + stp Q15, Q16, [x0, #160] + stp Q17, Q18, [x0, #192] + stp Q19, Q20, [x0, #224] + ldp Q5, Q6, [x1] + ldp Q7, Q8, [x1, #32] + ldp Q9, Q10, [x1, #64] + ldp Q11, Q12, [x1, #96] + ldp Q13, Q14, [x1, #128] + ldp Q15, Q16, [x1, #160] + ldp Q17, Q18, [x1, #192] + ldp Q19, Q20, [x1, #224] + ldr Q0, [x2, #48] + ldr Q1, [x3, #48] + mul V29.8H, V6.8H, V1.H[0] + mul V30.8H, V8.8H, V1.H[1] + sqrdmulh V21.8H, V6.8H, V0.H[0] + sqrdmulh V22.8H, V8.8H, V0.H[1] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V10.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[3] + sqrdmulh V23.8H, V10.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[3] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V14.8H, V1.H[4] + mul V30.8H, V16.8H, V1.H[5] + sqrdmulh V25.8H, V14.8H, V0.H[4] + sqrdmulh V26.8H, V16.8H, V0.H[5] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V18.8H, V1.H[6] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V18.8H, V0.H[6] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + ldr Q0, [x2, #192] + ldr Q2, [x2, #208] + ldr Q1, [x3, #192] + ldr Q3, [x3, #208] + mov V29.16B, V5.16B + mov V30.16B, V7.16B + trn1 V5.2D, V5.2D, V6.2D + trn1 V7.2D, V7.2D, V8.2D + trn2 V6.2D, V29.2D, V6.2D + trn2 V8.2D, V30.2D, V8.2D + mul V29.8H, V6.8H, V1.8H + mul V30.8H, V8.8H, V3.8H + sqrdmulh V21.8H, V6.8H, V0.8H + sqrdmulh V22.8H, V8.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + ldr Q0, [x2, #224] + ldr Q2, [x2, #240] + ldr Q1, [x3, #224] + ldr Q3, [x3, #240] + mov V29.16B, V9.16B + mov V30.16B, V11.16B + trn1 V9.2D, V9.2D, V10.2D + trn1 V11.2D, V11.2D, V12.2D + trn2 V10.2D, V29.2D, V10.2D + trn2 V12.2D, V30.2D, V12.2D + mul V29.8H, V10.8H, V1.8H + mul V30.8H, V12.8H, V3.8H + sqrdmulh V23.8H, V10.8H, V0.8H + sqrdmulh V24.8H, V12.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #256] + ldr Q2, [x2, #272] + ldr Q1, [x3, #256] + ldr Q3, [x3, #272] + mov V29.16B, V13.16B + mov V30.16B, V15.16B + trn1 V13.2D, V13.2D, V14.2D + trn1 V15.2D, V15.2D, V16.2D + trn2 V14.2D, V29.2D, V14.2D + trn2 V16.2D, V30.2D, V16.2D + mul V29.8H, V14.8H, V1.8H + mul V30.8H, V16.8H, V3.8H + sqrdmulh V25.8H, V14.8H, V0.8H + sqrdmulh V26.8H, V16.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + ldr Q0, [x2, #288] + ldr Q2, [x2, #304] + ldr Q1, [x3, #288] + ldr Q3, [x3, #304] + mov V29.16B, V17.16B + mov V30.16B, V19.16B + trn1 V17.2D, V17.2D, V18.2D + trn1 V19.2D, V19.2D, V20.2D + trn2 V18.2D, V29.2D, V18.2D + trn2 V20.2D, V30.2D, V20.2D + mul V29.8H, V18.8H, V1.8H + mul V30.8H, V20.8H, V3.8H + sqrdmulh V27.8H, V18.8H, V0.8H + sqrdmulh V28.8H, V20.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + ldr Q0, [x2, #448] + ldr Q2, [x2, #464] + ldr Q1, [x3, #448] + ldr Q3, [x3, #464] + mov V29.16B, V5.16B + mov V30.16B, V7.16B + trn1 V5.4S, V5.4S, V6.4S + trn1 V7.4S, V7.4S, V8.4S + trn2 V6.4S, V29.4S, V6.4S + trn2 V8.4S, V30.4S, V8.4S + mul V29.8H, V6.8H, V1.8H + mul V30.8H, V8.8H, V3.8H + sqrdmulh V21.8H, V6.8H, V0.8H + sqrdmulh V22.8H, V8.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V21.8H, V21.8H, V29.8H + sub V22.8H, V22.8H, V30.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + ldr Q0, [x2, #480] + ldr Q2, [x2, #496] + ldr Q1, [x3, #480] + ldr Q3, [x3, #496] + mov V29.16B, V9.16B + mov V30.16B, V11.16B + trn1 V9.4S, V9.4S, V10.4S + trn1 V11.4S, V11.4S, V12.4S + trn2 V10.4S, V29.4S, V10.4S + trn2 V12.4S, V30.4S, V12.4S + mul V29.8H, V10.8H, V1.8H + mul V30.8H, V12.8H, V3.8H + sqrdmulh V23.8H, V10.8H, V0.8H + sqrdmulh V24.8H, V12.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V23.8H, V23.8H, V29.8H + sub V24.8H, V24.8H, V30.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #512] + ldr Q2, [x2, #528] + ldr Q1, [x3, #512] + ldr Q3, [x3, #528] + mov V29.16B, V13.16B + mov V30.16B, V15.16B + trn1 V13.4S, V13.4S, V14.4S + trn1 V15.4S, V15.4S, V16.4S + trn2 V14.4S, V29.4S, V14.4S + trn2 V16.4S, V30.4S, V16.4S + mul V29.8H, V14.8H, V1.8H + mul V30.8H, V16.8H, V3.8H + sqrdmulh V25.8H, V14.8H, V0.8H + sqrdmulh V26.8H, V16.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V25.8H, V25.8H, V29.8H + sub V26.8H, V26.8H, V30.8H + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + ldr Q0, [x2, #544] + ldr Q2, [x2, #560] + ldr Q1, [x3, #544] + ldr Q3, [x3, #560] + mov V29.16B, V17.16B + mov V30.16B, V19.16B + trn1 V17.4S, V17.4S, V18.4S + trn1 V19.4S, V19.4S, V20.4S + trn2 V18.4S, V29.4S, V18.4S + trn2 V20.4S, V30.4S, V20.4S + mul V29.8H, V18.8H, V1.8H + mul V30.8H, V20.8H, V3.8H + sqrdmulh V27.8H, V18.8H, V0.8H + sqrdmulh V28.8H, V20.8H, V2.8H + sqrdmulh V29.8H, V29.8H, V4.H[0] + sqrdmulh V30.8H, V30.8H, V4.H[0] + sub V27.8H, V27.8H, V29.8H + sub V28.8H, V28.8H, V30.8H + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + sqdmulh V21.8H, V5.8H, V4.H[2] + sqdmulh V22.8H, V6.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V5.8H, V21.8H, V4.H[0] + mls V6.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V7.8H, V4.H[2] + sqdmulh V22.8H, V8.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V7.8H, V21.8H, V4.H[0] + mls V8.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V9.8H, V4.H[2] + sqdmulh V22.8H, V10.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V9.8H, V21.8H, V4.H[0] + mls V10.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V11.8H, V4.H[2] + sqdmulh V22.8H, V12.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V11.8H, V21.8H, V4.H[0] + mls V12.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V13.8H, V4.H[2] + sqdmulh V22.8H, V14.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V13.8H, V21.8H, V4.H[0] + mls V14.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V15.8H, V4.H[2] + sqdmulh V22.8H, V16.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V15.8H, V21.8H, V4.H[0] + mls V16.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V17.8H, V4.H[2] + sqdmulh V22.8H, V18.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V17.8H, V21.8H, V4.H[0] + mls V18.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V19.8H, V4.H[2] + sqdmulh V22.8H, V20.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V19.8H, V21.8H, V4.H[0] + mls V20.8H, V22.8H, V4.H[0] + mov V29.16B, V5.16B + trn1 V5.4S, V5.4S, V6.4S + trn2 V6.4S, V29.4S, V6.4S + mov V29.16B, V5.16B + trn1 V5.2D, V5.2D, V6.2D + trn2 V6.2D, V29.2D, V6.2D + mov V29.16B, V7.16B + trn1 V7.4S, V7.4S, V8.4S + trn2 V8.4S, V29.4S, V8.4S + mov V29.16B, V7.16B + trn1 V7.2D, V7.2D, V8.2D + trn2 V8.2D, V29.2D, V8.2D + mov V29.16B, V9.16B + trn1 V9.4S, V9.4S, V10.4S + trn2 V10.4S, V29.4S, V10.4S + mov V29.16B, V9.16B + trn1 V9.2D, V9.2D, V10.2D + trn2 V10.2D, V29.2D, V10.2D + mov V29.16B, V11.16B + trn1 V11.4S, V11.4S, V12.4S + trn2 V12.4S, V29.4S, V12.4S + mov V29.16B, V11.16B + trn1 V11.2D, V11.2D, V12.2D + trn2 V12.2D, V29.2D, V12.2D + mov V29.16B, V13.16B + trn1 V13.4S, V13.4S, V14.4S + trn2 V14.4S, V29.4S, V14.4S + mov V29.16B, V13.16B + trn1 V13.2D, V13.2D, V14.2D + trn2 V14.2D, V29.2D, V14.2D + mov V29.16B, V15.16B + trn1 V15.4S, V15.4S, V16.4S + trn2 V16.4S, V29.4S, V16.4S + mov V29.16B, V15.16B + trn1 V15.2D, V15.2D, V16.2D + trn2 V16.2D, V29.2D, V16.2D + mov V29.16B, V17.16B + trn1 V17.4S, V17.4S, V18.4S + trn2 V18.4S, V29.4S, V18.4S + mov V29.16B, V17.16B + trn1 V17.2D, V17.2D, V18.2D + trn2 V18.2D, V29.2D, V18.2D + mov V29.16B, V19.16B + trn1 V19.4S, V19.4S, V20.4S + trn2 V20.4S, V29.4S, V20.4S + mov V29.16B, V19.16B + trn1 V19.2D, V19.2D, V20.2D + trn2 V20.2D, V29.2D, V20.2D + stp Q5, Q6, [x1] + stp Q7, Q8, [x1, #32] + stp Q9, Q10, [x1, #64] + stp Q11, Q12, [x1, #96] + stp Q13, Q14, [x1, #128] + stp Q15, Q16, [x1, #160] + stp Q17, Q18, [x1, #192] + stp Q19, Q20, [x1, #224] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_aarch64_zetas_inv DCW 0x06a5, 0x06a5, 0x070f, 0x070f, 0x05b4, 0x05b4, 0x0943, 0x0943 @@ -1415,7 +1415,7 @@ L_mlkem_aarch64_zetas_inv DCW 0x0082, 0x0642, 0x074f, 0x033d, 0x0b82, 0x0bf9, 0x052d, 0x0ac4 DCW 0x0745, 0x05c2, 0x04b2, 0x093f, 0x0c4b, 0x06d8, 0x0a93, 0x00ab DCW 0x0c37, 0x0be2, 0x0773, 0x072c, 0x05ed, 0x0167, 0x02f6, 0x05a1 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_aarch64_zetas_inv_qinv DCW 0xa5a5, 0xa5a5, 0x440f, 0x440f, 0xe1b4, 0xe1b4, 0xa243, 0xa243 @@ -1460,10 +1460,10 @@ L_mlkem_aarch64_zetas_inv_qinv mlkem_invntt PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x2, L_mlkem_aarch64_zetas_inv add x2, x2, L_mlkem_aarch64_zetas_inv adrp x3, L_mlkem_aarch64_zetas_inv_qinv @@ -1471,1411 +1471,1411 @@ mlkem_invntt PROC adrp x4, L_mlkem_aarch64_consts add x4, x4, L_mlkem_aarch64_consts add x1, x0, #0x100 - ldr q8, [x4] - ldp q9, q10, [x0] - ldp q11, q12, [x0, #32] - ldp q13, q14, [x0, #64] - ldp q15, q16, [x0, #96] - ldp q17, q18, [x0, #128] - ldp q19, q20, [x0, #160] - ldp q21, q22, [x0, #192] - ldp q23, q24, [x0, #224] - mov v25.16b, v9.16b - trn1 v9.2d, v9.2d, v10.2d - trn2 v10.2d, v25.2d, v10.2d - mov v25.16b, v9.16b - trn1 v9.4s, v9.4s, v10.4s - trn2 v10.4s, v25.4s, v10.4s - mov v25.16b, v11.16b - trn1 v11.2d, v11.2d, v12.2d - trn2 v12.2d, v25.2d, v12.2d - mov v25.16b, v11.16b - trn1 v11.4s, v11.4s, v12.4s - trn2 v12.4s, v25.4s, v12.4s - mov v25.16b, v13.16b - trn1 v13.2d, v13.2d, v14.2d - trn2 v14.2d, v25.2d, v14.2d - mov v25.16b, v13.16b - trn1 v13.4s, v13.4s, v14.4s - trn2 v14.4s, v25.4s, v14.4s - mov v25.16b, v15.16b - trn1 v15.2d, v15.2d, v16.2d - trn2 v16.2d, v25.2d, v16.2d - mov v25.16b, v15.16b - trn1 v15.4s, v15.4s, v16.4s - trn2 v16.4s, v25.4s, v16.4s - mov v25.16b, v17.16b - trn1 v17.2d, v17.2d, v18.2d - trn2 v18.2d, v25.2d, v18.2d - mov v25.16b, v17.16b - trn1 v17.4s, v17.4s, v18.4s - trn2 v18.4s, v25.4s, v18.4s - mov v25.16b, v19.16b - trn1 v19.2d, v19.2d, v20.2d - trn2 v20.2d, v25.2d, v20.2d - mov v25.16b, v19.16b - trn1 v19.4s, v19.4s, v20.4s - trn2 v20.4s, v25.4s, v20.4s - mov v25.16b, v21.16b - trn1 v21.2d, v21.2d, v22.2d - trn2 v22.2d, v25.2d, v22.2d - mov v25.16b, v21.16b - trn1 v21.4s, v21.4s, v22.4s - trn2 v22.4s, v25.4s, v22.4s - mov v25.16b, v23.16b - trn1 v23.2d, v23.2d, v24.2d - trn2 v24.2d, v25.2d, v24.2d - mov v25.16b, v23.16b - trn1 v23.4s, v23.4s, v24.4s - trn2 v24.4s, v25.4s, v24.4s - ldr q0, [x2] - ldr q1, [x2, #16] - ldr q2, [x3] - ldr q3, [x3, #16] - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v10.8h, v26.8h, v0.8h - sqrdmulh v12.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v10.8h, v10.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - ldr q0, [x2, #32] - ldr q1, [x2, #48] - ldr q2, [x3, #32] - ldr q3, [x3, #48] - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v14.8h, v26.8h, v0.8h - sqrdmulh v16.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v14.8h, v14.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - ldr q0, [x2, #64] - ldr q1, [x2, #80] - ldr q2, [x3, #64] - ldr q3, [x3, #80] - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v18.8h, v26.8h, v0.8h - sqrdmulh v20.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v18.8h, v18.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - ldr q0, [x2, #96] - ldr q1, [x2, #112] - ldr q2, [x3, #96] - ldr q3, [x3, #112] - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v22.8h, v26.8h, v0.8h - sqrdmulh v24.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v22.8h, v22.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #256] - ldr q1, [x2, #272] - ldr q2, [x3, #256] - ldr q3, [x3, #272] - mov v25.16b, v9.16b - mov v26.16b, v11.16b - trn1 v9.4s, v9.4s, v10.4s - trn1 v11.4s, v11.4s, v12.4s - trn2 v10.4s, v25.4s, v10.4s - trn2 v12.4s, v26.4s, v12.4s - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v10.8h, v26.8h, v0.8h - sqrdmulh v12.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v10.8h, v10.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - ldr q0, [x2, #288] - ldr q1, [x2, #304] - ldr q2, [x3, #288] - ldr q3, [x3, #304] - mov v25.16b, v13.16b - mov v26.16b, v15.16b - trn1 v13.4s, v13.4s, v14.4s - trn1 v15.4s, v15.4s, v16.4s - trn2 v14.4s, v25.4s, v14.4s - trn2 v16.4s, v26.4s, v16.4s - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v14.8h, v26.8h, v0.8h - sqrdmulh v16.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v14.8h, v14.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - ldr q0, [x2, #320] - ldr q1, [x2, #336] - ldr q2, [x3, #320] - ldr q3, [x3, #336] - mov v25.16b, v17.16b - mov v26.16b, v19.16b - trn1 v17.4s, v17.4s, v18.4s - trn1 v19.4s, v19.4s, v20.4s - trn2 v18.4s, v25.4s, v18.4s - trn2 v20.4s, v26.4s, v20.4s - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v18.8h, v26.8h, v0.8h - sqrdmulh v20.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v18.8h, v18.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - ldr q0, [x2, #352] - ldr q1, [x2, #368] - ldr q2, [x3, #352] - ldr q3, [x3, #368] - mov v25.16b, v21.16b - mov v26.16b, v23.16b - trn1 v21.4s, v21.4s, v22.4s - trn1 v23.4s, v23.4s, v24.4s - trn2 v22.4s, v25.4s, v22.4s - trn2 v24.4s, v26.4s, v24.4s - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v22.8h, v26.8h, v0.8h - sqrdmulh v24.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v22.8h, v22.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #512] - ldr q2, [x3, #512] - mov v25.16b, v9.16b - mov v26.16b, v11.16b - trn1 v9.2d, v9.2d, v10.2d - trn1 v11.2d, v11.2d, v12.2d - trn2 v10.2d, v25.2d, v10.2d - trn2 v12.2d, v26.2d, v12.2d - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.h[0] - mul v27.8h, v28.8h, v2.h[1] - sqrdmulh v10.8h, v26.8h, v0.h[0] - sqrdmulh v12.8h, v28.8h, v0.h[1] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v10.8h, v10.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - mov v25.16b, v13.16b - mov v26.16b, v15.16b - trn1 v13.2d, v13.2d, v14.2d - trn1 v15.2d, v15.2d, v16.2d - trn2 v14.2d, v25.2d, v14.2d - trn2 v16.2d, v26.2d, v16.2d - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.h[2] - mul v27.8h, v28.8h, v2.h[3] - sqrdmulh v14.8h, v26.8h, v0.h[2] - sqrdmulh v16.8h, v28.8h, v0.h[3] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v14.8h, v14.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - mov v25.16b, v17.16b - mov v26.16b, v19.16b - trn1 v17.2d, v17.2d, v18.2d - trn1 v19.2d, v19.2d, v20.2d - trn2 v18.2d, v25.2d, v18.2d - trn2 v20.2d, v26.2d, v20.2d - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.h[4] - mul v27.8h, v28.8h, v2.h[5] - sqrdmulh v18.8h, v26.8h, v0.h[4] - sqrdmulh v20.8h, v28.8h, v0.h[5] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v18.8h, v18.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - mov v25.16b, v21.16b - mov v26.16b, v23.16b - trn1 v21.2d, v21.2d, v22.2d - trn1 v23.2d, v23.2d, v24.2d - trn2 v22.2d, v25.2d, v22.2d - trn2 v24.2d, v26.2d, v24.2d - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.h[6] - mul v27.8h, v28.8h, v2.h[7] - sqrdmulh v22.8h, v26.8h, v0.h[6] - sqrdmulh v24.8h, v28.8h, v0.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v22.8h, v22.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - sqdmulh v25.8h, v9.8h, v8.h[2] - sqdmulh v26.8h, v11.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v9.8h, v25.8h, v8.h[0] - mls v11.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v13.8h, v8.h[2] - sqdmulh v26.8h, v15.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v13.8h, v25.8h, v8.h[0] - mls v15.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v17.8h, v8.h[2] - sqdmulh v26.8h, v19.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v17.8h, v25.8h, v8.h[0] - mls v19.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v21.8h, v8.h[2] - sqdmulh v26.8h, v23.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v21.8h, v25.8h, v8.h[0] - mls v23.8h, v26.8h, v8.h[0] - stp q9, q10, [x0] - stp q11, q12, [x0, #32] - stp q13, q14, [x0, #64] - stp q15, q16, [x0, #96] - stp q17, q18, [x0, #128] - stp q19, q20, [x0, #160] - stp q21, q22, [x0, #192] - stp q23, q24, [x0, #224] - ldp q9, q10, [x1] - ldp q11, q12, [x1, #32] - ldp q13, q14, [x1, #64] - ldp q15, q16, [x1, #96] - ldp q17, q18, [x1, #128] - ldp q19, q20, [x1, #160] - ldp q21, q22, [x1, #192] - ldp q23, q24, [x1, #224] - mov v25.16b, v9.16b - trn1 v9.2d, v9.2d, v10.2d - trn2 v10.2d, v25.2d, v10.2d - mov v25.16b, v9.16b - trn1 v9.4s, v9.4s, v10.4s - trn2 v10.4s, v25.4s, v10.4s - mov v25.16b, v11.16b - trn1 v11.2d, v11.2d, v12.2d - trn2 v12.2d, v25.2d, v12.2d - mov v25.16b, v11.16b - trn1 v11.4s, v11.4s, v12.4s - trn2 v12.4s, v25.4s, v12.4s - mov v25.16b, v13.16b - trn1 v13.2d, v13.2d, v14.2d - trn2 v14.2d, v25.2d, v14.2d - mov v25.16b, v13.16b - trn1 v13.4s, v13.4s, v14.4s - trn2 v14.4s, v25.4s, v14.4s - mov v25.16b, v15.16b - trn1 v15.2d, v15.2d, v16.2d - trn2 v16.2d, v25.2d, v16.2d - mov v25.16b, v15.16b - trn1 v15.4s, v15.4s, v16.4s - trn2 v16.4s, v25.4s, v16.4s - mov v25.16b, v17.16b - trn1 v17.2d, v17.2d, v18.2d - trn2 v18.2d, v25.2d, v18.2d - mov v25.16b, v17.16b - trn1 v17.4s, v17.4s, v18.4s - trn2 v18.4s, v25.4s, v18.4s - mov v25.16b, v19.16b - trn1 v19.2d, v19.2d, v20.2d - trn2 v20.2d, v25.2d, v20.2d - mov v25.16b, v19.16b - trn1 v19.4s, v19.4s, v20.4s - trn2 v20.4s, v25.4s, v20.4s - mov v25.16b, v21.16b - trn1 v21.2d, v21.2d, v22.2d - trn2 v22.2d, v25.2d, v22.2d - mov v25.16b, v21.16b - trn1 v21.4s, v21.4s, v22.4s - trn2 v22.4s, v25.4s, v22.4s - mov v25.16b, v23.16b - trn1 v23.2d, v23.2d, v24.2d - trn2 v24.2d, v25.2d, v24.2d - mov v25.16b, v23.16b - trn1 v23.4s, v23.4s, v24.4s - trn2 v24.4s, v25.4s, v24.4s - ldr q0, [x2, #128] - ldr q1, [x2, #144] - ldr q2, [x3, #128] - ldr q3, [x3, #144] - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v10.8h, v26.8h, v0.8h - sqrdmulh v12.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v10.8h, v10.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - ldr q0, [x2, #160] - ldr q1, [x2, #176] - ldr q2, [x3, #160] - ldr q3, [x3, #176] - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v14.8h, v26.8h, v0.8h - sqrdmulh v16.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v14.8h, v14.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - ldr q0, [x2, #192] - ldr q1, [x2, #208] - ldr q2, [x3, #192] - ldr q3, [x3, #208] - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v18.8h, v26.8h, v0.8h - sqrdmulh v20.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v18.8h, v18.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - ldr q0, [x2, #224] - ldr q1, [x2, #240] - ldr q2, [x3, #224] - ldr q3, [x3, #240] - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v22.8h, v26.8h, v0.8h - sqrdmulh v24.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v22.8h, v22.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #384] - ldr q1, [x2, #400] - ldr q2, [x3, #384] - ldr q3, [x3, #400] - mov v25.16b, v9.16b - mov v26.16b, v11.16b - trn1 v9.4s, v9.4s, v10.4s - trn1 v11.4s, v11.4s, v12.4s - trn2 v10.4s, v25.4s, v10.4s - trn2 v12.4s, v26.4s, v12.4s - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v10.8h, v26.8h, v0.8h - sqrdmulh v12.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v10.8h, v10.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - ldr q0, [x2, #416] - ldr q1, [x2, #432] - ldr q2, [x3, #416] - ldr q3, [x3, #432] - mov v25.16b, v13.16b - mov v26.16b, v15.16b - trn1 v13.4s, v13.4s, v14.4s - trn1 v15.4s, v15.4s, v16.4s - trn2 v14.4s, v25.4s, v14.4s - trn2 v16.4s, v26.4s, v16.4s - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v14.8h, v26.8h, v0.8h - sqrdmulh v16.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v14.8h, v14.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - ldr q0, [x2, #448] - ldr q1, [x2, #464] - ldr q2, [x3, #448] - ldr q3, [x3, #464] - mov v25.16b, v17.16b - mov v26.16b, v19.16b - trn1 v17.4s, v17.4s, v18.4s - trn1 v19.4s, v19.4s, v20.4s - trn2 v18.4s, v25.4s, v18.4s - trn2 v20.4s, v26.4s, v20.4s - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v18.8h, v26.8h, v0.8h - sqrdmulh v20.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v18.8h, v18.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - ldr q0, [x2, #480] - ldr q1, [x2, #496] - ldr q2, [x3, #480] - ldr q3, [x3, #496] - mov v25.16b, v21.16b - mov v26.16b, v23.16b - trn1 v21.4s, v21.4s, v22.4s - trn1 v23.4s, v23.4s, v24.4s - trn2 v22.4s, v25.4s, v22.4s - trn2 v24.4s, v26.4s, v24.4s - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v22.8h, v26.8h, v0.8h - sqrdmulh v24.8h, v28.8h, v1.8h - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v22.8h, v22.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #528] - ldr q2, [x3, #528] - mov v25.16b, v9.16b - mov v26.16b, v11.16b - trn1 v9.2d, v9.2d, v10.2d - trn1 v11.2d, v11.2d, v12.2d - trn2 v10.2d, v25.2d, v10.2d - trn2 v12.2d, v26.2d, v12.2d - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.h[0] - mul v27.8h, v28.8h, v2.h[1] - sqrdmulh v10.8h, v26.8h, v0.h[0] - sqrdmulh v12.8h, v28.8h, v0.h[1] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v10.8h, v10.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - mov v25.16b, v13.16b - mov v26.16b, v15.16b - trn1 v13.2d, v13.2d, v14.2d - trn1 v15.2d, v15.2d, v16.2d - trn2 v14.2d, v25.2d, v14.2d - trn2 v16.2d, v26.2d, v16.2d - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.h[2] - mul v27.8h, v28.8h, v2.h[3] - sqrdmulh v14.8h, v26.8h, v0.h[2] - sqrdmulh v16.8h, v28.8h, v0.h[3] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v14.8h, v14.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - mov v25.16b, v17.16b - mov v26.16b, v19.16b - trn1 v17.2d, v17.2d, v18.2d - trn1 v19.2d, v19.2d, v20.2d - trn2 v18.2d, v25.2d, v18.2d - trn2 v20.2d, v26.2d, v20.2d - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.h[4] - mul v27.8h, v28.8h, v2.h[5] - sqrdmulh v18.8h, v26.8h, v0.h[4] - sqrdmulh v20.8h, v28.8h, v0.h[5] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v18.8h, v18.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - mov v25.16b, v21.16b - mov v26.16b, v23.16b - trn1 v21.2d, v21.2d, v22.2d - trn1 v23.2d, v23.2d, v24.2d - trn2 v22.2d, v25.2d, v22.2d - trn2 v24.2d, v26.2d, v24.2d - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.h[6] - mul v27.8h, v28.8h, v2.h[7] - sqrdmulh v22.8h, v26.8h, v0.h[6] - sqrdmulh v24.8h, v28.8h, v0.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v22.8h, v22.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - sqdmulh v25.8h, v9.8h, v8.h[2] - sqdmulh v26.8h, v11.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v9.8h, v25.8h, v8.h[0] - mls v11.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v13.8h, v8.h[2] - sqdmulh v26.8h, v15.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v13.8h, v25.8h, v8.h[0] - mls v15.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v17.8h, v8.h[2] - sqdmulh v26.8h, v19.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v17.8h, v25.8h, v8.h[0] - mls v19.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v21.8h, v8.h[2] - sqdmulh v26.8h, v23.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v21.8h, v25.8h, v8.h[0] - mls v23.8h, v26.8h, v8.h[0] - stp q9, q10, [x1] - stp q11, q12, [x1, #32] - stp q13, q14, [x1, #64] - stp q15, q16, [x1, #96] - stp q17, q18, [x1, #128] - stp q19, q20, [x1, #160] - stp q21, q22, [x1, #192] - stp q23, q24, [x1, #224] - ldr q4, [x2, #544] - ldr q5, [x2, #560] - ldr q6, [x3, #544] - ldr q7, [x3, #560] - ldr q9, [x0] - ldr q10, [x0, #32] - ldr q11, [x0, #64] - ldr q12, [x0, #96] - ldr q13, [x0, #128] - ldr q14, [x0, #160] - ldr q15, [x0, #192] - ldr q16, [x0, #224] - ldr q17, [x1] - ldr q18, [x1, #32] - ldr q19, [x1, #64] - ldr q20, [x1, #96] - ldr q21, [x1, #128] - ldr q22, [x1, #160] - ldr q23, [x1, #192] - ldr q24, [x1, #224] - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v6.h[0] - mul v27.8h, v28.8h, v6.h[1] - sqrdmulh v10.8h, v26.8h, v4.h[0] - sqrdmulh v12.8h, v28.8h, v4.h[1] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v10.8h, v10.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v6.h[2] - mul v27.8h, v28.8h, v6.h[3] - sqrdmulh v14.8h, v26.8h, v4.h[2] - sqrdmulh v16.8h, v28.8h, v4.h[3] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v14.8h, v14.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v6.h[4] - mul v27.8h, v28.8h, v6.h[5] - sqrdmulh v18.8h, v26.8h, v4.h[4] - sqrdmulh v20.8h, v28.8h, v4.h[5] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v18.8h, v18.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v6.h[6] - mul v27.8h, v28.8h, v6.h[7] - sqrdmulh v22.8h, v26.8h, v4.h[6] - sqrdmulh v24.8h, v28.8h, v4.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v22.8h, v22.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - sub v26.8h, v9.8h, v11.8h - sub v28.8h, v10.8h, v12.8h - add v9.8h, v9.8h, v11.8h - add v10.8h, v10.8h, v12.8h - mul v25.8h, v26.8h, v7.h[0] - mul v27.8h, v28.8h, v7.h[0] - sqrdmulh v11.8h, v26.8h, v5.h[0] - sqrdmulh v12.8h, v28.8h, v5.h[0] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v11.8h, v11.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - sub v26.8h, v13.8h, v15.8h - sub v28.8h, v14.8h, v16.8h - add v13.8h, v13.8h, v15.8h - add v14.8h, v14.8h, v16.8h - mul v25.8h, v26.8h, v7.h[1] - mul v27.8h, v28.8h, v7.h[1] - sqrdmulh v15.8h, v26.8h, v5.h[1] - sqrdmulh v16.8h, v28.8h, v5.h[1] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v15.8h, v15.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v19.8h - sub v28.8h, v18.8h, v20.8h - add v17.8h, v17.8h, v19.8h - add v18.8h, v18.8h, v20.8h - mul v25.8h, v26.8h, v7.h[2] - mul v27.8h, v28.8h, v7.h[2] - sqrdmulh v19.8h, v26.8h, v5.h[2] - sqrdmulh v20.8h, v28.8h, v5.h[2] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v19.8h, v19.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v21.8h, v23.8h - sub v28.8h, v22.8h, v24.8h - add v21.8h, v21.8h, v23.8h - add v22.8h, v22.8h, v24.8h - mul v25.8h, v26.8h, v7.h[3] - mul v27.8h, v28.8h, v7.h[3] - sqrdmulh v23.8h, v26.8h, v5.h[3] - sqrdmulh v24.8h, v28.8h, v5.h[3] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v23.8h, v23.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - sub v26.8h, v9.8h, v13.8h - sub v28.8h, v10.8h, v14.8h - add v9.8h, v9.8h, v13.8h - add v10.8h, v10.8h, v14.8h - mul v25.8h, v26.8h, v7.h[4] - mul v27.8h, v28.8h, v7.h[4] - sqrdmulh v13.8h, v26.8h, v5.h[4] - sqrdmulh v14.8h, v28.8h, v5.h[4] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v13.8h, v13.8h, v25.8h - sub v14.8h, v14.8h, v27.8h - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - sub v26.8h, v11.8h, v15.8h - sub v28.8h, v12.8h, v16.8h - add v11.8h, v11.8h, v15.8h - add v12.8h, v12.8h, v16.8h - mul v25.8h, v26.8h, v7.h[4] - mul v27.8h, v28.8h, v7.h[4] - sqrdmulh v15.8h, v26.8h, v5.h[4] - sqrdmulh v16.8h, v28.8h, v5.h[4] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v15.8h, v15.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v21.8h - sub v28.8h, v18.8h, v22.8h - add v17.8h, v17.8h, v21.8h - add v18.8h, v18.8h, v22.8h - mul v25.8h, v26.8h, v7.h[5] - mul v27.8h, v28.8h, v7.h[5] - sqrdmulh v21.8h, v26.8h, v5.h[5] - sqrdmulh v22.8h, v28.8h, v5.h[5] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v21.8h, v21.8h, v25.8h - sub v22.8h, v22.8h, v27.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - sub v26.8h, v19.8h, v23.8h - sub v28.8h, v20.8h, v24.8h - add v19.8h, v19.8h, v23.8h - add v20.8h, v20.8h, v24.8h - mul v25.8h, v26.8h, v7.h[5] - mul v27.8h, v28.8h, v7.h[5] - sqrdmulh v23.8h, v26.8h, v5.h[5] - sqrdmulh v24.8h, v28.8h, v5.h[5] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v23.8h, v23.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - sqdmulh v25.8h, v9.8h, v8.h[2] - sqdmulh v26.8h, v10.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v9.8h, v25.8h, v8.h[0] - mls v10.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v11.8h, v8.h[2] - sqdmulh v26.8h, v12.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v11.8h, v25.8h, v8.h[0] - mls v12.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v17.8h, v8.h[2] - sqdmulh v26.8h, v18.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v17.8h, v25.8h, v8.h[0] - mls v18.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v19.8h, v8.h[2] - sqdmulh v26.8h, v20.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v19.8h, v25.8h, v8.h[0] - mls v20.8h, v26.8h, v8.h[0] - sub v26.8h, v9.8h, v17.8h - sub v28.8h, v10.8h, v18.8h - add v9.8h, v9.8h, v17.8h - add v10.8h, v10.8h, v18.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v17.8h, v26.8h, v5.h[6] - sqrdmulh v18.8h, v28.8h, v5.h[6] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v17.8h, v17.8h, v25.8h - sub v18.8h, v18.8h, v27.8h - sshr v17.8h, v17.8h, #1 - sshr v18.8h, v18.8h, #1 - sub v26.8h, v11.8h, v19.8h - sub v28.8h, v12.8h, v20.8h - add v11.8h, v11.8h, v19.8h - add v12.8h, v12.8h, v20.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v19.8h, v26.8h, v5.h[6] - sqrdmulh v20.8h, v28.8h, v5.h[6] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v19.8h, v19.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v13.8h, v21.8h - sub v28.8h, v14.8h, v22.8h - add v13.8h, v13.8h, v21.8h - add v14.8h, v14.8h, v22.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v21.8h, v26.8h, v5.h[6] - sqrdmulh v22.8h, v28.8h, v5.h[6] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v21.8h, v21.8h, v25.8h - sub v22.8h, v22.8h, v27.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - sub v26.8h, v15.8h, v23.8h - sub v28.8h, v16.8h, v24.8h - add v15.8h, v15.8h, v23.8h - add v16.8h, v16.8h, v24.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v23.8h, v26.8h, v5.h[6] - sqrdmulh v24.8h, v28.8h, v5.h[6] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v23.8h, v23.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v25.8h, v9.8h, v7.h[7] - mul v26.8h, v10.8h, v7.h[7] - sqrdmulh v9.8h, v9.8h, v5.h[7] - sqrdmulh v10.8h, v10.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v9.8h, v9.8h, v25.8h - sub v10.8h, v10.8h, v26.8h - sshr v9.8h, v9.8h, #1 - sshr v10.8h, v10.8h, #1 - mul v25.8h, v11.8h, v7.h[7] - mul v26.8h, v12.8h, v7.h[7] - sqrdmulh v11.8h, v11.8h, v5.h[7] - sqrdmulh v12.8h, v12.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v11.8h, v11.8h, v25.8h - sub v12.8h, v12.8h, v26.8h - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - mul v25.8h, v13.8h, v7.h[7] - mul v26.8h, v14.8h, v7.h[7] - sqrdmulh v13.8h, v13.8h, v5.h[7] - sqrdmulh v14.8h, v14.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v13.8h, v13.8h, v25.8h - sub v14.8h, v14.8h, v26.8h - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - mul v25.8h, v15.8h, v7.h[7] - mul v26.8h, v16.8h, v7.h[7] - sqrdmulh v15.8h, v15.8h, v5.h[7] - sqrdmulh v16.8h, v16.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v15.8h, v15.8h, v25.8h - sub v16.8h, v16.8h, v26.8h - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - mul v25.8h, v17.8h, v7.h[7] - mul v26.8h, v18.8h, v7.h[7] - sqrdmulh v17.8h, v17.8h, v5.h[7] - sqrdmulh v18.8h, v18.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v17.8h, v17.8h, v25.8h - sub v18.8h, v18.8h, v26.8h - sshr v17.8h, v17.8h, #1 - sshr v18.8h, v18.8h, #1 - mul v25.8h, v19.8h, v7.h[7] - mul v26.8h, v20.8h, v7.h[7] - sqrdmulh v19.8h, v19.8h, v5.h[7] - sqrdmulh v20.8h, v20.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v19.8h, v19.8h, v25.8h - sub v20.8h, v20.8h, v26.8h - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - mul v25.8h, v21.8h, v7.h[7] - mul v26.8h, v22.8h, v7.h[7] - sqrdmulh v21.8h, v21.8h, v5.h[7] - sqrdmulh v22.8h, v22.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v21.8h, v21.8h, v25.8h - sub v22.8h, v22.8h, v26.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v25.8h, v23.8h, v7.h[7] - mul v26.8h, v24.8h, v7.h[7] - sqrdmulh v23.8h, v23.8h, v5.h[7] - sqrdmulh v24.8h, v24.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v23.8h, v23.8h, v25.8h - sub v24.8h, v24.8h, v26.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - str q9, [x0] - str q10, [x0, #32] - str q11, [x0, #64] - str q12, [x0, #96] - str q13, [x0, #128] - str q14, [x0, #160] - str q15, [x0, #192] - str q16, [x0, #224] - str q17, [x1] - str q18, [x1, #32] - str q19, [x1, #64] - str q20, [x1, #96] - str q21, [x1, #128] - str q22, [x1, #160] - str q23, [x1, #192] - str q24, [x1, #224] - ldr q9, [x0, #16] - ldr q10, [x0, #48] - ldr q11, [x0, #80] - ldr q12, [x0, #112] - ldr q13, [x0, #144] - ldr q14, [x0, #176] - ldr q15, [x0, #208] - ldr q16, [x0, #240] - ldr q17, [x1, #16] - ldr q18, [x1, #48] - ldr q19, [x1, #80] - ldr q20, [x1, #112] - ldr q21, [x1, #144] - ldr q22, [x1, #176] - ldr q23, [x1, #208] - ldr q24, [x1, #240] - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v6.h[0] - mul v27.8h, v28.8h, v6.h[1] - sqrdmulh v10.8h, v26.8h, v4.h[0] - sqrdmulh v12.8h, v28.8h, v4.h[1] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v10.8h, v10.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v6.h[2] - mul v27.8h, v28.8h, v6.h[3] - sqrdmulh v14.8h, v26.8h, v4.h[2] - sqrdmulh v16.8h, v28.8h, v4.h[3] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v14.8h, v14.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v6.h[4] - mul v27.8h, v28.8h, v6.h[5] - sqrdmulh v18.8h, v26.8h, v4.h[4] - sqrdmulh v20.8h, v28.8h, v4.h[5] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v18.8h, v18.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v6.h[6] - mul v27.8h, v28.8h, v6.h[7] - sqrdmulh v22.8h, v26.8h, v4.h[6] - sqrdmulh v24.8h, v28.8h, v4.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v22.8h, v22.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - sub v26.8h, v9.8h, v11.8h - sub v28.8h, v10.8h, v12.8h - add v9.8h, v9.8h, v11.8h - add v10.8h, v10.8h, v12.8h - mul v25.8h, v26.8h, v7.h[0] - mul v27.8h, v28.8h, v7.h[0] - sqrdmulh v11.8h, v26.8h, v5.h[0] - sqrdmulh v12.8h, v28.8h, v5.h[0] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v11.8h, v11.8h, v25.8h - sub v12.8h, v12.8h, v27.8h - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - sub v26.8h, v13.8h, v15.8h - sub v28.8h, v14.8h, v16.8h - add v13.8h, v13.8h, v15.8h - add v14.8h, v14.8h, v16.8h - mul v25.8h, v26.8h, v7.h[1] - mul v27.8h, v28.8h, v7.h[1] - sqrdmulh v15.8h, v26.8h, v5.h[1] - sqrdmulh v16.8h, v28.8h, v5.h[1] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v15.8h, v15.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v19.8h - sub v28.8h, v18.8h, v20.8h - add v17.8h, v17.8h, v19.8h - add v18.8h, v18.8h, v20.8h - mul v25.8h, v26.8h, v7.h[2] - mul v27.8h, v28.8h, v7.h[2] - sqrdmulh v19.8h, v26.8h, v5.h[2] - sqrdmulh v20.8h, v28.8h, v5.h[2] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v19.8h, v19.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v21.8h, v23.8h - sub v28.8h, v22.8h, v24.8h - add v21.8h, v21.8h, v23.8h - add v22.8h, v22.8h, v24.8h - mul v25.8h, v26.8h, v7.h[3] - mul v27.8h, v28.8h, v7.h[3] - sqrdmulh v23.8h, v26.8h, v5.h[3] - sqrdmulh v24.8h, v28.8h, v5.h[3] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v23.8h, v23.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - sub v26.8h, v9.8h, v13.8h - sub v28.8h, v10.8h, v14.8h - add v9.8h, v9.8h, v13.8h - add v10.8h, v10.8h, v14.8h - mul v25.8h, v26.8h, v7.h[4] - mul v27.8h, v28.8h, v7.h[4] - sqrdmulh v13.8h, v26.8h, v5.h[4] - sqrdmulh v14.8h, v28.8h, v5.h[4] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v13.8h, v13.8h, v25.8h - sub v14.8h, v14.8h, v27.8h - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - sub v26.8h, v11.8h, v15.8h - sub v28.8h, v12.8h, v16.8h - add v11.8h, v11.8h, v15.8h - add v12.8h, v12.8h, v16.8h - mul v25.8h, v26.8h, v7.h[4] - mul v27.8h, v28.8h, v7.h[4] - sqrdmulh v15.8h, v26.8h, v5.h[4] - sqrdmulh v16.8h, v28.8h, v5.h[4] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v15.8h, v15.8h, v25.8h - sub v16.8h, v16.8h, v27.8h - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v21.8h - sub v28.8h, v18.8h, v22.8h - add v17.8h, v17.8h, v21.8h - add v18.8h, v18.8h, v22.8h - mul v25.8h, v26.8h, v7.h[5] - mul v27.8h, v28.8h, v7.h[5] - sqrdmulh v21.8h, v26.8h, v5.h[5] - sqrdmulh v22.8h, v28.8h, v5.h[5] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v21.8h, v21.8h, v25.8h - sub v22.8h, v22.8h, v27.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - sub v26.8h, v19.8h, v23.8h - sub v28.8h, v20.8h, v24.8h - add v19.8h, v19.8h, v23.8h - add v20.8h, v20.8h, v24.8h - mul v25.8h, v26.8h, v7.h[5] - mul v27.8h, v28.8h, v7.h[5] - sqrdmulh v23.8h, v26.8h, v5.h[5] - sqrdmulh v24.8h, v28.8h, v5.h[5] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v23.8h, v23.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - sqdmulh v25.8h, v9.8h, v8.h[2] - sqdmulh v26.8h, v10.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v9.8h, v25.8h, v8.h[0] - mls v10.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v11.8h, v8.h[2] - sqdmulh v26.8h, v12.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v11.8h, v25.8h, v8.h[0] - mls v12.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v17.8h, v8.h[2] - sqdmulh v26.8h, v18.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v17.8h, v25.8h, v8.h[0] - mls v18.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v19.8h, v8.h[2] - sqdmulh v26.8h, v20.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v19.8h, v25.8h, v8.h[0] - mls v20.8h, v26.8h, v8.h[0] - sub v26.8h, v9.8h, v17.8h - sub v28.8h, v10.8h, v18.8h - add v9.8h, v9.8h, v17.8h - add v10.8h, v10.8h, v18.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v17.8h, v26.8h, v5.h[6] - sqrdmulh v18.8h, v28.8h, v5.h[6] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v17.8h, v17.8h, v25.8h - sub v18.8h, v18.8h, v27.8h - sshr v17.8h, v17.8h, #1 - sshr v18.8h, v18.8h, #1 - sub v26.8h, v11.8h, v19.8h - sub v28.8h, v12.8h, v20.8h - add v11.8h, v11.8h, v19.8h - add v12.8h, v12.8h, v20.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v19.8h, v26.8h, v5.h[6] - sqrdmulh v20.8h, v28.8h, v5.h[6] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v19.8h, v19.8h, v25.8h - sub v20.8h, v20.8h, v27.8h - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v13.8h, v21.8h - sub v28.8h, v14.8h, v22.8h - add v13.8h, v13.8h, v21.8h - add v14.8h, v14.8h, v22.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v21.8h, v26.8h, v5.h[6] - sqrdmulh v22.8h, v28.8h, v5.h[6] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v21.8h, v21.8h, v25.8h - sub v22.8h, v22.8h, v27.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - sub v26.8h, v15.8h, v23.8h - sub v28.8h, v16.8h, v24.8h - add v15.8h, v15.8h, v23.8h - add v16.8h, v16.8h, v24.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v23.8h, v26.8h, v5.h[6] - sqrdmulh v24.8h, v28.8h, v5.h[6] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v27.8h, v27.8h, v8.h[0] - sub v23.8h, v23.8h, v25.8h - sub v24.8h, v24.8h, v27.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v25.8h, v9.8h, v7.h[7] - mul v26.8h, v10.8h, v7.h[7] - sqrdmulh v9.8h, v9.8h, v5.h[7] - sqrdmulh v10.8h, v10.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v9.8h, v9.8h, v25.8h - sub v10.8h, v10.8h, v26.8h - sshr v9.8h, v9.8h, #1 - sshr v10.8h, v10.8h, #1 - mul v25.8h, v11.8h, v7.h[7] - mul v26.8h, v12.8h, v7.h[7] - sqrdmulh v11.8h, v11.8h, v5.h[7] - sqrdmulh v12.8h, v12.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v11.8h, v11.8h, v25.8h - sub v12.8h, v12.8h, v26.8h - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - mul v25.8h, v13.8h, v7.h[7] - mul v26.8h, v14.8h, v7.h[7] - sqrdmulh v13.8h, v13.8h, v5.h[7] - sqrdmulh v14.8h, v14.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v13.8h, v13.8h, v25.8h - sub v14.8h, v14.8h, v26.8h - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - mul v25.8h, v15.8h, v7.h[7] - mul v26.8h, v16.8h, v7.h[7] - sqrdmulh v15.8h, v15.8h, v5.h[7] - sqrdmulh v16.8h, v16.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v15.8h, v15.8h, v25.8h - sub v16.8h, v16.8h, v26.8h - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - mul v25.8h, v17.8h, v7.h[7] - mul v26.8h, v18.8h, v7.h[7] - sqrdmulh v17.8h, v17.8h, v5.h[7] - sqrdmulh v18.8h, v18.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v17.8h, v17.8h, v25.8h - sub v18.8h, v18.8h, v26.8h - sshr v17.8h, v17.8h, #1 - sshr v18.8h, v18.8h, #1 - mul v25.8h, v19.8h, v7.h[7] - mul v26.8h, v20.8h, v7.h[7] - sqrdmulh v19.8h, v19.8h, v5.h[7] - sqrdmulh v20.8h, v20.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v19.8h, v19.8h, v25.8h - sub v20.8h, v20.8h, v26.8h - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - mul v25.8h, v21.8h, v7.h[7] - mul v26.8h, v22.8h, v7.h[7] - sqrdmulh v21.8h, v21.8h, v5.h[7] - sqrdmulh v22.8h, v22.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v21.8h, v21.8h, v25.8h - sub v22.8h, v22.8h, v26.8h - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v25.8h, v23.8h, v7.h[7] - mul v26.8h, v24.8h, v7.h[7] - sqrdmulh v23.8h, v23.8h, v5.h[7] - sqrdmulh v24.8h, v24.8h, v5.h[7] - sqrdmulh v25.8h, v25.8h, v8.h[0] - sqrdmulh v26.8h, v26.8h, v8.h[0] - sub v23.8h, v23.8h, v25.8h - sub v24.8h, v24.8h, v26.8h - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - str q9, [x0, #16] - str q10, [x0, #48] - str q11, [x0, #80] - str q12, [x0, #112] - str q13, [x0, #144] - str q14, [x0, #176] - str q15, [x0, #208] - str q16, [x0, #240] - str q17, [x1, #16] - str q18, [x1, #48] - str q19, [x1, #80] - str q20, [x1, #112] - str q21, [x1, #144] - str q22, [x1, #176] - str q23, [x1, #208] - str q24, [x1, #240] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldr Q8, [x4] + ldp Q9, Q10, [x0] + ldp Q11, Q12, [x0, #32] + ldp Q13, Q14, [x0, #64] + ldp Q15, Q16, [x0, #96] + ldp Q17, Q18, [x0, #128] + ldp Q19, Q20, [x0, #160] + ldp Q21, Q22, [x0, #192] + ldp Q23, Q24, [x0, #224] + mov V25.16B, V9.16B + trn1 V9.2D, V9.2D, V10.2D + trn2 V10.2D, V25.2D, V10.2D + mov V25.16B, V9.16B + trn1 V9.4S, V9.4S, V10.4S + trn2 V10.4S, V25.4S, V10.4S + mov V25.16B, V11.16B + trn1 V11.2D, V11.2D, V12.2D + trn2 V12.2D, V25.2D, V12.2D + mov V25.16B, V11.16B + trn1 V11.4S, V11.4S, V12.4S + trn2 V12.4S, V25.4S, V12.4S + mov V25.16B, V13.16B + trn1 V13.2D, V13.2D, V14.2D + trn2 V14.2D, V25.2D, V14.2D + mov V25.16B, V13.16B + trn1 V13.4S, V13.4S, V14.4S + trn2 V14.4S, V25.4S, V14.4S + mov V25.16B, V15.16B + trn1 V15.2D, V15.2D, V16.2D + trn2 V16.2D, V25.2D, V16.2D + mov V25.16B, V15.16B + trn1 V15.4S, V15.4S, V16.4S + trn2 V16.4S, V25.4S, V16.4S + mov V25.16B, V17.16B + trn1 V17.2D, V17.2D, V18.2D + trn2 V18.2D, V25.2D, V18.2D + mov V25.16B, V17.16B + trn1 V17.4S, V17.4S, V18.4S + trn2 V18.4S, V25.4S, V18.4S + mov V25.16B, V19.16B + trn1 V19.2D, V19.2D, V20.2D + trn2 V20.2D, V25.2D, V20.2D + mov V25.16B, V19.16B + trn1 V19.4S, V19.4S, V20.4S + trn2 V20.4S, V25.4S, V20.4S + mov V25.16B, V21.16B + trn1 V21.2D, V21.2D, V22.2D + trn2 V22.2D, V25.2D, V22.2D + mov V25.16B, V21.16B + trn1 V21.4S, V21.4S, V22.4S + trn2 V22.4S, V25.4S, V22.4S + mov V25.16B, V23.16B + trn1 V23.2D, V23.2D, V24.2D + trn2 V24.2D, V25.2D, V24.2D + mov V25.16B, V23.16B + trn1 V23.4S, V23.4S, V24.4S + trn2 V24.4S, V25.4S, V24.4S + ldr Q0, [x2] + ldr Q1, [x2, #16] + ldr Q2, [x3] + ldr Q3, [x3, #16] + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V10.8H, V26.8H, V0.8H + sqrdmulh V12.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V10.8H, V10.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + ldr Q0, [x2, #32] + ldr Q1, [x2, #48] + ldr Q2, [x3, #32] + ldr Q3, [x3, #48] + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V14.8H, V26.8H, V0.8H + sqrdmulh V16.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V14.8H, V14.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + ldr Q0, [x2, #64] + ldr Q1, [x2, #80] + ldr Q2, [x3, #64] + ldr Q3, [x3, #80] + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V18.8H, V26.8H, V0.8H + sqrdmulh V20.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V18.8H, V18.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + ldr Q0, [x2, #96] + ldr Q1, [x2, #112] + ldr Q2, [x3, #96] + ldr Q3, [x3, #112] + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V22.8H, V26.8H, V0.8H + sqrdmulh V24.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V22.8H, V22.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #256] + ldr Q1, [x2, #272] + ldr Q2, [x3, #256] + ldr Q3, [x3, #272] + mov V25.16B, V9.16B + mov V26.16B, V11.16B + trn1 V9.4S, V9.4S, V10.4S + trn1 V11.4S, V11.4S, V12.4S + trn2 V10.4S, V25.4S, V10.4S + trn2 V12.4S, V26.4S, V12.4S + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V10.8H, V26.8H, V0.8H + sqrdmulh V12.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V10.8H, V10.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + ldr Q0, [x2, #288] + ldr Q1, [x2, #304] + ldr Q2, [x3, #288] + ldr Q3, [x3, #304] + mov V25.16B, V13.16B + mov V26.16B, V15.16B + trn1 V13.4S, V13.4S, V14.4S + trn1 V15.4S, V15.4S, V16.4S + trn2 V14.4S, V25.4S, V14.4S + trn2 V16.4S, V26.4S, V16.4S + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V14.8H, V26.8H, V0.8H + sqrdmulh V16.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V14.8H, V14.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + ldr Q0, [x2, #320] + ldr Q1, [x2, #336] + ldr Q2, [x3, #320] + ldr Q3, [x3, #336] + mov V25.16B, V17.16B + mov V26.16B, V19.16B + trn1 V17.4S, V17.4S, V18.4S + trn1 V19.4S, V19.4S, V20.4S + trn2 V18.4S, V25.4S, V18.4S + trn2 V20.4S, V26.4S, V20.4S + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V18.8H, V26.8H, V0.8H + sqrdmulh V20.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V18.8H, V18.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + ldr Q0, [x2, #352] + ldr Q1, [x2, #368] + ldr Q2, [x3, #352] + ldr Q3, [x3, #368] + mov V25.16B, V21.16B + mov V26.16B, V23.16B + trn1 V21.4S, V21.4S, V22.4S + trn1 V23.4S, V23.4S, V24.4S + trn2 V22.4S, V25.4S, V22.4S + trn2 V24.4S, V26.4S, V24.4S + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V22.8H, V26.8H, V0.8H + sqrdmulh V24.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V22.8H, V22.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #512] + ldr Q2, [x3, #512] + mov V25.16B, V9.16B + mov V26.16B, V11.16B + trn1 V9.2D, V9.2D, V10.2D + trn1 V11.2D, V11.2D, V12.2D + trn2 V10.2D, V25.2D, V10.2D + trn2 V12.2D, V26.2D, V12.2D + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.H[0] + mul V27.8H, V28.8H, V2.H[1] + sqrdmulh V10.8H, V26.8H, V0.H[0] + sqrdmulh V12.8H, V28.8H, V0.H[1] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V10.8H, V10.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + mov V25.16B, V13.16B + mov V26.16B, V15.16B + trn1 V13.2D, V13.2D, V14.2D + trn1 V15.2D, V15.2D, V16.2D + trn2 V14.2D, V25.2D, V14.2D + trn2 V16.2D, V26.2D, V16.2D + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.H[2] + mul V27.8H, V28.8H, V2.H[3] + sqrdmulh V14.8H, V26.8H, V0.H[2] + sqrdmulh V16.8H, V28.8H, V0.H[3] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V14.8H, V14.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + mov V25.16B, V17.16B + mov V26.16B, V19.16B + trn1 V17.2D, V17.2D, V18.2D + trn1 V19.2D, V19.2D, V20.2D + trn2 V18.2D, V25.2D, V18.2D + trn2 V20.2D, V26.2D, V20.2D + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.H[4] + mul V27.8H, V28.8H, V2.H[5] + sqrdmulh V18.8H, V26.8H, V0.H[4] + sqrdmulh V20.8H, V28.8H, V0.H[5] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V18.8H, V18.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + mov V25.16B, V21.16B + mov V26.16B, V23.16B + trn1 V21.2D, V21.2D, V22.2D + trn1 V23.2D, V23.2D, V24.2D + trn2 V22.2D, V25.2D, V22.2D + trn2 V24.2D, V26.2D, V24.2D + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.H[6] + mul V27.8H, V28.8H, V2.H[7] + sqrdmulh V22.8H, V26.8H, V0.H[6] + sqrdmulh V24.8H, V28.8H, V0.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V22.8H, V22.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + sqdmulh V25.8H, V9.8H, V8.H[2] + sqdmulh V26.8H, V11.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V9.8H, V25.8H, V8.H[0] + mls V11.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V13.8H, V8.H[2] + sqdmulh V26.8H, V15.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V13.8H, V25.8H, V8.H[0] + mls V15.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V17.8H, V8.H[2] + sqdmulh V26.8H, V19.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V17.8H, V25.8H, V8.H[0] + mls V19.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V21.8H, V8.H[2] + sqdmulh V26.8H, V23.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V21.8H, V25.8H, V8.H[0] + mls V23.8H, V26.8H, V8.H[0] + stp Q9, Q10, [x0] + stp Q11, Q12, [x0, #32] + stp Q13, Q14, [x0, #64] + stp Q15, Q16, [x0, #96] + stp Q17, Q18, [x0, #128] + stp Q19, Q20, [x0, #160] + stp Q21, Q22, [x0, #192] + stp Q23, Q24, [x0, #224] + ldp Q9, Q10, [x1] + ldp Q11, Q12, [x1, #32] + ldp Q13, Q14, [x1, #64] + ldp Q15, Q16, [x1, #96] + ldp Q17, Q18, [x1, #128] + ldp Q19, Q20, [x1, #160] + ldp Q21, Q22, [x1, #192] + ldp Q23, Q24, [x1, #224] + mov V25.16B, V9.16B + trn1 V9.2D, V9.2D, V10.2D + trn2 V10.2D, V25.2D, V10.2D + mov V25.16B, V9.16B + trn1 V9.4S, V9.4S, V10.4S + trn2 V10.4S, V25.4S, V10.4S + mov V25.16B, V11.16B + trn1 V11.2D, V11.2D, V12.2D + trn2 V12.2D, V25.2D, V12.2D + mov V25.16B, V11.16B + trn1 V11.4S, V11.4S, V12.4S + trn2 V12.4S, V25.4S, V12.4S + mov V25.16B, V13.16B + trn1 V13.2D, V13.2D, V14.2D + trn2 V14.2D, V25.2D, V14.2D + mov V25.16B, V13.16B + trn1 V13.4S, V13.4S, V14.4S + trn2 V14.4S, V25.4S, V14.4S + mov V25.16B, V15.16B + trn1 V15.2D, V15.2D, V16.2D + trn2 V16.2D, V25.2D, V16.2D + mov V25.16B, V15.16B + trn1 V15.4S, V15.4S, V16.4S + trn2 V16.4S, V25.4S, V16.4S + mov V25.16B, V17.16B + trn1 V17.2D, V17.2D, V18.2D + trn2 V18.2D, V25.2D, V18.2D + mov V25.16B, V17.16B + trn1 V17.4S, V17.4S, V18.4S + trn2 V18.4S, V25.4S, V18.4S + mov V25.16B, V19.16B + trn1 V19.2D, V19.2D, V20.2D + trn2 V20.2D, V25.2D, V20.2D + mov V25.16B, V19.16B + trn1 V19.4S, V19.4S, V20.4S + trn2 V20.4S, V25.4S, V20.4S + mov V25.16B, V21.16B + trn1 V21.2D, V21.2D, V22.2D + trn2 V22.2D, V25.2D, V22.2D + mov V25.16B, V21.16B + trn1 V21.4S, V21.4S, V22.4S + trn2 V22.4S, V25.4S, V22.4S + mov V25.16B, V23.16B + trn1 V23.2D, V23.2D, V24.2D + trn2 V24.2D, V25.2D, V24.2D + mov V25.16B, V23.16B + trn1 V23.4S, V23.4S, V24.4S + trn2 V24.4S, V25.4S, V24.4S + ldr Q0, [x2, #128] + ldr Q1, [x2, #144] + ldr Q2, [x3, #128] + ldr Q3, [x3, #144] + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V10.8H, V26.8H, V0.8H + sqrdmulh V12.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V10.8H, V10.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + ldr Q0, [x2, #160] + ldr Q1, [x2, #176] + ldr Q2, [x3, #160] + ldr Q3, [x3, #176] + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V14.8H, V26.8H, V0.8H + sqrdmulh V16.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V14.8H, V14.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + ldr Q0, [x2, #192] + ldr Q1, [x2, #208] + ldr Q2, [x3, #192] + ldr Q3, [x3, #208] + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V18.8H, V26.8H, V0.8H + sqrdmulh V20.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V18.8H, V18.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + ldr Q0, [x2, #224] + ldr Q1, [x2, #240] + ldr Q2, [x3, #224] + ldr Q3, [x3, #240] + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V22.8H, V26.8H, V0.8H + sqrdmulh V24.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V22.8H, V22.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #384] + ldr Q1, [x2, #400] + ldr Q2, [x3, #384] + ldr Q3, [x3, #400] + mov V25.16B, V9.16B + mov V26.16B, V11.16B + trn1 V9.4S, V9.4S, V10.4S + trn1 V11.4S, V11.4S, V12.4S + trn2 V10.4S, V25.4S, V10.4S + trn2 V12.4S, V26.4S, V12.4S + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V10.8H, V26.8H, V0.8H + sqrdmulh V12.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V10.8H, V10.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + ldr Q0, [x2, #416] + ldr Q1, [x2, #432] + ldr Q2, [x3, #416] + ldr Q3, [x3, #432] + mov V25.16B, V13.16B + mov V26.16B, V15.16B + trn1 V13.4S, V13.4S, V14.4S + trn1 V15.4S, V15.4S, V16.4S + trn2 V14.4S, V25.4S, V14.4S + trn2 V16.4S, V26.4S, V16.4S + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V14.8H, V26.8H, V0.8H + sqrdmulh V16.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V14.8H, V14.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + ldr Q0, [x2, #448] + ldr Q1, [x2, #464] + ldr Q2, [x3, #448] + ldr Q3, [x3, #464] + mov V25.16B, V17.16B + mov V26.16B, V19.16B + trn1 V17.4S, V17.4S, V18.4S + trn1 V19.4S, V19.4S, V20.4S + trn2 V18.4S, V25.4S, V18.4S + trn2 V20.4S, V26.4S, V20.4S + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V18.8H, V26.8H, V0.8H + sqrdmulh V20.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V18.8H, V18.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + ldr Q0, [x2, #480] + ldr Q1, [x2, #496] + ldr Q2, [x3, #480] + ldr Q3, [x3, #496] + mov V25.16B, V21.16B + mov V26.16B, V23.16B + trn1 V21.4S, V21.4S, V22.4S + trn1 V23.4S, V23.4S, V24.4S + trn2 V22.4S, V25.4S, V22.4S + trn2 V24.4S, V26.4S, V24.4S + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V22.8H, V26.8H, V0.8H + sqrdmulh V24.8H, V28.8H, V1.8H + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V22.8H, V22.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #528] + ldr Q2, [x3, #528] + mov V25.16B, V9.16B + mov V26.16B, V11.16B + trn1 V9.2D, V9.2D, V10.2D + trn1 V11.2D, V11.2D, V12.2D + trn2 V10.2D, V25.2D, V10.2D + trn2 V12.2D, V26.2D, V12.2D + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.H[0] + mul V27.8H, V28.8H, V2.H[1] + sqrdmulh V10.8H, V26.8H, V0.H[0] + sqrdmulh V12.8H, V28.8H, V0.H[1] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V10.8H, V10.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + mov V25.16B, V13.16B + mov V26.16B, V15.16B + trn1 V13.2D, V13.2D, V14.2D + trn1 V15.2D, V15.2D, V16.2D + trn2 V14.2D, V25.2D, V14.2D + trn2 V16.2D, V26.2D, V16.2D + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.H[2] + mul V27.8H, V28.8H, V2.H[3] + sqrdmulh V14.8H, V26.8H, V0.H[2] + sqrdmulh V16.8H, V28.8H, V0.H[3] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V14.8H, V14.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + mov V25.16B, V17.16B + mov V26.16B, V19.16B + trn1 V17.2D, V17.2D, V18.2D + trn1 V19.2D, V19.2D, V20.2D + trn2 V18.2D, V25.2D, V18.2D + trn2 V20.2D, V26.2D, V20.2D + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.H[4] + mul V27.8H, V28.8H, V2.H[5] + sqrdmulh V18.8H, V26.8H, V0.H[4] + sqrdmulh V20.8H, V28.8H, V0.H[5] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V18.8H, V18.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + mov V25.16B, V21.16B + mov V26.16B, V23.16B + trn1 V21.2D, V21.2D, V22.2D + trn1 V23.2D, V23.2D, V24.2D + trn2 V22.2D, V25.2D, V22.2D + trn2 V24.2D, V26.2D, V24.2D + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.H[6] + mul V27.8H, V28.8H, V2.H[7] + sqrdmulh V22.8H, V26.8H, V0.H[6] + sqrdmulh V24.8H, V28.8H, V0.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V22.8H, V22.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + sqdmulh V25.8H, V9.8H, V8.H[2] + sqdmulh V26.8H, V11.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V9.8H, V25.8H, V8.H[0] + mls V11.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V13.8H, V8.H[2] + sqdmulh V26.8H, V15.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V13.8H, V25.8H, V8.H[0] + mls V15.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V17.8H, V8.H[2] + sqdmulh V26.8H, V19.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V17.8H, V25.8H, V8.H[0] + mls V19.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V21.8H, V8.H[2] + sqdmulh V26.8H, V23.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V21.8H, V25.8H, V8.H[0] + mls V23.8H, V26.8H, V8.H[0] + stp Q9, Q10, [x1] + stp Q11, Q12, [x1, #32] + stp Q13, Q14, [x1, #64] + stp Q15, Q16, [x1, #96] + stp Q17, Q18, [x1, #128] + stp Q19, Q20, [x1, #160] + stp Q21, Q22, [x1, #192] + stp Q23, Q24, [x1, #224] + ldr Q4, [x2, #544] + ldr Q5, [x2, #560] + ldr Q6, [x3, #544] + ldr Q7, [x3, #560] + ldr Q9, [x0] + ldr Q10, [x0, #32] + ldr Q11, [x0, #64] + ldr Q12, [x0, #96] + ldr Q13, [x0, #128] + ldr Q14, [x0, #160] + ldr Q15, [x0, #192] + ldr Q16, [x0, #224] + ldr Q17, [x1] + ldr Q18, [x1, #32] + ldr Q19, [x1, #64] + ldr Q20, [x1, #96] + ldr Q21, [x1, #128] + ldr Q22, [x1, #160] + ldr Q23, [x1, #192] + ldr Q24, [x1, #224] + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V6.H[0] + mul V27.8H, V28.8H, V6.H[1] + sqrdmulh V10.8H, V26.8H, V4.H[0] + sqrdmulh V12.8H, V28.8H, V4.H[1] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V10.8H, V10.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V6.H[2] + mul V27.8H, V28.8H, V6.H[3] + sqrdmulh V14.8H, V26.8H, V4.H[2] + sqrdmulh V16.8H, V28.8H, V4.H[3] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V14.8H, V14.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V6.H[4] + mul V27.8H, V28.8H, V6.H[5] + sqrdmulh V18.8H, V26.8H, V4.H[4] + sqrdmulh V20.8H, V28.8H, V4.H[5] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V18.8H, V18.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V6.H[6] + mul V27.8H, V28.8H, V6.H[7] + sqrdmulh V22.8H, V26.8H, V4.H[6] + sqrdmulh V24.8H, V28.8H, V4.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V22.8H, V22.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + sub V26.8H, V9.8H, V11.8H + sub V28.8H, V10.8H, V12.8H + add V9.8H, V9.8H, V11.8H + add V10.8H, V10.8H, V12.8H + mul V25.8H, V26.8H, V7.H[0] + mul V27.8H, V28.8H, V7.H[0] + sqrdmulh V11.8H, V26.8H, V5.H[0] + sqrdmulh V12.8H, V28.8H, V5.H[0] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V11.8H, V11.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + sub V26.8H, V13.8H, V15.8H + sub V28.8H, V14.8H, V16.8H + add V13.8H, V13.8H, V15.8H + add V14.8H, V14.8H, V16.8H + mul V25.8H, V26.8H, V7.H[1] + mul V27.8H, V28.8H, V7.H[1] + sqrdmulh V15.8H, V26.8H, V5.H[1] + sqrdmulh V16.8H, V28.8H, V5.H[1] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V15.8H, V15.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V19.8H + sub V28.8H, V18.8H, V20.8H + add V17.8H, V17.8H, V19.8H + add V18.8H, V18.8H, V20.8H + mul V25.8H, V26.8H, V7.H[2] + mul V27.8H, V28.8H, V7.H[2] + sqrdmulh V19.8H, V26.8H, V5.H[2] + sqrdmulh V20.8H, V28.8H, V5.H[2] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V19.8H, V19.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V21.8H, V23.8H + sub V28.8H, V22.8H, V24.8H + add V21.8H, V21.8H, V23.8H + add V22.8H, V22.8H, V24.8H + mul V25.8H, V26.8H, V7.H[3] + mul V27.8H, V28.8H, V7.H[3] + sqrdmulh V23.8H, V26.8H, V5.H[3] + sqrdmulh V24.8H, V28.8H, V5.H[3] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V23.8H, V23.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + sub V26.8H, V9.8H, V13.8H + sub V28.8H, V10.8H, V14.8H + add V9.8H, V9.8H, V13.8H + add V10.8H, V10.8H, V14.8H + mul V25.8H, V26.8H, V7.H[4] + mul V27.8H, V28.8H, V7.H[4] + sqrdmulh V13.8H, V26.8H, V5.H[4] + sqrdmulh V14.8H, V28.8H, V5.H[4] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V13.8H, V13.8H, V25.8H + sub V14.8H, V14.8H, V27.8H + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + sub V26.8H, V11.8H, V15.8H + sub V28.8H, V12.8H, V16.8H + add V11.8H, V11.8H, V15.8H + add V12.8H, V12.8H, V16.8H + mul V25.8H, V26.8H, V7.H[4] + mul V27.8H, V28.8H, V7.H[4] + sqrdmulh V15.8H, V26.8H, V5.H[4] + sqrdmulh V16.8H, V28.8H, V5.H[4] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V15.8H, V15.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V21.8H + sub V28.8H, V18.8H, V22.8H + add V17.8H, V17.8H, V21.8H + add V18.8H, V18.8H, V22.8H + mul V25.8H, V26.8H, V7.H[5] + mul V27.8H, V28.8H, V7.H[5] + sqrdmulh V21.8H, V26.8H, V5.H[5] + sqrdmulh V22.8H, V28.8H, V5.H[5] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V21.8H, V21.8H, V25.8H + sub V22.8H, V22.8H, V27.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + sub V26.8H, V19.8H, V23.8H + sub V28.8H, V20.8H, V24.8H + add V19.8H, V19.8H, V23.8H + add V20.8H, V20.8H, V24.8H + mul V25.8H, V26.8H, V7.H[5] + mul V27.8H, V28.8H, V7.H[5] + sqrdmulh V23.8H, V26.8H, V5.H[5] + sqrdmulh V24.8H, V28.8H, V5.H[5] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V23.8H, V23.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + sqdmulh V25.8H, V9.8H, V8.H[2] + sqdmulh V26.8H, V10.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V9.8H, V25.8H, V8.H[0] + mls V10.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V11.8H, V8.H[2] + sqdmulh V26.8H, V12.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V11.8H, V25.8H, V8.H[0] + mls V12.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V17.8H, V8.H[2] + sqdmulh V26.8H, V18.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V17.8H, V25.8H, V8.H[0] + mls V18.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V19.8H, V8.H[2] + sqdmulh V26.8H, V20.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V19.8H, V25.8H, V8.H[0] + mls V20.8H, V26.8H, V8.H[0] + sub V26.8H, V9.8H, V17.8H + sub V28.8H, V10.8H, V18.8H + add V9.8H, V9.8H, V17.8H + add V10.8H, V10.8H, V18.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V17.8H, V26.8H, V5.H[6] + sqrdmulh V18.8H, V28.8H, V5.H[6] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V17.8H, V17.8H, V25.8H + sub V18.8H, V18.8H, V27.8H + sshr V17.8H, V17.8H, #1 + sshr V18.8H, V18.8H, #1 + sub V26.8H, V11.8H, V19.8H + sub V28.8H, V12.8H, V20.8H + add V11.8H, V11.8H, V19.8H + add V12.8H, V12.8H, V20.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V19.8H, V26.8H, V5.H[6] + sqrdmulh V20.8H, V28.8H, V5.H[6] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V19.8H, V19.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V13.8H, V21.8H + sub V28.8H, V14.8H, V22.8H + add V13.8H, V13.8H, V21.8H + add V14.8H, V14.8H, V22.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V21.8H, V26.8H, V5.H[6] + sqrdmulh V22.8H, V28.8H, V5.H[6] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V21.8H, V21.8H, V25.8H + sub V22.8H, V22.8H, V27.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + sub V26.8H, V15.8H, V23.8H + sub V28.8H, V16.8H, V24.8H + add V15.8H, V15.8H, V23.8H + add V16.8H, V16.8H, V24.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V23.8H, V26.8H, V5.H[6] + sqrdmulh V24.8H, V28.8H, V5.H[6] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V23.8H, V23.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V25.8H, V9.8H, V7.H[7] + mul V26.8H, V10.8H, V7.H[7] + sqrdmulh V9.8H, V9.8H, V5.H[7] + sqrdmulh V10.8H, V10.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V9.8H, V9.8H, V25.8H + sub V10.8H, V10.8H, V26.8H + sshr V9.8H, V9.8H, #1 + sshr V10.8H, V10.8H, #1 + mul V25.8H, V11.8H, V7.H[7] + mul V26.8H, V12.8H, V7.H[7] + sqrdmulh V11.8H, V11.8H, V5.H[7] + sqrdmulh V12.8H, V12.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V11.8H, V11.8H, V25.8H + sub V12.8H, V12.8H, V26.8H + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + mul V25.8H, V13.8H, V7.H[7] + mul V26.8H, V14.8H, V7.H[7] + sqrdmulh V13.8H, V13.8H, V5.H[7] + sqrdmulh V14.8H, V14.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V13.8H, V13.8H, V25.8H + sub V14.8H, V14.8H, V26.8H + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + mul V25.8H, V15.8H, V7.H[7] + mul V26.8H, V16.8H, V7.H[7] + sqrdmulh V15.8H, V15.8H, V5.H[7] + sqrdmulh V16.8H, V16.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V15.8H, V15.8H, V25.8H + sub V16.8H, V16.8H, V26.8H + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + mul V25.8H, V17.8H, V7.H[7] + mul V26.8H, V18.8H, V7.H[7] + sqrdmulh V17.8H, V17.8H, V5.H[7] + sqrdmulh V18.8H, V18.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V17.8H, V17.8H, V25.8H + sub V18.8H, V18.8H, V26.8H + sshr V17.8H, V17.8H, #1 + sshr V18.8H, V18.8H, #1 + mul V25.8H, V19.8H, V7.H[7] + mul V26.8H, V20.8H, V7.H[7] + sqrdmulh V19.8H, V19.8H, V5.H[7] + sqrdmulh V20.8H, V20.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V19.8H, V19.8H, V25.8H + sub V20.8H, V20.8H, V26.8H + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + mul V25.8H, V21.8H, V7.H[7] + mul V26.8H, V22.8H, V7.H[7] + sqrdmulh V21.8H, V21.8H, V5.H[7] + sqrdmulh V22.8H, V22.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V21.8H, V21.8H, V25.8H + sub V22.8H, V22.8H, V26.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V25.8H, V23.8H, V7.H[7] + mul V26.8H, V24.8H, V7.H[7] + sqrdmulh V23.8H, V23.8H, V5.H[7] + sqrdmulh V24.8H, V24.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V23.8H, V23.8H, V25.8H + sub V24.8H, V24.8H, V26.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + str Q9, [x0] + str Q10, [x0, #32] + str Q11, [x0, #64] + str Q12, [x0, #96] + str Q13, [x0, #128] + str Q14, [x0, #160] + str Q15, [x0, #192] + str Q16, [x0, #224] + str Q17, [x1] + str Q18, [x1, #32] + str Q19, [x1, #64] + str Q20, [x1, #96] + str Q21, [x1, #128] + str Q22, [x1, #160] + str Q23, [x1, #192] + str Q24, [x1, #224] + ldr Q9, [x0, #16] + ldr Q10, [x0, #48] + ldr Q11, [x0, #80] + ldr Q12, [x0, #112] + ldr Q13, [x0, #144] + ldr Q14, [x0, #176] + ldr Q15, [x0, #208] + ldr Q16, [x0, #240] + ldr Q17, [x1, #16] + ldr Q18, [x1, #48] + ldr Q19, [x1, #80] + ldr Q20, [x1, #112] + ldr Q21, [x1, #144] + ldr Q22, [x1, #176] + ldr Q23, [x1, #208] + ldr Q24, [x1, #240] + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V6.H[0] + mul V27.8H, V28.8H, V6.H[1] + sqrdmulh V10.8H, V26.8H, V4.H[0] + sqrdmulh V12.8H, V28.8H, V4.H[1] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V10.8H, V10.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V6.H[2] + mul V27.8H, V28.8H, V6.H[3] + sqrdmulh V14.8H, V26.8H, V4.H[2] + sqrdmulh V16.8H, V28.8H, V4.H[3] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V14.8H, V14.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V6.H[4] + mul V27.8H, V28.8H, V6.H[5] + sqrdmulh V18.8H, V26.8H, V4.H[4] + sqrdmulh V20.8H, V28.8H, V4.H[5] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V18.8H, V18.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V6.H[6] + mul V27.8H, V28.8H, V6.H[7] + sqrdmulh V22.8H, V26.8H, V4.H[6] + sqrdmulh V24.8H, V28.8H, V4.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V22.8H, V22.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + sub V26.8H, V9.8H, V11.8H + sub V28.8H, V10.8H, V12.8H + add V9.8H, V9.8H, V11.8H + add V10.8H, V10.8H, V12.8H + mul V25.8H, V26.8H, V7.H[0] + mul V27.8H, V28.8H, V7.H[0] + sqrdmulh V11.8H, V26.8H, V5.H[0] + sqrdmulh V12.8H, V28.8H, V5.H[0] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V11.8H, V11.8H, V25.8H + sub V12.8H, V12.8H, V27.8H + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + sub V26.8H, V13.8H, V15.8H + sub V28.8H, V14.8H, V16.8H + add V13.8H, V13.8H, V15.8H + add V14.8H, V14.8H, V16.8H + mul V25.8H, V26.8H, V7.H[1] + mul V27.8H, V28.8H, V7.H[1] + sqrdmulh V15.8H, V26.8H, V5.H[1] + sqrdmulh V16.8H, V28.8H, V5.H[1] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V15.8H, V15.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V19.8H + sub V28.8H, V18.8H, V20.8H + add V17.8H, V17.8H, V19.8H + add V18.8H, V18.8H, V20.8H + mul V25.8H, V26.8H, V7.H[2] + mul V27.8H, V28.8H, V7.H[2] + sqrdmulh V19.8H, V26.8H, V5.H[2] + sqrdmulh V20.8H, V28.8H, V5.H[2] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V19.8H, V19.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V21.8H, V23.8H + sub V28.8H, V22.8H, V24.8H + add V21.8H, V21.8H, V23.8H + add V22.8H, V22.8H, V24.8H + mul V25.8H, V26.8H, V7.H[3] + mul V27.8H, V28.8H, V7.H[3] + sqrdmulh V23.8H, V26.8H, V5.H[3] + sqrdmulh V24.8H, V28.8H, V5.H[3] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V23.8H, V23.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + sub V26.8H, V9.8H, V13.8H + sub V28.8H, V10.8H, V14.8H + add V9.8H, V9.8H, V13.8H + add V10.8H, V10.8H, V14.8H + mul V25.8H, V26.8H, V7.H[4] + mul V27.8H, V28.8H, V7.H[4] + sqrdmulh V13.8H, V26.8H, V5.H[4] + sqrdmulh V14.8H, V28.8H, V5.H[4] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V13.8H, V13.8H, V25.8H + sub V14.8H, V14.8H, V27.8H + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + sub V26.8H, V11.8H, V15.8H + sub V28.8H, V12.8H, V16.8H + add V11.8H, V11.8H, V15.8H + add V12.8H, V12.8H, V16.8H + mul V25.8H, V26.8H, V7.H[4] + mul V27.8H, V28.8H, V7.H[4] + sqrdmulh V15.8H, V26.8H, V5.H[4] + sqrdmulh V16.8H, V28.8H, V5.H[4] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V15.8H, V15.8H, V25.8H + sub V16.8H, V16.8H, V27.8H + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V21.8H + sub V28.8H, V18.8H, V22.8H + add V17.8H, V17.8H, V21.8H + add V18.8H, V18.8H, V22.8H + mul V25.8H, V26.8H, V7.H[5] + mul V27.8H, V28.8H, V7.H[5] + sqrdmulh V21.8H, V26.8H, V5.H[5] + sqrdmulh V22.8H, V28.8H, V5.H[5] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V21.8H, V21.8H, V25.8H + sub V22.8H, V22.8H, V27.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + sub V26.8H, V19.8H, V23.8H + sub V28.8H, V20.8H, V24.8H + add V19.8H, V19.8H, V23.8H + add V20.8H, V20.8H, V24.8H + mul V25.8H, V26.8H, V7.H[5] + mul V27.8H, V28.8H, V7.H[5] + sqrdmulh V23.8H, V26.8H, V5.H[5] + sqrdmulh V24.8H, V28.8H, V5.H[5] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V23.8H, V23.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + sqdmulh V25.8H, V9.8H, V8.H[2] + sqdmulh V26.8H, V10.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V9.8H, V25.8H, V8.H[0] + mls V10.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V11.8H, V8.H[2] + sqdmulh V26.8H, V12.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V11.8H, V25.8H, V8.H[0] + mls V12.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V17.8H, V8.H[2] + sqdmulh V26.8H, V18.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V17.8H, V25.8H, V8.H[0] + mls V18.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V19.8H, V8.H[2] + sqdmulh V26.8H, V20.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V19.8H, V25.8H, V8.H[0] + mls V20.8H, V26.8H, V8.H[0] + sub V26.8H, V9.8H, V17.8H + sub V28.8H, V10.8H, V18.8H + add V9.8H, V9.8H, V17.8H + add V10.8H, V10.8H, V18.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V17.8H, V26.8H, V5.H[6] + sqrdmulh V18.8H, V28.8H, V5.H[6] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V17.8H, V17.8H, V25.8H + sub V18.8H, V18.8H, V27.8H + sshr V17.8H, V17.8H, #1 + sshr V18.8H, V18.8H, #1 + sub V26.8H, V11.8H, V19.8H + sub V28.8H, V12.8H, V20.8H + add V11.8H, V11.8H, V19.8H + add V12.8H, V12.8H, V20.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V19.8H, V26.8H, V5.H[6] + sqrdmulh V20.8H, V28.8H, V5.H[6] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V19.8H, V19.8H, V25.8H + sub V20.8H, V20.8H, V27.8H + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V13.8H, V21.8H + sub V28.8H, V14.8H, V22.8H + add V13.8H, V13.8H, V21.8H + add V14.8H, V14.8H, V22.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V21.8H, V26.8H, V5.H[6] + sqrdmulh V22.8H, V28.8H, V5.H[6] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V21.8H, V21.8H, V25.8H + sub V22.8H, V22.8H, V27.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + sub V26.8H, V15.8H, V23.8H + sub V28.8H, V16.8H, V24.8H + add V15.8H, V15.8H, V23.8H + add V16.8H, V16.8H, V24.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V23.8H, V26.8H, V5.H[6] + sqrdmulh V24.8H, V28.8H, V5.H[6] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V27.8H, V27.8H, V8.H[0] + sub V23.8H, V23.8H, V25.8H + sub V24.8H, V24.8H, V27.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V25.8H, V9.8H, V7.H[7] + mul V26.8H, V10.8H, V7.H[7] + sqrdmulh V9.8H, V9.8H, V5.H[7] + sqrdmulh V10.8H, V10.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V9.8H, V9.8H, V25.8H + sub V10.8H, V10.8H, V26.8H + sshr V9.8H, V9.8H, #1 + sshr V10.8H, V10.8H, #1 + mul V25.8H, V11.8H, V7.H[7] + mul V26.8H, V12.8H, V7.H[7] + sqrdmulh V11.8H, V11.8H, V5.H[7] + sqrdmulh V12.8H, V12.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V11.8H, V11.8H, V25.8H + sub V12.8H, V12.8H, V26.8H + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + mul V25.8H, V13.8H, V7.H[7] + mul V26.8H, V14.8H, V7.H[7] + sqrdmulh V13.8H, V13.8H, V5.H[7] + sqrdmulh V14.8H, V14.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V13.8H, V13.8H, V25.8H + sub V14.8H, V14.8H, V26.8H + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + mul V25.8H, V15.8H, V7.H[7] + mul V26.8H, V16.8H, V7.H[7] + sqrdmulh V15.8H, V15.8H, V5.H[7] + sqrdmulh V16.8H, V16.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V15.8H, V15.8H, V25.8H + sub V16.8H, V16.8H, V26.8H + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + mul V25.8H, V17.8H, V7.H[7] + mul V26.8H, V18.8H, V7.H[7] + sqrdmulh V17.8H, V17.8H, V5.H[7] + sqrdmulh V18.8H, V18.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V17.8H, V17.8H, V25.8H + sub V18.8H, V18.8H, V26.8H + sshr V17.8H, V17.8H, #1 + sshr V18.8H, V18.8H, #1 + mul V25.8H, V19.8H, V7.H[7] + mul V26.8H, V20.8H, V7.H[7] + sqrdmulh V19.8H, V19.8H, V5.H[7] + sqrdmulh V20.8H, V20.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V19.8H, V19.8H, V25.8H + sub V20.8H, V20.8H, V26.8H + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + mul V25.8H, V21.8H, V7.H[7] + mul V26.8H, V22.8H, V7.H[7] + sqrdmulh V21.8H, V21.8H, V5.H[7] + sqrdmulh V22.8H, V22.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V21.8H, V21.8H, V25.8H + sub V22.8H, V22.8H, V26.8H + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V25.8H, V23.8H, V7.H[7] + mul V26.8H, V24.8H, V7.H[7] + sqrdmulh V23.8H, V23.8H, V5.H[7] + sqrdmulh V24.8H, V24.8H, V5.H[7] + sqrdmulh V25.8H, V25.8H, V8.H[0] + sqrdmulh V26.8H, V26.8H, V8.H[0] + sub V23.8H, V23.8H, V25.8H + sub V24.8H, V24.8H, V26.8H + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + str Q9, [x0, #16] + str Q10, [x0, #48] + str Q11, [x0, #80] + str Q12, [x0, #112] + str Q13, [x0, #144] + str Q14, [x0, #176] + str Q15, [x0, #208] + str Q16, [x0, #240] + str Q17, [x1, #16] + str Q18, [x1, #48] + str Q19, [x1, #80] + str Q20, [x1, #112] + str Q21, [x1, #144] + str Q22, [x1, #176] + str Q23, [x1, #208] + str Q24, [x1, #240] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -2886,10 +2886,10 @@ mlkem_invntt PROC mlkem_ntt_sqrdmlsh PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x2, L_mlkem_aarch64_zetas add x2, x2, L_mlkem_aarch64_zetas adrp x3, L_mlkem_aarch64_zetas_qinv @@ -2897,1143 +2897,1143 @@ mlkem_ntt_sqrdmlsh PROC adrp x4, L_mlkem_aarch64_consts add x4, x4, L_mlkem_aarch64_consts add x1, x0, #0x100 - ldr q4, [x4] - ldr q5, [x0] - ldr q6, [x0, #32] - ldr q7, [x0, #64] - ldr q8, [x0, #96] - ldr q9, [x0, #128] - ldr q10, [x0, #160] - ldr q11, [x0, #192] - ldr q12, [x0, #224] - ldr q13, [x1] - ldr q14, [x1, #32] - ldr q15, [x1, #64] - ldr q16, [x1, #96] - ldr q17, [x1, #128] - ldr q18, [x1, #160] - ldr q19, [x1, #192] - ldr q20, [x1, #224] - ldr q0, [x2] - ldr q1, [x3] - mul v29.8h, v13.8h, v1.h[1] - mul v30.8h, v14.8h, v1.h[1] - sqrdmulh v21.8h, v13.8h, v0.h[1] - sqrdmulh v22.8h, v14.8h, v0.h[1] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v15.8h, v1.h[1] - mul v30.8h, v16.8h, v1.h[1] - sqrdmulh v23.8h, v15.8h, v0.h[1] - sqrdmulh v24.8h, v16.8h, v0.h[1] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v17.8h, v1.h[1] - mul v30.8h, v18.8h, v1.h[1] - sqrdmulh v25.8h, v17.8h, v0.h[1] - sqrdmulh v26.8h, v18.8h, v0.h[1] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[1] - mul v30.8h, v20.8h, v1.h[1] - sqrdmulh v27.8h, v19.8h, v0.h[1] - sqrdmulh v28.8h, v20.8h, v0.h[1] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v13.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v14.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v15.8h, v7.8h, v23.8h - add v7.8h, v7.8h, v23.8h - sub v16.8h, v8.8h, v24.8h - add v8.8h, v8.8h, v24.8h - sub v17.8h, v9.8h, v25.8h - add v9.8h, v9.8h, v25.8h - sub v18.8h, v10.8h, v26.8h - add v10.8h, v10.8h, v26.8h - sub v19.8h, v11.8h, v27.8h - add v11.8h, v11.8h, v27.8h - sub v20.8h, v12.8h, v28.8h - add v12.8h, v12.8h, v28.8h - mul v29.8h, v9.8h, v1.h[2] - mul v30.8h, v10.8h, v1.h[2] - sqrdmulh v21.8h, v9.8h, v0.h[2] - sqrdmulh v22.8h, v10.8h, v0.h[2] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v11.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[2] - sqrdmulh v23.8h, v11.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[2] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v17.8h, v1.h[3] - mul v30.8h, v18.8h, v1.h[3] - sqrdmulh v25.8h, v17.8h, v0.h[3] - sqrdmulh v26.8h, v18.8h, v0.h[3] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[3] - mul v30.8h, v20.8h, v1.h[3] - sqrdmulh v27.8h, v19.8h, v0.h[3] - sqrdmulh v28.8h, v20.8h, v0.h[3] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v9.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v10.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v11.8h, v7.8h, v23.8h - add v7.8h, v7.8h, v23.8h - sub v12.8h, v8.8h, v24.8h - add v8.8h, v8.8h, v24.8h - sub v17.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v18.8h, v14.8h, v26.8h - add v14.8h, v14.8h, v26.8h - sub v19.8h, v15.8h, v27.8h - add v15.8h, v15.8h, v27.8h - sub v20.8h, v16.8h, v28.8h - add v16.8h, v16.8h, v28.8h - mul v29.8h, v7.8h, v1.h[4] - mul v30.8h, v8.8h, v1.h[4] - sqrdmulh v21.8h, v7.8h, v0.h[4] - sqrdmulh v22.8h, v8.8h, v0.h[4] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v11.8h, v1.h[5] - mul v30.8h, v12.8h, v1.h[5] - sqrdmulh v23.8h, v11.8h, v0.h[5] - sqrdmulh v24.8h, v12.8h, v0.h[5] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v15.8h, v1.h[6] - mul v30.8h, v16.8h, v1.h[6] - sqrdmulh v25.8h, v15.8h, v0.h[6] - sqrdmulh v26.8h, v16.8h, v0.h[6] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[7] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v19.8h, v0.h[7] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v7.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v11.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v10.8h, v24.8h - add v10.8h, v10.8h, v24.8h - sub v15.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v14.8h, v26.8h - add v14.8h, v14.8h, v26.8h - sub v19.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v18.8h, v28.8h - add v18.8h, v18.8h, v28.8h - ldr q0, [x2, #16] - ldr q1, [x3, #16] - mul v29.8h, v6.8h, v1.h[0] - mul v30.8h, v8.8h, v1.h[1] - sqrdmulh v21.8h, v6.8h, v0.h[0] - sqrdmulh v22.8h, v8.8h, v0.h[1] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v10.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[3] - sqrdmulh v23.8h, v10.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[3] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v14.8h, v1.h[4] - mul v30.8h, v16.8h, v1.h[5] - sqrdmulh v25.8h, v14.8h, v0.h[4] - sqrdmulh v26.8h, v16.8h, v0.h[5] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v18.8h, v1.h[6] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v18.8h, v0.h[6] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - str q5, [x0] - str q6, [x0, #32] - str q7, [x0, #64] - str q8, [x0, #96] - str q9, [x0, #128] - str q10, [x0, #160] - str q11, [x0, #192] - str q12, [x0, #224] - str q13, [x1] - str q14, [x1, #32] - str q15, [x1, #64] - str q16, [x1, #96] - str q17, [x1, #128] - str q18, [x1, #160] - str q19, [x1, #192] - str q20, [x1, #224] - ldr q5, [x0, #16] - ldr q6, [x0, #48] - ldr q7, [x0, #80] - ldr q8, [x0, #112] - ldr q9, [x0, #144] - ldr q10, [x0, #176] - ldr q11, [x0, #208] - ldr q12, [x0, #240] - ldr q13, [x1, #16] - ldr q14, [x1, #48] - ldr q15, [x1, #80] - ldr q16, [x1, #112] - ldr q17, [x1, #144] - ldr q18, [x1, #176] - ldr q19, [x1, #208] - ldr q20, [x1, #240] - ldr q0, [x2] - ldr q1, [x3] - mul v29.8h, v13.8h, v1.h[1] - mul v30.8h, v14.8h, v1.h[1] - sqrdmulh v21.8h, v13.8h, v0.h[1] - sqrdmulh v22.8h, v14.8h, v0.h[1] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v15.8h, v1.h[1] - mul v30.8h, v16.8h, v1.h[1] - sqrdmulh v23.8h, v15.8h, v0.h[1] - sqrdmulh v24.8h, v16.8h, v0.h[1] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v17.8h, v1.h[1] - mul v30.8h, v18.8h, v1.h[1] - sqrdmulh v25.8h, v17.8h, v0.h[1] - sqrdmulh v26.8h, v18.8h, v0.h[1] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[1] - mul v30.8h, v20.8h, v1.h[1] - sqrdmulh v27.8h, v19.8h, v0.h[1] - sqrdmulh v28.8h, v20.8h, v0.h[1] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v13.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v14.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v15.8h, v7.8h, v23.8h - add v7.8h, v7.8h, v23.8h - sub v16.8h, v8.8h, v24.8h - add v8.8h, v8.8h, v24.8h - sub v17.8h, v9.8h, v25.8h - add v9.8h, v9.8h, v25.8h - sub v18.8h, v10.8h, v26.8h - add v10.8h, v10.8h, v26.8h - sub v19.8h, v11.8h, v27.8h - add v11.8h, v11.8h, v27.8h - sub v20.8h, v12.8h, v28.8h - add v12.8h, v12.8h, v28.8h - mul v29.8h, v9.8h, v1.h[2] - mul v30.8h, v10.8h, v1.h[2] - sqrdmulh v21.8h, v9.8h, v0.h[2] - sqrdmulh v22.8h, v10.8h, v0.h[2] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v11.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[2] - sqrdmulh v23.8h, v11.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[2] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v17.8h, v1.h[3] - mul v30.8h, v18.8h, v1.h[3] - sqrdmulh v25.8h, v17.8h, v0.h[3] - sqrdmulh v26.8h, v18.8h, v0.h[3] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[3] - mul v30.8h, v20.8h, v1.h[3] - sqrdmulh v27.8h, v19.8h, v0.h[3] - sqrdmulh v28.8h, v20.8h, v0.h[3] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v9.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v10.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v11.8h, v7.8h, v23.8h - add v7.8h, v7.8h, v23.8h - sub v12.8h, v8.8h, v24.8h - add v8.8h, v8.8h, v24.8h - sub v17.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v18.8h, v14.8h, v26.8h - add v14.8h, v14.8h, v26.8h - sub v19.8h, v15.8h, v27.8h - add v15.8h, v15.8h, v27.8h - sub v20.8h, v16.8h, v28.8h - add v16.8h, v16.8h, v28.8h - mul v29.8h, v7.8h, v1.h[4] - mul v30.8h, v8.8h, v1.h[4] - sqrdmulh v21.8h, v7.8h, v0.h[4] - sqrdmulh v22.8h, v8.8h, v0.h[4] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v11.8h, v1.h[5] - mul v30.8h, v12.8h, v1.h[5] - sqrdmulh v23.8h, v11.8h, v0.h[5] - sqrdmulh v24.8h, v12.8h, v0.h[5] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v15.8h, v1.h[6] - mul v30.8h, v16.8h, v1.h[6] - sqrdmulh v25.8h, v15.8h, v0.h[6] - sqrdmulh v26.8h, v16.8h, v0.h[6] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v19.8h, v1.h[7] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v19.8h, v0.h[7] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v7.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v6.8h, v22.8h - add v6.8h, v6.8h, v22.8h - sub v11.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v10.8h, v24.8h - add v10.8h, v10.8h, v24.8h - sub v15.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v14.8h, v26.8h - add v14.8h, v14.8h, v26.8h - sub v19.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v18.8h, v28.8h - add v18.8h, v18.8h, v28.8h - ldr q0, [x2, #16] - ldr q1, [x3, #16] - mul v29.8h, v6.8h, v1.h[0] - mul v30.8h, v8.8h, v1.h[1] - sqrdmulh v21.8h, v6.8h, v0.h[0] - sqrdmulh v22.8h, v8.8h, v0.h[1] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v10.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[3] - sqrdmulh v23.8h, v10.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[3] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v14.8h, v1.h[4] - mul v30.8h, v16.8h, v1.h[5] - sqrdmulh v25.8h, v14.8h, v0.h[4] - sqrdmulh v26.8h, v16.8h, v0.h[5] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v18.8h, v1.h[6] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v18.8h, v0.h[6] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - str q5, [x0, #16] - str q6, [x0, #48] - str q7, [x0, #80] - str q8, [x0, #112] - str q9, [x0, #144] - str q10, [x0, #176] - str q11, [x0, #208] - str q12, [x0, #240] - str q13, [x1, #16] - str q14, [x1, #48] - str q15, [x1, #80] - str q16, [x1, #112] - str q17, [x1, #144] - str q18, [x1, #176] - str q19, [x1, #208] - str q20, [x1, #240] - ldp q5, q6, [x0] - ldp q7, q8, [x0, #32] - ldp q9, q10, [x0, #64] - ldp q11, q12, [x0, #96] - ldp q13, q14, [x0, #128] - ldp q15, q16, [x0, #160] - ldp q17, q18, [x0, #192] - ldp q19, q20, [x0, #224] - ldr q0, [x2, #32] - ldr q1, [x3, #32] - mul v29.8h, v6.8h, v1.h[0] - mul v30.8h, v8.8h, v1.h[1] - sqrdmulh v21.8h, v6.8h, v0.h[0] - sqrdmulh v22.8h, v8.8h, v0.h[1] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v10.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[3] - sqrdmulh v23.8h, v10.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[3] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v14.8h, v1.h[4] - mul v30.8h, v16.8h, v1.h[5] - sqrdmulh v25.8h, v14.8h, v0.h[4] - sqrdmulh v26.8h, v16.8h, v0.h[5] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v18.8h, v1.h[6] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v18.8h, v0.h[6] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - ldr q0, [x2, #64] - ldr q2, [x2, #80] - ldr q1, [x3, #64] - ldr q3, [x3, #80] - mov v29.16b, v5.16b - mov v30.16b, v7.16b - trn1 v5.2d, v5.2d, v6.2d - trn1 v7.2d, v7.2d, v8.2d - trn2 v6.2d, v29.2d, v6.2d - trn2 v8.2d, v30.2d, v8.2d - mul v29.8h, v6.8h, v1.8h - mul v30.8h, v8.8h, v3.8h - sqrdmulh v21.8h, v6.8h, v0.8h - sqrdmulh v22.8h, v8.8h, v2.8h - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - ldr q0, [x2, #96] - ldr q2, [x2, #112] - ldr q1, [x3, #96] - ldr q3, [x3, #112] - mov v29.16b, v9.16b - mov v30.16b, v11.16b - trn1 v9.2d, v9.2d, v10.2d - trn1 v11.2d, v11.2d, v12.2d - trn2 v10.2d, v29.2d, v10.2d - trn2 v12.2d, v30.2d, v12.2d - mul v29.8h, v10.8h, v1.8h - mul v30.8h, v12.8h, v3.8h - sqrdmulh v23.8h, v10.8h, v0.8h - sqrdmulh v24.8h, v12.8h, v2.8h - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #128] - ldr q2, [x2, #144] - ldr q1, [x3, #128] - ldr q3, [x3, #144] - mov v29.16b, v13.16b - mov v30.16b, v15.16b - trn1 v13.2d, v13.2d, v14.2d - trn1 v15.2d, v15.2d, v16.2d - trn2 v14.2d, v29.2d, v14.2d - trn2 v16.2d, v30.2d, v16.2d - mul v29.8h, v14.8h, v1.8h - mul v30.8h, v16.8h, v3.8h - sqrdmulh v25.8h, v14.8h, v0.8h - sqrdmulh v26.8h, v16.8h, v2.8h - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - ldr q0, [x2, #160] - ldr q2, [x2, #176] - ldr q1, [x3, #160] - ldr q3, [x3, #176] - mov v29.16b, v17.16b - mov v30.16b, v19.16b - trn1 v17.2d, v17.2d, v18.2d - trn1 v19.2d, v19.2d, v20.2d - trn2 v18.2d, v29.2d, v18.2d - trn2 v20.2d, v30.2d, v20.2d - mul v29.8h, v18.8h, v1.8h - mul v30.8h, v20.8h, v3.8h - sqrdmulh v27.8h, v18.8h, v0.8h - sqrdmulh v28.8h, v20.8h, v2.8h - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - ldr q0, [x2, #320] - ldr q2, [x2, #336] - ldr q1, [x3, #320] - ldr q3, [x3, #336] - mov v29.16b, v5.16b - mov v30.16b, v7.16b - trn1 v5.4s, v5.4s, v6.4s - trn1 v7.4s, v7.4s, v8.4s - trn2 v6.4s, v29.4s, v6.4s - trn2 v8.4s, v30.4s, v8.4s - mul v29.8h, v6.8h, v1.8h - mul v30.8h, v8.8h, v3.8h - sqrdmulh v21.8h, v6.8h, v0.8h - sqrdmulh v22.8h, v8.8h, v2.8h - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - ldr q0, [x2, #352] - ldr q2, [x2, #368] - ldr q1, [x3, #352] - ldr q3, [x3, #368] - mov v29.16b, v9.16b - mov v30.16b, v11.16b - trn1 v9.4s, v9.4s, v10.4s - trn1 v11.4s, v11.4s, v12.4s - trn2 v10.4s, v29.4s, v10.4s - trn2 v12.4s, v30.4s, v12.4s - mul v29.8h, v10.8h, v1.8h - mul v30.8h, v12.8h, v3.8h - sqrdmulh v23.8h, v10.8h, v0.8h - sqrdmulh v24.8h, v12.8h, v2.8h - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #384] - ldr q2, [x2, #400] - ldr q1, [x3, #384] - ldr q3, [x3, #400] - mov v29.16b, v13.16b - mov v30.16b, v15.16b - trn1 v13.4s, v13.4s, v14.4s - trn1 v15.4s, v15.4s, v16.4s - trn2 v14.4s, v29.4s, v14.4s - trn2 v16.4s, v30.4s, v16.4s - mul v29.8h, v14.8h, v1.8h - mul v30.8h, v16.8h, v3.8h - sqrdmulh v25.8h, v14.8h, v0.8h - sqrdmulh v26.8h, v16.8h, v2.8h - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - ldr q0, [x2, #416] - ldr q2, [x2, #432] - ldr q1, [x3, #416] - ldr q3, [x3, #432] - mov v29.16b, v17.16b - mov v30.16b, v19.16b - trn1 v17.4s, v17.4s, v18.4s - trn1 v19.4s, v19.4s, v20.4s - trn2 v18.4s, v29.4s, v18.4s - trn2 v20.4s, v30.4s, v20.4s - mul v29.8h, v18.8h, v1.8h - mul v30.8h, v20.8h, v3.8h - sqrdmulh v27.8h, v18.8h, v0.8h - sqrdmulh v28.8h, v20.8h, v2.8h - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - sqdmulh v21.8h, v5.8h, v4.h[2] - sqdmulh v22.8h, v6.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v5.8h, v21.8h, v4.h[0] - mls v6.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v7.8h, v4.h[2] - sqdmulh v22.8h, v8.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v7.8h, v21.8h, v4.h[0] - mls v8.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v9.8h, v4.h[2] - sqdmulh v22.8h, v10.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v9.8h, v21.8h, v4.h[0] - mls v10.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v11.8h, v4.h[2] - sqdmulh v22.8h, v12.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v11.8h, v21.8h, v4.h[0] - mls v12.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v13.8h, v4.h[2] - sqdmulh v22.8h, v14.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v13.8h, v21.8h, v4.h[0] - mls v14.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v15.8h, v4.h[2] - sqdmulh v22.8h, v16.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v15.8h, v21.8h, v4.h[0] - mls v16.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v17.8h, v4.h[2] - sqdmulh v22.8h, v18.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v17.8h, v21.8h, v4.h[0] - mls v18.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v19.8h, v4.h[2] - sqdmulh v22.8h, v20.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v19.8h, v21.8h, v4.h[0] - mls v20.8h, v22.8h, v4.h[0] - mov v29.16b, v5.16b - trn1 v5.4s, v5.4s, v6.4s - trn2 v6.4s, v29.4s, v6.4s - mov v29.16b, v5.16b - trn1 v5.2d, v5.2d, v6.2d - trn2 v6.2d, v29.2d, v6.2d - mov v29.16b, v7.16b - trn1 v7.4s, v7.4s, v8.4s - trn2 v8.4s, v29.4s, v8.4s - mov v29.16b, v7.16b - trn1 v7.2d, v7.2d, v8.2d - trn2 v8.2d, v29.2d, v8.2d - mov v29.16b, v9.16b - trn1 v9.4s, v9.4s, v10.4s - trn2 v10.4s, v29.4s, v10.4s - mov v29.16b, v9.16b - trn1 v9.2d, v9.2d, v10.2d - trn2 v10.2d, v29.2d, v10.2d - mov v29.16b, v11.16b - trn1 v11.4s, v11.4s, v12.4s - trn2 v12.4s, v29.4s, v12.4s - mov v29.16b, v11.16b - trn1 v11.2d, v11.2d, v12.2d - trn2 v12.2d, v29.2d, v12.2d - mov v29.16b, v13.16b - trn1 v13.4s, v13.4s, v14.4s - trn2 v14.4s, v29.4s, v14.4s - mov v29.16b, v13.16b - trn1 v13.2d, v13.2d, v14.2d - trn2 v14.2d, v29.2d, v14.2d - mov v29.16b, v15.16b - trn1 v15.4s, v15.4s, v16.4s - trn2 v16.4s, v29.4s, v16.4s - mov v29.16b, v15.16b - trn1 v15.2d, v15.2d, v16.2d - trn2 v16.2d, v29.2d, v16.2d - mov v29.16b, v17.16b - trn1 v17.4s, v17.4s, v18.4s - trn2 v18.4s, v29.4s, v18.4s - mov v29.16b, v17.16b - trn1 v17.2d, v17.2d, v18.2d - trn2 v18.2d, v29.2d, v18.2d - mov v29.16b, v19.16b - trn1 v19.4s, v19.4s, v20.4s - trn2 v20.4s, v29.4s, v20.4s - mov v29.16b, v19.16b - trn1 v19.2d, v19.2d, v20.2d - trn2 v20.2d, v29.2d, v20.2d - stp q5, q6, [x0] - stp q7, q8, [x0, #32] - stp q9, q10, [x0, #64] - stp q11, q12, [x0, #96] - stp q13, q14, [x0, #128] - stp q15, q16, [x0, #160] - stp q17, q18, [x0, #192] - stp q19, q20, [x0, #224] - ldp q5, q6, [x1] - ldp q7, q8, [x1, #32] - ldp q9, q10, [x1, #64] - ldp q11, q12, [x1, #96] - ldp q13, q14, [x1, #128] - ldp q15, q16, [x1, #160] - ldp q17, q18, [x1, #192] - ldp q19, q20, [x1, #224] - ldr q0, [x2, #48] - ldr q1, [x3, #48] - mul v29.8h, v6.8h, v1.h[0] - mul v30.8h, v8.8h, v1.h[1] - sqrdmulh v21.8h, v6.8h, v0.h[0] - sqrdmulh v22.8h, v8.8h, v0.h[1] - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v29.8h, v10.8h, v1.h[2] - mul v30.8h, v12.8h, v1.h[3] - sqrdmulh v23.8h, v10.8h, v0.h[2] - sqrdmulh v24.8h, v12.8h, v0.h[3] - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v29.8h, v14.8h, v1.h[4] - mul v30.8h, v16.8h, v1.h[5] - sqrdmulh v25.8h, v14.8h, v0.h[4] - sqrdmulh v26.8h, v16.8h, v0.h[5] - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - mul v29.8h, v18.8h, v1.h[6] - mul v30.8h, v20.8h, v1.h[7] - sqrdmulh v27.8h, v18.8h, v0.h[6] - sqrdmulh v28.8h, v20.8h, v0.h[7] - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - ldr q0, [x2, #192] - ldr q2, [x2, #208] - ldr q1, [x3, #192] - ldr q3, [x3, #208] - mov v29.16b, v5.16b - mov v30.16b, v7.16b - trn1 v5.2d, v5.2d, v6.2d - trn1 v7.2d, v7.2d, v8.2d - trn2 v6.2d, v29.2d, v6.2d - trn2 v8.2d, v30.2d, v8.2d - mul v29.8h, v6.8h, v1.8h - mul v30.8h, v8.8h, v3.8h - sqrdmulh v21.8h, v6.8h, v0.8h - sqrdmulh v22.8h, v8.8h, v2.8h - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - ldr q0, [x2, #224] - ldr q2, [x2, #240] - ldr q1, [x3, #224] - ldr q3, [x3, #240] - mov v29.16b, v9.16b - mov v30.16b, v11.16b - trn1 v9.2d, v9.2d, v10.2d - trn1 v11.2d, v11.2d, v12.2d - trn2 v10.2d, v29.2d, v10.2d - trn2 v12.2d, v30.2d, v12.2d - mul v29.8h, v10.8h, v1.8h - mul v30.8h, v12.8h, v3.8h - sqrdmulh v23.8h, v10.8h, v0.8h - sqrdmulh v24.8h, v12.8h, v2.8h - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #256] - ldr q2, [x2, #272] - ldr q1, [x3, #256] - ldr q3, [x3, #272] - mov v29.16b, v13.16b - mov v30.16b, v15.16b - trn1 v13.2d, v13.2d, v14.2d - trn1 v15.2d, v15.2d, v16.2d - trn2 v14.2d, v29.2d, v14.2d - trn2 v16.2d, v30.2d, v16.2d - mul v29.8h, v14.8h, v1.8h - mul v30.8h, v16.8h, v3.8h - sqrdmulh v25.8h, v14.8h, v0.8h - sqrdmulh v26.8h, v16.8h, v2.8h - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - ldr q0, [x2, #288] - ldr q2, [x2, #304] - ldr q1, [x3, #288] - ldr q3, [x3, #304] - mov v29.16b, v17.16b - mov v30.16b, v19.16b - trn1 v17.2d, v17.2d, v18.2d - trn1 v19.2d, v19.2d, v20.2d - trn2 v18.2d, v29.2d, v18.2d - trn2 v20.2d, v30.2d, v20.2d - mul v29.8h, v18.8h, v1.8h - mul v30.8h, v20.8h, v3.8h - sqrdmulh v27.8h, v18.8h, v0.8h - sqrdmulh v28.8h, v20.8h, v2.8h - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - ldr q0, [x2, #448] - ldr q2, [x2, #464] - ldr q1, [x3, #448] - ldr q3, [x3, #464] - mov v29.16b, v5.16b - mov v30.16b, v7.16b - trn1 v5.4s, v5.4s, v6.4s - trn1 v7.4s, v7.4s, v8.4s - trn2 v6.4s, v29.4s, v6.4s - trn2 v8.4s, v30.4s, v8.4s - mul v29.8h, v6.8h, v1.8h - mul v30.8h, v8.8h, v3.8h - sqrdmulh v21.8h, v6.8h, v0.8h - sqrdmulh v22.8h, v8.8h, v2.8h - sqrdmlsh v21.8h, v29.8h, v4.h[0] - sqrdmlsh v22.8h, v30.8h, v4.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - ldr q0, [x2, #480] - ldr q2, [x2, #496] - ldr q1, [x3, #480] - ldr q3, [x3, #496] - mov v29.16b, v9.16b - mov v30.16b, v11.16b - trn1 v9.4s, v9.4s, v10.4s - trn1 v11.4s, v11.4s, v12.4s - trn2 v10.4s, v29.4s, v10.4s - trn2 v12.4s, v30.4s, v12.4s - mul v29.8h, v10.8h, v1.8h - mul v30.8h, v12.8h, v3.8h - sqrdmulh v23.8h, v10.8h, v0.8h - sqrdmulh v24.8h, v12.8h, v2.8h - sqrdmlsh v23.8h, v29.8h, v4.h[0] - sqrdmlsh v24.8h, v30.8h, v4.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #512] - ldr q2, [x2, #528] - ldr q1, [x3, #512] - ldr q3, [x3, #528] - mov v29.16b, v13.16b - mov v30.16b, v15.16b - trn1 v13.4s, v13.4s, v14.4s - trn1 v15.4s, v15.4s, v16.4s - trn2 v14.4s, v29.4s, v14.4s - trn2 v16.4s, v30.4s, v16.4s - mul v29.8h, v14.8h, v1.8h - mul v30.8h, v16.8h, v3.8h - sqrdmulh v25.8h, v14.8h, v0.8h - sqrdmulh v26.8h, v16.8h, v2.8h - sqrdmlsh v25.8h, v29.8h, v4.h[0] - sqrdmlsh v26.8h, v30.8h, v4.h[0] - sshr v25.8h, v25.8h, #1 - sshr v26.8h, v26.8h, #1 - ldr q0, [x2, #544] - ldr q2, [x2, #560] - ldr q1, [x3, #544] - ldr q3, [x3, #560] - mov v29.16b, v17.16b - mov v30.16b, v19.16b - trn1 v17.4s, v17.4s, v18.4s - trn1 v19.4s, v19.4s, v20.4s - trn2 v18.4s, v29.4s, v18.4s - trn2 v20.4s, v30.4s, v20.4s - mul v29.8h, v18.8h, v1.8h - mul v30.8h, v20.8h, v3.8h - sqrdmulh v27.8h, v18.8h, v0.8h - sqrdmulh v28.8h, v20.8h, v2.8h - sqrdmlsh v27.8h, v29.8h, v4.h[0] - sqrdmlsh v28.8h, v30.8h, v4.h[0] - sshr v27.8h, v27.8h, #1 - sshr v28.8h, v28.8h, #1 - sub v6.8h, v5.8h, v21.8h - add v5.8h, v5.8h, v21.8h - sub v8.8h, v7.8h, v22.8h - add v7.8h, v7.8h, v22.8h - sub v10.8h, v9.8h, v23.8h - add v9.8h, v9.8h, v23.8h - sub v12.8h, v11.8h, v24.8h - add v11.8h, v11.8h, v24.8h - sub v14.8h, v13.8h, v25.8h - add v13.8h, v13.8h, v25.8h - sub v16.8h, v15.8h, v26.8h - add v15.8h, v15.8h, v26.8h - sub v18.8h, v17.8h, v27.8h - add v17.8h, v17.8h, v27.8h - sub v20.8h, v19.8h, v28.8h - add v19.8h, v19.8h, v28.8h - sqdmulh v21.8h, v5.8h, v4.h[2] - sqdmulh v22.8h, v6.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v5.8h, v21.8h, v4.h[0] - mls v6.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v7.8h, v4.h[2] - sqdmulh v22.8h, v8.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v7.8h, v21.8h, v4.h[0] - mls v8.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v9.8h, v4.h[2] - sqdmulh v22.8h, v10.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v9.8h, v21.8h, v4.h[0] - mls v10.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v11.8h, v4.h[2] - sqdmulh v22.8h, v12.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v11.8h, v21.8h, v4.h[0] - mls v12.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v13.8h, v4.h[2] - sqdmulh v22.8h, v14.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v13.8h, v21.8h, v4.h[0] - mls v14.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v15.8h, v4.h[2] - sqdmulh v22.8h, v16.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v15.8h, v21.8h, v4.h[0] - mls v16.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v17.8h, v4.h[2] - sqdmulh v22.8h, v18.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v17.8h, v21.8h, v4.h[0] - mls v18.8h, v22.8h, v4.h[0] - sqdmulh v21.8h, v19.8h, v4.h[2] - sqdmulh v22.8h, v20.8h, v4.h[2] - sshr v21.8h, v21.8h, #11 - sshr v22.8h, v22.8h, #11 - mls v19.8h, v21.8h, v4.h[0] - mls v20.8h, v22.8h, v4.h[0] - mov v29.16b, v5.16b - trn1 v5.4s, v5.4s, v6.4s - trn2 v6.4s, v29.4s, v6.4s - mov v29.16b, v5.16b - trn1 v5.2d, v5.2d, v6.2d - trn2 v6.2d, v29.2d, v6.2d - mov v29.16b, v7.16b - trn1 v7.4s, v7.4s, v8.4s - trn2 v8.4s, v29.4s, v8.4s - mov v29.16b, v7.16b - trn1 v7.2d, v7.2d, v8.2d - trn2 v8.2d, v29.2d, v8.2d - mov v29.16b, v9.16b - trn1 v9.4s, v9.4s, v10.4s - trn2 v10.4s, v29.4s, v10.4s - mov v29.16b, v9.16b - trn1 v9.2d, v9.2d, v10.2d - trn2 v10.2d, v29.2d, v10.2d - mov v29.16b, v11.16b - trn1 v11.4s, v11.4s, v12.4s - trn2 v12.4s, v29.4s, v12.4s - mov v29.16b, v11.16b - trn1 v11.2d, v11.2d, v12.2d - trn2 v12.2d, v29.2d, v12.2d - mov v29.16b, v13.16b - trn1 v13.4s, v13.4s, v14.4s - trn2 v14.4s, v29.4s, v14.4s - mov v29.16b, v13.16b - trn1 v13.2d, v13.2d, v14.2d - trn2 v14.2d, v29.2d, v14.2d - mov v29.16b, v15.16b - trn1 v15.4s, v15.4s, v16.4s - trn2 v16.4s, v29.4s, v16.4s - mov v29.16b, v15.16b - trn1 v15.2d, v15.2d, v16.2d - trn2 v16.2d, v29.2d, v16.2d - mov v29.16b, v17.16b - trn1 v17.4s, v17.4s, v18.4s - trn2 v18.4s, v29.4s, v18.4s - mov v29.16b, v17.16b - trn1 v17.2d, v17.2d, v18.2d - trn2 v18.2d, v29.2d, v18.2d - mov v29.16b, v19.16b - trn1 v19.4s, v19.4s, v20.4s - trn2 v20.4s, v29.4s, v20.4s - mov v29.16b, v19.16b - trn1 v19.2d, v19.2d, v20.2d - trn2 v20.2d, v29.2d, v20.2d - stp q5, q6, [x1] - stp q7, q8, [x1, #32] - stp q9, q10, [x1, #64] - stp q11, q12, [x1, #96] - stp q13, q14, [x1, #128] - stp q15, q16, [x1, #160] - stp q17, q18, [x1, #192] - stp q19, q20, [x1, #224] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldr Q4, [x4] + ldr Q5, [x0] + ldr Q6, [x0, #32] + ldr Q7, [x0, #64] + ldr Q8, [x0, #96] + ldr Q9, [x0, #128] + ldr Q10, [x0, #160] + ldr Q11, [x0, #192] + ldr Q12, [x0, #224] + ldr Q13, [x1] + ldr Q14, [x1, #32] + ldr Q15, [x1, #64] + ldr Q16, [x1, #96] + ldr Q17, [x1, #128] + ldr Q18, [x1, #160] + ldr Q19, [x1, #192] + ldr Q20, [x1, #224] + ldr Q0, [x2] + ldr Q1, [x3] + mul V29.8H, V13.8H, V1.H[1] + mul V30.8H, V14.8H, V1.H[1] + sqrdmulh V21.8H, V13.8H, V0.H[1] + sqrdmulh V22.8H, V14.8H, V0.H[1] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V15.8H, V1.H[1] + mul V30.8H, V16.8H, V1.H[1] + sqrdmulh V23.8H, V15.8H, V0.H[1] + sqrdmulh V24.8H, V16.8H, V0.H[1] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V17.8H, V1.H[1] + mul V30.8H, V18.8H, V1.H[1] + sqrdmulh V25.8H, V17.8H, V0.H[1] + sqrdmulh V26.8H, V18.8H, V0.H[1] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[1] + mul V30.8H, V20.8H, V1.H[1] + sqrdmulh V27.8H, V19.8H, V0.H[1] + sqrdmulh V28.8H, V20.8H, V0.H[1] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V13.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V14.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V15.8H, V7.8H, V23.8H + add V7.8H, V7.8H, V23.8H + sub V16.8H, V8.8H, V24.8H + add V8.8H, V8.8H, V24.8H + sub V17.8H, V9.8H, V25.8H + add V9.8H, V9.8H, V25.8H + sub V18.8H, V10.8H, V26.8H + add V10.8H, V10.8H, V26.8H + sub V19.8H, V11.8H, V27.8H + add V11.8H, V11.8H, V27.8H + sub V20.8H, V12.8H, V28.8H + add V12.8H, V12.8H, V28.8H + mul V29.8H, V9.8H, V1.H[2] + mul V30.8H, V10.8H, V1.H[2] + sqrdmulh V21.8H, V9.8H, V0.H[2] + sqrdmulh V22.8H, V10.8H, V0.H[2] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V11.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[2] + sqrdmulh V23.8H, V11.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[2] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V17.8H, V1.H[3] + mul V30.8H, V18.8H, V1.H[3] + sqrdmulh V25.8H, V17.8H, V0.H[3] + sqrdmulh V26.8H, V18.8H, V0.H[3] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[3] + mul V30.8H, V20.8H, V1.H[3] + sqrdmulh V27.8H, V19.8H, V0.H[3] + sqrdmulh V28.8H, V20.8H, V0.H[3] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V9.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V10.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V11.8H, V7.8H, V23.8H + add V7.8H, V7.8H, V23.8H + sub V12.8H, V8.8H, V24.8H + add V8.8H, V8.8H, V24.8H + sub V17.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V18.8H, V14.8H, V26.8H + add V14.8H, V14.8H, V26.8H + sub V19.8H, V15.8H, V27.8H + add V15.8H, V15.8H, V27.8H + sub V20.8H, V16.8H, V28.8H + add V16.8H, V16.8H, V28.8H + mul V29.8H, V7.8H, V1.H[4] + mul V30.8H, V8.8H, V1.H[4] + sqrdmulh V21.8H, V7.8H, V0.H[4] + sqrdmulh V22.8H, V8.8H, V0.H[4] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V11.8H, V1.H[5] + mul V30.8H, V12.8H, V1.H[5] + sqrdmulh V23.8H, V11.8H, V0.H[5] + sqrdmulh V24.8H, V12.8H, V0.H[5] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V15.8H, V1.H[6] + mul V30.8H, V16.8H, V1.H[6] + sqrdmulh V25.8H, V15.8H, V0.H[6] + sqrdmulh V26.8H, V16.8H, V0.H[6] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[7] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V19.8H, V0.H[7] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V7.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V11.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V10.8H, V24.8H + add V10.8H, V10.8H, V24.8H + sub V15.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V14.8H, V26.8H + add V14.8H, V14.8H, V26.8H + sub V19.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V18.8H, V28.8H + add V18.8H, V18.8H, V28.8H + ldr Q0, [x2, #16] + ldr Q1, [x3, #16] + mul V29.8H, V6.8H, V1.H[0] + mul V30.8H, V8.8H, V1.H[1] + sqrdmulh V21.8H, V6.8H, V0.H[0] + sqrdmulh V22.8H, V8.8H, V0.H[1] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V10.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[3] + sqrdmulh V23.8H, V10.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[3] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V14.8H, V1.H[4] + mul V30.8H, V16.8H, V1.H[5] + sqrdmulh V25.8H, V14.8H, V0.H[4] + sqrdmulh V26.8H, V16.8H, V0.H[5] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V18.8H, V1.H[6] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V18.8H, V0.H[6] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + str Q5, [x0] + str Q6, [x0, #32] + str Q7, [x0, #64] + str Q8, [x0, #96] + str Q9, [x0, #128] + str Q10, [x0, #160] + str Q11, [x0, #192] + str Q12, [x0, #224] + str Q13, [x1] + str Q14, [x1, #32] + str Q15, [x1, #64] + str Q16, [x1, #96] + str Q17, [x1, #128] + str Q18, [x1, #160] + str Q19, [x1, #192] + str Q20, [x1, #224] + ldr Q5, [x0, #16] + ldr Q6, [x0, #48] + ldr Q7, [x0, #80] + ldr Q8, [x0, #112] + ldr Q9, [x0, #144] + ldr Q10, [x0, #176] + ldr Q11, [x0, #208] + ldr Q12, [x0, #240] + ldr Q13, [x1, #16] + ldr Q14, [x1, #48] + ldr Q15, [x1, #80] + ldr Q16, [x1, #112] + ldr Q17, [x1, #144] + ldr Q18, [x1, #176] + ldr Q19, [x1, #208] + ldr Q20, [x1, #240] + ldr Q0, [x2] + ldr Q1, [x3] + mul V29.8H, V13.8H, V1.H[1] + mul V30.8H, V14.8H, V1.H[1] + sqrdmulh V21.8H, V13.8H, V0.H[1] + sqrdmulh V22.8H, V14.8H, V0.H[1] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V15.8H, V1.H[1] + mul V30.8H, V16.8H, V1.H[1] + sqrdmulh V23.8H, V15.8H, V0.H[1] + sqrdmulh V24.8H, V16.8H, V0.H[1] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V17.8H, V1.H[1] + mul V30.8H, V18.8H, V1.H[1] + sqrdmulh V25.8H, V17.8H, V0.H[1] + sqrdmulh V26.8H, V18.8H, V0.H[1] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[1] + mul V30.8H, V20.8H, V1.H[1] + sqrdmulh V27.8H, V19.8H, V0.H[1] + sqrdmulh V28.8H, V20.8H, V0.H[1] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V13.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V14.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V15.8H, V7.8H, V23.8H + add V7.8H, V7.8H, V23.8H + sub V16.8H, V8.8H, V24.8H + add V8.8H, V8.8H, V24.8H + sub V17.8H, V9.8H, V25.8H + add V9.8H, V9.8H, V25.8H + sub V18.8H, V10.8H, V26.8H + add V10.8H, V10.8H, V26.8H + sub V19.8H, V11.8H, V27.8H + add V11.8H, V11.8H, V27.8H + sub V20.8H, V12.8H, V28.8H + add V12.8H, V12.8H, V28.8H + mul V29.8H, V9.8H, V1.H[2] + mul V30.8H, V10.8H, V1.H[2] + sqrdmulh V21.8H, V9.8H, V0.H[2] + sqrdmulh V22.8H, V10.8H, V0.H[2] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V11.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[2] + sqrdmulh V23.8H, V11.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[2] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V17.8H, V1.H[3] + mul V30.8H, V18.8H, V1.H[3] + sqrdmulh V25.8H, V17.8H, V0.H[3] + sqrdmulh V26.8H, V18.8H, V0.H[3] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[3] + mul V30.8H, V20.8H, V1.H[3] + sqrdmulh V27.8H, V19.8H, V0.H[3] + sqrdmulh V28.8H, V20.8H, V0.H[3] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V9.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V10.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V11.8H, V7.8H, V23.8H + add V7.8H, V7.8H, V23.8H + sub V12.8H, V8.8H, V24.8H + add V8.8H, V8.8H, V24.8H + sub V17.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V18.8H, V14.8H, V26.8H + add V14.8H, V14.8H, V26.8H + sub V19.8H, V15.8H, V27.8H + add V15.8H, V15.8H, V27.8H + sub V20.8H, V16.8H, V28.8H + add V16.8H, V16.8H, V28.8H + mul V29.8H, V7.8H, V1.H[4] + mul V30.8H, V8.8H, V1.H[4] + sqrdmulh V21.8H, V7.8H, V0.H[4] + sqrdmulh V22.8H, V8.8H, V0.H[4] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V11.8H, V1.H[5] + mul V30.8H, V12.8H, V1.H[5] + sqrdmulh V23.8H, V11.8H, V0.H[5] + sqrdmulh V24.8H, V12.8H, V0.H[5] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V15.8H, V1.H[6] + mul V30.8H, V16.8H, V1.H[6] + sqrdmulh V25.8H, V15.8H, V0.H[6] + sqrdmulh V26.8H, V16.8H, V0.H[6] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V19.8H, V1.H[7] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V19.8H, V0.H[7] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V7.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V6.8H, V22.8H + add V6.8H, V6.8H, V22.8H + sub V11.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V10.8H, V24.8H + add V10.8H, V10.8H, V24.8H + sub V15.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V14.8H, V26.8H + add V14.8H, V14.8H, V26.8H + sub V19.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V18.8H, V28.8H + add V18.8H, V18.8H, V28.8H + ldr Q0, [x2, #16] + ldr Q1, [x3, #16] + mul V29.8H, V6.8H, V1.H[0] + mul V30.8H, V8.8H, V1.H[1] + sqrdmulh V21.8H, V6.8H, V0.H[0] + sqrdmulh V22.8H, V8.8H, V0.H[1] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V10.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[3] + sqrdmulh V23.8H, V10.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[3] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V14.8H, V1.H[4] + mul V30.8H, V16.8H, V1.H[5] + sqrdmulh V25.8H, V14.8H, V0.H[4] + sqrdmulh V26.8H, V16.8H, V0.H[5] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V18.8H, V1.H[6] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V18.8H, V0.H[6] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + str Q5, [x0, #16] + str Q6, [x0, #48] + str Q7, [x0, #80] + str Q8, [x0, #112] + str Q9, [x0, #144] + str Q10, [x0, #176] + str Q11, [x0, #208] + str Q12, [x0, #240] + str Q13, [x1, #16] + str Q14, [x1, #48] + str Q15, [x1, #80] + str Q16, [x1, #112] + str Q17, [x1, #144] + str Q18, [x1, #176] + str Q19, [x1, #208] + str Q20, [x1, #240] + ldp Q5, Q6, [x0] + ldp Q7, Q8, [x0, #32] + ldp Q9, Q10, [x0, #64] + ldp Q11, Q12, [x0, #96] + ldp Q13, Q14, [x0, #128] + ldp Q15, Q16, [x0, #160] + ldp Q17, Q18, [x0, #192] + ldp Q19, Q20, [x0, #224] + ldr Q0, [x2, #32] + ldr Q1, [x3, #32] + mul V29.8H, V6.8H, V1.H[0] + mul V30.8H, V8.8H, V1.H[1] + sqrdmulh V21.8H, V6.8H, V0.H[0] + sqrdmulh V22.8H, V8.8H, V0.H[1] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V10.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[3] + sqrdmulh V23.8H, V10.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[3] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V14.8H, V1.H[4] + mul V30.8H, V16.8H, V1.H[5] + sqrdmulh V25.8H, V14.8H, V0.H[4] + sqrdmulh V26.8H, V16.8H, V0.H[5] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V18.8H, V1.H[6] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V18.8H, V0.H[6] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + ldr Q0, [x2, #64] + ldr Q2, [x2, #80] + ldr Q1, [x3, #64] + ldr Q3, [x3, #80] + mov V29.16B, V5.16B + mov V30.16B, V7.16B + trn1 V5.2D, V5.2D, V6.2D + trn1 V7.2D, V7.2D, V8.2D + trn2 V6.2D, V29.2D, V6.2D + trn2 V8.2D, V30.2D, V8.2D + mul V29.8H, V6.8H, V1.8H + mul V30.8H, V8.8H, V3.8H + sqrdmulh V21.8H, V6.8H, V0.8H + sqrdmulh V22.8H, V8.8H, V2.8H + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + ldr Q0, [x2, #96] + ldr Q2, [x2, #112] + ldr Q1, [x3, #96] + ldr Q3, [x3, #112] + mov V29.16B, V9.16B + mov V30.16B, V11.16B + trn1 V9.2D, V9.2D, V10.2D + trn1 V11.2D, V11.2D, V12.2D + trn2 V10.2D, V29.2D, V10.2D + trn2 V12.2D, V30.2D, V12.2D + mul V29.8H, V10.8H, V1.8H + mul V30.8H, V12.8H, V3.8H + sqrdmulh V23.8H, V10.8H, V0.8H + sqrdmulh V24.8H, V12.8H, V2.8H + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #128] + ldr Q2, [x2, #144] + ldr Q1, [x3, #128] + ldr Q3, [x3, #144] + mov V29.16B, V13.16B + mov V30.16B, V15.16B + trn1 V13.2D, V13.2D, V14.2D + trn1 V15.2D, V15.2D, V16.2D + trn2 V14.2D, V29.2D, V14.2D + trn2 V16.2D, V30.2D, V16.2D + mul V29.8H, V14.8H, V1.8H + mul V30.8H, V16.8H, V3.8H + sqrdmulh V25.8H, V14.8H, V0.8H + sqrdmulh V26.8H, V16.8H, V2.8H + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + ldr Q0, [x2, #160] + ldr Q2, [x2, #176] + ldr Q1, [x3, #160] + ldr Q3, [x3, #176] + mov V29.16B, V17.16B + mov V30.16B, V19.16B + trn1 V17.2D, V17.2D, V18.2D + trn1 V19.2D, V19.2D, V20.2D + trn2 V18.2D, V29.2D, V18.2D + trn2 V20.2D, V30.2D, V20.2D + mul V29.8H, V18.8H, V1.8H + mul V30.8H, V20.8H, V3.8H + sqrdmulh V27.8H, V18.8H, V0.8H + sqrdmulh V28.8H, V20.8H, V2.8H + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + ldr Q0, [x2, #320] + ldr Q2, [x2, #336] + ldr Q1, [x3, #320] + ldr Q3, [x3, #336] + mov V29.16B, V5.16B + mov V30.16B, V7.16B + trn1 V5.4S, V5.4S, V6.4S + trn1 V7.4S, V7.4S, V8.4S + trn2 V6.4S, V29.4S, V6.4S + trn2 V8.4S, V30.4S, V8.4S + mul V29.8H, V6.8H, V1.8H + mul V30.8H, V8.8H, V3.8H + sqrdmulh V21.8H, V6.8H, V0.8H + sqrdmulh V22.8H, V8.8H, V2.8H + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + ldr Q0, [x2, #352] + ldr Q2, [x2, #368] + ldr Q1, [x3, #352] + ldr Q3, [x3, #368] + mov V29.16B, V9.16B + mov V30.16B, V11.16B + trn1 V9.4S, V9.4S, V10.4S + trn1 V11.4S, V11.4S, V12.4S + trn2 V10.4S, V29.4S, V10.4S + trn2 V12.4S, V30.4S, V12.4S + mul V29.8H, V10.8H, V1.8H + mul V30.8H, V12.8H, V3.8H + sqrdmulh V23.8H, V10.8H, V0.8H + sqrdmulh V24.8H, V12.8H, V2.8H + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #384] + ldr Q2, [x2, #400] + ldr Q1, [x3, #384] + ldr Q3, [x3, #400] + mov V29.16B, V13.16B + mov V30.16B, V15.16B + trn1 V13.4S, V13.4S, V14.4S + trn1 V15.4S, V15.4S, V16.4S + trn2 V14.4S, V29.4S, V14.4S + trn2 V16.4S, V30.4S, V16.4S + mul V29.8H, V14.8H, V1.8H + mul V30.8H, V16.8H, V3.8H + sqrdmulh V25.8H, V14.8H, V0.8H + sqrdmulh V26.8H, V16.8H, V2.8H + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + ldr Q0, [x2, #416] + ldr Q2, [x2, #432] + ldr Q1, [x3, #416] + ldr Q3, [x3, #432] + mov V29.16B, V17.16B + mov V30.16B, V19.16B + trn1 V17.4S, V17.4S, V18.4S + trn1 V19.4S, V19.4S, V20.4S + trn2 V18.4S, V29.4S, V18.4S + trn2 V20.4S, V30.4S, V20.4S + mul V29.8H, V18.8H, V1.8H + mul V30.8H, V20.8H, V3.8H + sqrdmulh V27.8H, V18.8H, V0.8H + sqrdmulh V28.8H, V20.8H, V2.8H + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + sqdmulh V21.8H, V5.8H, V4.H[2] + sqdmulh V22.8H, V6.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V5.8H, V21.8H, V4.H[0] + mls V6.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V7.8H, V4.H[2] + sqdmulh V22.8H, V8.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V7.8H, V21.8H, V4.H[0] + mls V8.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V9.8H, V4.H[2] + sqdmulh V22.8H, V10.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V9.8H, V21.8H, V4.H[0] + mls V10.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V11.8H, V4.H[2] + sqdmulh V22.8H, V12.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V11.8H, V21.8H, V4.H[0] + mls V12.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V13.8H, V4.H[2] + sqdmulh V22.8H, V14.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V13.8H, V21.8H, V4.H[0] + mls V14.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V15.8H, V4.H[2] + sqdmulh V22.8H, V16.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V15.8H, V21.8H, V4.H[0] + mls V16.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V17.8H, V4.H[2] + sqdmulh V22.8H, V18.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V17.8H, V21.8H, V4.H[0] + mls V18.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V19.8H, V4.H[2] + sqdmulh V22.8H, V20.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V19.8H, V21.8H, V4.H[0] + mls V20.8H, V22.8H, V4.H[0] + mov V29.16B, V5.16B + trn1 V5.4S, V5.4S, V6.4S + trn2 V6.4S, V29.4S, V6.4S + mov V29.16B, V5.16B + trn1 V5.2D, V5.2D, V6.2D + trn2 V6.2D, V29.2D, V6.2D + mov V29.16B, V7.16B + trn1 V7.4S, V7.4S, V8.4S + trn2 V8.4S, V29.4S, V8.4S + mov V29.16B, V7.16B + trn1 V7.2D, V7.2D, V8.2D + trn2 V8.2D, V29.2D, V8.2D + mov V29.16B, V9.16B + trn1 V9.4S, V9.4S, V10.4S + trn2 V10.4S, V29.4S, V10.4S + mov V29.16B, V9.16B + trn1 V9.2D, V9.2D, V10.2D + trn2 V10.2D, V29.2D, V10.2D + mov V29.16B, V11.16B + trn1 V11.4S, V11.4S, V12.4S + trn2 V12.4S, V29.4S, V12.4S + mov V29.16B, V11.16B + trn1 V11.2D, V11.2D, V12.2D + trn2 V12.2D, V29.2D, V12.2D + mov V29.16B, V13.16B + trn1 V13.4S, V13.4S, V14.4S + trn2 V14.4S, V29.4S, V14.4S + mov V29.16B, V13.16B + trn1 V13.2D, V13.2D, V14.2D + trn2 V14.2D, V29.2D, V14.2D + mov V29.16B, V15.16B + trn1 V15.4S, V15.4S, V16.4S + trn2 V16.4S, V29.4S, V16.4S + mov V29.16B, V15.16B + trn1 V15.2D, V15.2D, V16.2D + trn2 V16.2D, V29.2D, V16.2D + mov V29.16B, V17.16B + trn1 V17.4S, V17.4S, V18.4S + trn2 V18.4S, V29.4S, V18.4S + mov V29.16B, V17.16B + trn1 V17.2D, V17.2D, V18.2D + trn2 V18.2D, V29.2D, V18.2D + mov V29.16B, V19.16B + trn1 V19.4S, V19.4S, V20.4S + trn2 V20.4S, V29.4S, V20.4S + mov V29.16B, V19.16B + trn1 V19.2D, V19.2D, V20.2D + trn2 V20.2D, V29.2D, V20.2D + stp Q5, Q6, [x0] + stp Q7, Q8, [x0, #32] + stp Q9, Q10, [x0, #64] + stp Q11, Q12, [x0, #96] + stp Q13, Q14, [x0, #128] + stp Q15, Q16, [x0, #160] + stp Q17, Q18, [x0, #192] + stp Q19, Q20, [x0, #224] + ldp Q5, Q6, [x1] + ldp Q7, Q8, [x1, #32] + ldp Q9, Q10, [x1, #64] + ldp Q11, Q12, [x1, #96] + ldp Q13, Q14, [x1, #128] + ldp Q15, Q16, [x1, #160] + ldp Q17, Q18, [x1, #192] + ldp Q19, Q20, [x1, #224] + ldr Q0, [x2, #48] + ldr Q1, [x3, #48] + mul V29.8H, V6.8H, V1.H[0] + mul V30.8H, V8.8H, V1.H[1] + sqrdmulh V21.8H, V6.8H, V0.H[0] + sqrdmulh V22.8H, V8.8H, V0.H[1] + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V29.8H, V10.8H, V1.H[2] + mul V30.8H, V12.8H, V1.H[3] + sqrdmulh V23.8H, V10.8H, V0.H[2] + sqrdmulh V24.8H, V12.8H, V0.H[3] + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V29.8H, V14.8H, V1.H[4] + mul V30.8H, V16.8H, V1.H[5] + sqrdmulh V25.8H, V14.8H, V0.H[4] + sqrdmulh V26.8H, V16.8H, V0.H[5] + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + mul V29.8H, V18.8H, V1.H[6] + mul V30.8H, V20.8H, V1.H[7] + sqrdmulh V27.8H, V18.8H, V0.H[6] + sqrdmulh V28.8H, V20.8H, V0.H[7] + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + ldr Q0, [x2, #192] + ldr Q2, [x2, #208] + ldr Q1, [x3, #192] + ldr Q3, [x3, #208] + mov V29.16B, V5.16B + mov V30.16B, V7.16B + trn1 V5.2D, V5.2D, V6.2D + trn1 V7.2D, V7.2D, V8.2D + trn2 V6.2D, V29.2D, V6.2D + trn2 V8.2D, V30.2D, V8.2D + mul V29.8H, V6.8H, V1.8H + mul V30.8H, V8.8H, V3.8H + sqrdmulh V21.8H, V6.8H, V0.8H + sqrdmulh V22.8H, V8.8H, V2.8H + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + ldr Q0, [x2, #224] + ldr Q2, [x2, #240] + ldr Q1, [x3, #224] + ldr Q3, [x3, #240] + mov V29.16B, V9.16B + mov V30.16B, V11.16B + trn1 V9.2D, V9.2D, V10.2D + trn1 V11.2D, V11.2D, V12.2D + trn2 V10.2D, V29.2D, V10.2D + trn2 V12.2D, V30.2D, V12.2D + mul V29.8H, V10.8H, V1.8H + mul V30.8H, V12.8H, V3.8H + sqrdmulh V23.8H, V10.8H, V0.8H + sqrdmulh V24.8H, V12.8H, V2.8H + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #256] + ldr Q2, [x2, #272] + ldr Q1, [x3, #256] + ldr Q3, [x3, #272] + mov V29.16B, V13.16B + mov V30.16B, V15.16B + trn1 V13.2D, V13.2D, V14.2D + trn1 V15.2D, V15.2D, V16.2D + trn2 V14.2D, V29.2D, V14.2D + trn2 V16.2D, V30.2D, V16.2D + mul V29.8H, V14.8H, V1.8H + mul V30.8H, V16.8H, V3.8H + sqrdmulh V25.8H, V14.8H, V0.8H + sqrdmulh V26.8H, V16.8H, V2.8H + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + ldr Q0, [x2, #288] + ldr Q2, [x2, #304] + ldr Q1, [x3, #288] + ldr Q3, [x3, #304] + mov V29.16B, V17.16B + mov V30.16B, V19.16B + trn1 V17.2D, V17.2D, V18.2D + trn1 V19.2D, V19.2D, V20.2D + trn2 V18.2D, V29.2D, V18.2D + trn2 V20.2D, V30.2D, V20.2D + mul V29.8H, V18.8H, V1.8H + mul V30.8H, V20.8H, V3.8H + sqrdmulh V27.8H, V18.8H, V0.8H + sqrdmulh V28.8H, V20.8H, V2.8H + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + ldr Q0, [x2, #448] + ldr Q2, [x2, #464] + ldr Q1, [x3, #448] + ldr Q3, [x3, #464] + mov V29.16B, V5.16B + mov V30.16B, V7.16B + trn1 V5.4S, V5.4S, V6.4S + trn1 V7.4S, V7.4S, V8.4S + trn2 V6.4S, V29.4S, V6.4S + trn2 V8.4S, V30.4S, V8.4S + mul V29.8H, V6.8H, V1.8H + mul V30.8H, V8.8H, V3.8H + sqrdmulh V21.8H, V6.8H, V0.8H + sqrdmulh V22.8H, V8.8H, V2.8H + sqrdmlsh V21.8H, V29.8H, V4.H[0] + sqrdmlsh V22.8H, V30.8H, V4.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + ldr Q0, [x2, #480] + ldr Q2, [x2, #496] + ldr Q1, [x3, #480] + ldr Q3, [x3, #496] + mov V29.16B, V9.16B + mov V30.16B, V11.16B + trn1 V9.4S, V9.4S, V10.4S + trn1 V11.4S, V11.4S, V12.4S + trn2 V10.4S, V29.4S, V10.4S + trn2 V12.4S, V30.4S, V12.4S + mul V29.8H, V10.8H, V1.8H + mul V30.8H, V12.8H, V3.8H + sqrdmulh V23.8H, V10.8H, V0.8H + sqrdmulh V24.8H, V12.8H, V2.8H + sqrdmlsh V23.8H, V29.8H, V4.H[0] + sqrdmlsh V24.8H, V30.8H, V4.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #512] + ldr Q2, [x2, #528] + ldr Q1, [x3, #512] + ldr Q3, [x3, #528] + mov V29.16B, V13.16B + mov V30.16B, V15.16B + trn1 V13.4S, V13.4S, V14.4S + trn1 V15.4S, V15.4S, V16.4S + trn2 V14.4S, V29.4S, V14.4S + trn2 V16.4S, V30.4S, V16.4S + mul V29.8H, V14.8H, V1.8H + mul V30.8H, V16.8H, V3.8H + sqrdmulh V25.8H, V14.8H, V0.8H + sqrdmulh V26.8H, V16.8H, V2.8H + sqrdmlsh V25.8H, V29.8H, V4.H[0] + sqrdmlsh V26.8H, V30.8H, V4.H[0] + sshr V25.8H, V25.8H, #1 + sshr V26.8H, V26.8H, #1 + ldr Q0, [x2, #544] + ldr Q2, [x2, #560] + ldr Q1, [x3, #544] + ldr Q3, [x3, #560] + mov V29.16B, V17.16B + mov V30.16B, V19.16B + trn1 V17.4S, V17.4S, V18.4S + trn1 V19.4S, V19.4S, V20.4S + trn2 V18.4S, V29.4S, V18.4S + trn2 V20.4S, V30.4S, V20.4S + mul V29.8H, V18.8H, V1.8H + mul V30.8H, V20.8H, V3.8H + sqrdmulh V27.8H, V18.8H, V0.8H + sqrdmulh V28.8H, V20.8H, V2.8H + sqrdmlsh V27.8H, V29.8H, V4.H[0] + sqrdmlsh V28.8H, V30.8H, V4.H[0] + sshr V27.8H, V27.8H, #1 + sshr V28.8H, V28.8H, #1 + sub V6.8H, V5.8H, V21.8H + add V5.8H, V5.8H, V21.8H + sub V8.8H, V7.8H, V22.8H + add V7.8H, V7.8H, V22.8H + sub V10.8H, V9.8H, V23.8H + add V9.8H, V9.8H, V23.8H + sub V12.8H, V11.8H, V24.8H + add V11.8H, V11.8H, V24.8H + sub V14.8H, V13.8H, V25.8H + add V13.8H, V13.8H, V25.8H + sub V16.8H, V15.8H, V26.8H + add V15.8H, V15.8H, V26.8H + sub V18.8H, V17.8H, V27.8H + add V17.8H, V17.8H, V27.8H + sub V20.8H, V19.8H, V28.8H + add V19.8H, V19.8H, V28.8H + sqdmulh V21.8H, V5.8H, V4.H[2] + sqdmulh V22.8H, V6.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V5.8H, V21.8H, V4.H[0] + mls V6.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V7.8H, V4.H[2] + sqdmulh V22.8H, V8.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V7.8H, V21.8H, V4.H[0] + mls V8.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V9.8H, V4.H[2] + sqdmulh V22.8H, V10.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V9.8H, V21.8H, V4.H[0] + mls V10.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V11.8H, V4.H[2] + sqdmulh V22.8H, V12.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V11.8H, V21.8H, V4.H[0] + mls V12.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V13.8H, V4.H[2] + sqdmulh V22.8H, V14.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V13.8H, V21.8H, V4.H[0] + mls V14.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V15.8H, V4.H[2] + sqdmulh V22.8H, V16.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V15.8H, V21.8H, V4.H[0] + mls V16.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V17.8H, V4.H[2] + sqdmulh V22.8H, V18.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V17.8H, V21.8H, V4.H[0] + mls V18.8H, V22.8H, V4.H[0] + sqdmulh V21.8H, V19.8H, V4.H[2] + sqdmulh V22.8H, V20.8H, V4.H[2] + sshr V21.8H, V21.8H, #11 + sshr V22.8H, V22.8H, #11 + mls V19.8H, V21.8H, V4.H[0] + mls V20.8H, V22.8H, V4.H[0] + mov V29.16B, V5.16B + trn1 V5.4S, V5.4S, V6.4S + trn2 V6.4S, V29.4S, V6.4S + mov V29.16B, V5.16B + trn1 V5.2D, V5.2D, V6.2D + trn2 V6.2D, V29.2D, V6.2D + mov V29.16B, V7.16B + trn1 V7.4S, V7.4S, V8.4S + trn2 V8.4S, V29.4S, V8.4S + mov V29.16B, V7.16B + trn1 V7.2D, V7.2D, V8.2D + trn2 V8.2D, V29.2D, V8.2D + mov V29.16B, V9.16B + trn1 V9.4S, V9.4S, V10.4S + trn2 V10.4S, V29.4S, V10.4S + mov V29.16B, V9.16B + trn1 V9.2D, V9.2D, V10.2D + trn2 V10.2D, V29.2D, V10.2D + mov V29.16B, V11.16B + trn1 V11.4S, V11.4S, V12.4S + trn2 V12.4S, V29.4S, V12.4S + mov V29.16B, V11.16B + trn1 V11.2D, V11.2D, V12.2D + trn2 V12.2D, V29.2D, V12.2D + mov V29.16B, V13.16B + trn1 V13.4S, V13.4S, V14.4S + trn2 V14.4S, V29.4S, V14.4S + mov V29.16B, V13.16B + trn1 V13.2D, V13.2D, V14.2D + trn2 V14.2D, V29.2D, V14.2D + mov V29.16B, V15.16B + trn1 V15.4S, V15.4S, V16.4S + trn2 V16.4S, V29.4S, V16.4S + mov V29.16B, V15.16B + trn1 V15.2D, V15.2D, V16.2D + trn2 V16.2D, V29.2D, V16.2D + mov V29.16B, V17.16B + trn1 V17.4S, V17.4S, V18.4S + trn2 V18.4S, V29.4S, V18.4S + mov V29.16B, V17.16B + trn1 V17.2D, V17.2D, V18.2D + trn2 V18.2D, V29.2D, V18.2D + mov V29.16B, V19.16B + trn1 V19.4S, V19.4S, V20.4S + trn2 V20.4S, V29.4S, V20.4S + mov V29.16B, V19.16B + trn1 V19.2D, V19.2D, V20.2D + trn2 V20.2D, V29.2D, V20.2D + stp Q5, Q6, [x1] + stp Q7, Q8, [x1, #32] + stp Q9, Q10, [x1, #64] + stp Q11, Q12, [x1, #96] + stp Q13, Q14, [x1, #128] + stp Q15, Q16, [x1, #160] + stp Q17, Q18, [x1, #192] + stp Q19, Q20, [x1, #224] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -4043,10 +4043,10 @@ mlkem_ntt_sqrdmlsh PROC mlkem_invntt_sqrdmlsh PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x2, L_mlkem_aarch64_zetas_inv add x2, x2, L_mlkem_aarch64_zetas_inv adrp x3, L_mlkem_aarch64_zetas_inv_qinv @@ -4054,1272 +4054,1272 @@ mlkem_invntt_sqrdmlsh PROC adrp x4, L_mlkem_aarch64_consts add x4, x4, L_mlkem_aarch64_consts add x1, x0, #0x100 - ldr q8, [x4] - ldp q9, q10, [x0] - ldp q11, q12, [x0, #32] - ldp q13, q14, [x0, #64] - ldp q15, q16, [x0, #96] - ldp q17, q18, [x0, #128] - ldp q19, q20, [x0, #160] - ldp q21, q22, [x0, #192] - ldp q23, q24, [x0, #224] - mov v25.16b, v9.16b - trn1 v9.2d, v9.2d, v10.2d - trn2 v10.2d, v25.2d, v10.2d - mov v25.16b, v9.16b - trn1 v9.4s, v9.4s, v10.4s - trn2 v10.4s, v25.4s, v10.4s - mov v25.16b, v11.16b - trn1 v11.2d, v11.2d, v12.2d - trn2 v12.2d, v25.2d, v12.2d - mov v25.16b, v11.16b - trn1 v11.4s, v11.4s, v12.4s - trn2 v12.4s, v25.4s, v12.4s - mov v25.16b, v13.16b - trn1 v13.2d, v13.2d, v14.2d - trn2 v14.2d, v25.2d, v14.2d - mov v25.16b, v13.16b - trn1 v13.4s, v13.4s, v14.4s - trn2 v14.4s, v25.4s, v14.4s - mov v25.16b, v15.16b - trn1 v15.2d, v15.2d, v16.2d - trn2 v16.2d, v25.2d, v16.2d - mov v25.16b, v15.16b - trn1 v15.4s, v15.4s, v16.4s - trn2 v16.4s, v25.4s, v16.4s - mov v25.16b, v17.16b - trn1 v17.2d, v17.2d, v18.2d - trn2 v18.2d, v25.2d, v18.2d - mov v25.16b, v17.16b - trn1 v17.4s, v17.4s, v18.4s - trn2 v18.4s, v25.4s, v18.4s - mov v25.16b, v19.16b - trn1 v19.2d, v19.2d, v20.2d - trn2 v20.2d, v25.2d, v20.2d - mov v25.16b, v19.16b - trn1 v19.4s, v19.4s, v20.4s - trn2 v20.4s, v25.4s, v20.4s - mov v25.16b, v21.16b - trn1 v21.2d, v21.2d, v22.2d - trn2 v22.2d, v25.2d, v22.2d - mov v25.16b, v21.16b - trn1 v21.4s, v21.4s, v22.4s - trn2 v22.4s, v25.4s, v22.4s - mov v25.16b, v23.16b - trn1 v23.2d, v23.2d, v24.2d - trn2 v24.2d, v25.2d, v24.2d - mov v25.16b, v23.16b - trn1 v23.4s, v23.4s, v24.4s - trn2 v24.4s, v25.4s, v24.4s - ldr q0, [x2] - ldr q1, [x2, #16] - ldr q2, [x3] - ldr q3, [x3, #16] - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v10.8h, v26.8h, v0.8h - sqrdmulh v12.8h, v28.8h, v1.8h - sqrdmlsh v10.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - ldr q0, [x2, #32] - ldr q1, [x2, #48] - ldr q2, [x3, #32] - ldr q3, [x3, #48] - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v14.8h, v26.8h, v0.8h - sqrdmulh v16.8h, v28.8h, v1.8h - sqrdmlsh v14.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - ldr q0, [x2, #64] - ldr q1, [x2, #80] - ldr q2, [x3, #64] - ldr q3, [x3, #80] - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v18.8h, v26.8h, v0.8h - sqrdmulh v20.8h, v28.8h, v1.8h - sqrdmlsh v18.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - ldr q0, [x2, #96] - ldr q1, [x2, #112] - ldr q2, [x3, #96] - ldr q3, [x3, #112] - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v22.8h, v26.8h, v0.8h - sqrdmulh v24.8h, v28.8h, v1.8h - sqrdmlsh v22.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #256] - ldr q1, [x2, #272] - ldr q2, [x3, #256] - ldr q3, [x3, #272] - mov v25.16b, v9.16b - mov v26.16b, v11.16b - trn1 v9.4s, v9.4s, v10.4s - trn1 v11.4s, v11.4s, v12.4s - trn2 v10.4s, v25.4s, v10.4s - trn2 v12.4s, v26.4s, v12.4s - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v10.8h, v26.8h, v0.8h - sqrdmulh v12.8h, v28.8h, v1.8h - sqrdmlsh v10.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - ldr q0, [x2, #288] - ldr q1, [x2, #304] - ldr q2, [x3, #288] - ldr q3, [x3, #304] - mov v25.16b, v13.16b - mov v26.16b, v15.16b - trn1 v13.4s, v13.4s, v14.4s - trn1 v15.4s, v15.4s, v16.4s - trn2 v14.4s, v25.4s, v14.4s - trn2 v16.4s, v26.4s, v16.4s - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v14.8h, v26.8h, v0.8h - sqrdmulh v16.8h, v28.8h, v1.8h - sqrdmlsh v14.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - ldr q0, [x2, #320] - ldr q1, [x2, #336] - ldr q2, [x3, #320] - ldr q3, [x3, #336] - mov v25.16b, v17.16b - mov v26.16b, v19.16b - trn1 v17.4s, v17.4s, v18.4s - trn1 v19.4s, v19.4s, v20.4s - trn2 v18.4s, v25.4s, v18.4s - trn2 v20.4s, v26.4s, v20.4s - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v18.8h, v26.8h, v0.8h - sqrdmulh v20.8h, v28.8h, v1.8h - sqrdmlsh v18.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - ldr q0, [x2, #352] - ldr q1, [x2, #368] - ldr q2, [x3, #352] - ldr q3, [x3, #368] - mov v25.16b, v21.16b - mov v26.16b, v23.16b - trn1 v21.4s, v21.4s, v22.4s - trn1 v23.4s, v23.4s, v24.4s - trn2 v22.4s, v25.4s, v22.4s - trn2 v24.4s, v26.4s, v24.4s - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v22.8h, v26.8h, v0.8h - sqrdmulh v24.8h, v28.8h, v1.8h - sqrdmlsh v22.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #512] - ldr q2, [x3, #512] - mov v25.16b, v9.16b - mov v26.16b, v11.16b - trn1 v9.2d, v9.2d, v10.2d - trn1 v11.2d, v11.2d, v12.2d - trn2 v10.2d, v25.2d, v10.2d - trn2 v12.2d, v26.2d, v12.2d - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.h[0] - mul v27.8h, v28.8h, v2.h[1] - sqrdmulh v10.8h, v26.8h, v0.h[0] - sqrdmulh v12.8h, v28.8h, v0.h[1] - sqrdmlsh v10.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - mov v25.16b, v13.16b - mov v26.16b, v15.16b - trn1 v13.2d, v13.2d, v14.2d - trn1 v15.2d, v15.2d, v16.2d - trn2 v14.2d, v25.2d, v14.2d - trn2 v16.2d, v26.2d, v16.2d - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.h[2] - mul v27.8h, v28.8h, v2.h[3] - sqrdmulh v14.8h, v26.8h, v0.h[2] - sqrdmulh v16.8h, v28.8h, v0.h[3] - sqrdmlsh v14.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - mov v25.16b, v17.16b - mov v26.16b, v19.16b - trn1 v17.2d, v17.2d, v18.2d - trn1 v19.2d, v19.2d, v20.2d - trn2 v18.2d, v25.2d, v18.2d - trn2 v20.2d, v26.2d, v20.2d - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.h[4] - mul v27.8h, v28.8h, v2.h[5] - sqrdmulh v18.8h, v26.8h, v0.h[4] - sqrdmulh v20.8h, v28.8h, v0.h[5] - sqrdmlsh v18.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - mov v25.16b, v21.16b - mov v26.16b, v23.16b - trn1 v21.2d, v21.2d, v22.2d - trn1 v23.2d, v23.2d, v24.2d - trn2 v22.2d, v25.2d, v22.2d - trn2 v24.2d, v26.2d, v24.2d - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.h[6] - mul v27.8h, v28.8h, v2.h[7] - sqrdmulh v22.8h, v26.8h, v0.h[6] - sqrdmulh v24.8h, v28.8h, v0.h[7] - sqrdmlsh v22.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - sqdmulh v25.8h, v9.8h, v8.h[2] - sqdmulh v26.8h, v11.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v9.8h, v25.8h, v8.h[0] - mls v11.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v13.8h, v8.h[2] - sqdmulh v26.8h, v15.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v13.8h, v25.8h, v8.h[0] - mls v15.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v17.8h, v8.h[2] - sqdmulh v26.8h, v19.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v17.8h, v25.8h, v8.h[0] - mls v19.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v21.8h, v8.h[2] - sqdmulh v26.8h, v23.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v21.8h, v25.8h, v8.h[0] - mls v23.8h, v26.8h, v8.h[0] - stp q9, q10, [x0] - stp q11, q12, [x0, #32] - stp q13, q14, [x0, #64] - stp q15, q16, [x0, #96] - stp q17, q18, [x0, #128] - stp q19, q20, [x0, #160] - stp q21, q22, [x0, #192] - stp q23, q24, [x0, #224] - ldp q9, q10, [x1] - ldp q11, q12, [x1, #32] - ldp q13, q14, [x1, #64] - ldp q15, q16, [x1, #96] - ldp q17, q18, [x1, #128] - ldp q19, q20, [x1, #160] - ldp q21, q22, [x1, #192] - ldp q23, q24, [x1, #224] - mov v25.16b, v9.16b - trn1 v9.2d, v9.2d, v10.2d - trn2 v10.2d, v25.2d, v10.2d - mov v25.16b, v9.16b - trn1 v9.4s, v9.4s, v10.4s - trn2 v10.4s, v25.4s, v10.4s - mov v25.16b, v11.16b - trn1 v11.2d, v11.2d, v12.2d - trn2 v12.2d, v25.2d, v12.2d - mov v25.16b, v11.16b - trn1 v11.4s, v11.4s, v12.4s - trn2 v12.4s, v25.4s, v12.4s - mov v25.16b, v13.16b - trn1 v13.2d, v13.2d, v14.2d - trn2 v14.2d, v25.2d, v14.2d - mov v25.16b, v13.16b - trn1 v13.4s, v13.4s, v14.4s - trn2 v14.4s, v25.4s, v14.4s - mov v25.16b, v15.16b - trn1 v15.2d, v15.2d, v16.2d - trn2 v16.2d, v25.2d, v16.2d - mov v25.16b, v15.16b - trn1 v15.4s, v15.4s, v16.4s - trn2 v16.4s, v25.4s, v16.4s - mov v25.16b, v17.16b - trn1 v17.2d, v17.2d, v18.2d - trn2 v18.2d, v25.2d, v18.2d - mov v25.16b, v17.16b - trn1 v17.4s, v17.4s, v18.4s - trn2 v18.4s, v25.4s, v18.4s - mov v25.16b, v19.16b - trn1 v19.2d, v19.2d, v20.2d - trn2 v20.2d, v25.2d, v20.2d - mov v25.16b, v19.16b - trn1 v19.4s, v19.4s, v20.4s - trn2 v20.4s, v25.4s, v20.4s - mov v25.16b, v21.16b - trn1 v21.2d, v21.2d, v22.2d - trn2 v22.2d, v25.2d, v22.2d - mov v25.16b, v21.16b - trn1 v21.4s, v21.4s, v22.4s - trn2 v22.4s, v25.4s, v22.4s - mov v25.16b, v23.16b - trn1 v23.2d, v23.2d, v24.2d - trn2 v24.2d, v25.2d, v24.2d - mov v25.16b, v23.16b - trn1 v23.4s, v23.4s, v24.4s - trn2 v24.4s, v25.4s, v24.4s - ldr q0, [x2, #128] - ldr q1, [x2, #144] - ldr q2, [x3, #128] - ldr q3, [x3, #144] - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v10.8h, v26.8h, v0.8h - sqrdmulh v12.8h, v28.8h, v1.8h - sqrdmlsh v10.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - ldr q0, [x2, #160] - ldr q1, [x2, #176] - ldr q2, [x3, #160] - ldr q3, [x3, #176] - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v14.8h, v26.8h, v0.8h - sqrdmulh v16.8h, v28.8h, v1.8h - sqrdmlsh v14.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - ldr q0, [x2, #192] - ldr q1, [x2, #208] - ldr q2, [x3, #192] - ldr q3, [x3, #208] - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v18.8h, v26.8h, v0.8h - sqrdmulh v20.8h, v28.8h, v1.8h - sqrdmlsh v18.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - ldr q0, [x2, #224] - ldr q1, [x2, #240] - ldr q2, [x3, #224] - ldr q3, [x3, #240] - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v22.8h, v26.8h, v0.8h - sqrdmulh v24.8h, v28.8h, v1.8h - sqrdmlsh v22.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #384] - ldr q1, [x2, #400] - ldr q2, [x3, #384] - ldr q3, [x3, #400] - mov v25.16b, v9.16b - mov v26.16b, v11.16b - trn1 v9.4s, v9.4s, v10.4s - trn1 v11.4s, v11.4s, v12.4s - trn2 v10.4s, v25.4s, v10.4s - trn2 v12.4s, v26.4s, v12.4s - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v10.8h, v26.8h, v0.8h - sqrdmulh v12.8h, v28.8h, v1.8h - sqrdmlsh v10.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - ldr q0, [x2, #416] - ldr q1, [x2, #432] - ldr q2, [x3, #416] - ldr q3, [x3, #432] - mov v25.16b, v13.16b - mov v26.16b, v15.16b - trn1 v13.4s, v13.4s, v14.4s - trn1 v15.4s, v15.4s, v16.4s - trn2 v14.4s, v25.4s, v14.4s - trn2 v16.4s, v26.4s, v16.4s - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v14.8h, v26.8h, v0.8h - sqrdmulh v16.8h, v28.8h, v1.8h - sqrdmlsh v14.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - ldr q0, [x2, #448] - ldr q1, [x2, #464] - ldr q2, [x3, #448] - ldr q3, [x3, #464] - mov v25.16b, v17.16b - mov v26.16b, v19.16b - trn1 v17.4s, v17.4s, v18.4s - trn1 v19.4s, v19.4s, v20.4s - trn2 v18.4s, v25.4s, v18.4s - trn2 v20.4s, v26.4s, v20.4s - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v18.8h, v26.8h, v0.8h - sqrdmulh v20.8h, v28.8h, v1.8h - sqrdmlsh v18.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - ldr q0, [x2, #480] - ldr q1, [x2, #496] - ldr q2, [x3, #480] - ldr q3, [x3, #496] - mov v25.16b, v21.16b - mov v26.16b, v23.16b - trn1 v21.4s, v21.4s, v22.4s - trn1 v23.4s, v23.4s, v24.4s - trn2 v22.4s, v25.4s, v22.4s - trn2 v24.4s, v26.4s, v24.4s - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.8h - mul v27.8h, v28.8h, v3.8h - sqrdmulh v22.8h, v26.8h, v0.8h - sqrdmulh v24.8h, v28.8h, v1.8h - sqrdmlsh v22.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - ldr q0, [x2, #528] - ldr q2, [x3, #528] - mov v25.16b, v9.16b - mov v26.16b, v11.16b - trn1 v9.2d, v9.2d, v10.2d - trn1 v11.2d, v11.2d, v12.2d - trn2 v10.2d, v25.2d, v10.2d - trn2 v12.2d, v26.2d, v12.2d - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v2.h[0] - mul v27.8h, v28.8h, v2.h[1] - sqrdmulh v10.8h, v26.8h, v0.h[0] - sqrdmulh v12.8h, v28.8h, v0.h[1] - sqrdmlsh v10.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - mov v25.16b, v13.16b - mov v26.16b, v15.16b - trn1 v13.2d, v13.2d, v14.2d - trn1 v15.2d, v15.2d, v16.2d - trn2 v14.2d, v25.2d, v14.2d - trn2 v16.2d, v26.2d, v16.2d - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v2.h[2] - mul v27.8h, v28.8h, v2.h[3] - sqrdmulh v14.8h, v26.8h, v0.h[2] - sqrdmulh v16.8h, v28.8h, v0.h[3] - sqrdmlsh v14.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - mov v25.16b, v17.16b - mov v26.16b, v19.16b - trn1 v17.2d, v17.2d, v18.2d - trn1 v19.2d, v19.2d, v20.2d - trn2 v18.2d, v25.2d, v18.2d - trn2 v20.2d, v26.2d, v20.2d - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v2.h[4] - mul v27.8h, v28.8h, v2.h[5] - sqrdmulh v18.8h, v26.8h, v0.h[4] - sqrdmulh v20.8h, v28.8h, v0.h[5] - sqrdmlsh v18.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - mov v25.16b, v21.16b - mov v26.16b, v23.16b - trn1 v21.2d, v21.2d, v22.2d - trn1 v23.2d, v23.2d, v24.2d - trn2 v22.2d, v25.2d, v22.2d - trn2 v24.2d, v26.2d, v24.2d - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v2.h[6] - mul v27.8h, v28.8h, v2.h[7] - sqrdmulh v22.8h, v26.8h, v0.h[6] - sqrdmulh v24.8h, v28.8h, v0.h[7] - sqrdmlsh v22.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - sqdmulh v25.8h, v9.8h, v8.h[2] - sqdmulh v26.8h, v11.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v9.8h, v25.8h, v8.h[0] - mls v11.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v13.8h, v8.h[2] - sqdmulh v26.8h, v15.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v13.8h, v25.8h, v8.h[0] - mls v15.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v17.8h, v8.h[2] - sqdmulh v26.8h, v19.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v17.8h, v25.8h, v8.h[0] - mls v19.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v21.8h, v8.h[2] - sqdmulh v26.8h, v23.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v21.8h, v25.8h, v8.h[0] - mls v23.8h, v26.8h, v8.h[0] - stp q9, q10, [x1] - stp q11, q12, [x1, #32] - stp q13, q14, [x1, #64] - stp q15, q16, [x1, #96] - stp q17, q18, [x1, #128] - stp q19, q20, [x1, #160] - stp q21, q22, [x1, #192] - stp q23, q24, [x1, #224] - ldr q4, [x2, #544] - ldr q5, [x2, #560] - ldr q6, [x3, #544] - ldr q7, [x3, #560] - ldr q9, [x0] - ldr q10, [x0, #32] - ldr q11, [x0, #64] - ldr q12, [x0, #96] - ldr q13, [x0, #128] - ldr q14, [x0, #160] - ldr q15, [x0, #192] - ldr q16, [x0, #224] - ldr q17, [x1] - ldr q18, [x1, #32] - ldr q19, [x1, #64] - ldr q20, [x1, #96] - ldr q21, [x1, #128] - ldr q22, [x1, #160] - ldr q23, [x1, #192] - ldr q24, [x1, #224] - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v6.h[0] - mul v27.8h, v28.8h, v6.h[1] - sqrdmulh v10.8h, v26.8h, v4.h[0] - sqrdmulh v12.8h, v28.8h, v4.h[1] - sqrdmlsh v10.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v6.h[2] - mul v27.8h, v28.8h, v6.h[3] - sqrdmulh v14.8h, v26.8h, v4.h[2] - sqrdmulh v16.8h, v28.8h, v4.h[3] - sqrdmlsh v14.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v6.h[4] - mul v27.8h, v28.8h, v6.h[5] - sqrdmulh v18.8h, v26.8h, v4.h[4] - sqrdmulh v20.8h, v28.8h, v4.h[5] - sqrdmlsh v18.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v6.h[6] - mul v27.8h, v28.8h, v6.h[7] - sqrdmulh v22.8h, v26.8h, v4.h[6] - sqrdmulh v24.8h, v28.8h, v4.h[7] - sqrdmlsh v22.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - sub v26.8h, v9.8h, v11.8h - sub v28.8h, v10.8h, v12.8h - add v9.8h, v9.8h, v11.8h - add v10.8h, v10.8h, v12.8h - mul v25.8h, v26.8h, v7.h[0] - mul v27.8h, v28.8h, v7.h[0] - sqrdmulh v11.8h, v26.8h, v5.h[0] - sqrdmulh v12.8h, v28.8h, v5.h[0] - sqrdmlsh v11.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - sub v26.8h, v13.8h, v15.8h - sub v28.8h, v14.8h, v16.8h - add v13.8h, v13.8h, v15.8h - add v14.8h, v14.8h, v16.8h - mul v25.8h, v26.8h, v7.h[1] - mul v27.8h, v28.8h, v7.h[1] - sqrdmulh v15.8h, v26.8h, v5.h[1] - sqrdmulh v16.8h, v28.8h, v5.h[1] - sqrdmlsh v15.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v19.8h - sub v28.8h, v18.8h, v20.8h - add v17.8h, v17.8h, v19.8h - add v18.8h, v18.8h, v20.8h - mul v25.8h, v26.8h, v7.h[2] - mul v27.8h, v28.8h, v7.h[2] - sqrdmulh v19.8h, v26.8h, v5.h[2] - sqrdmulh v20.8h, v28.8h, v5.h[2] - sqrdmlsh v19.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v21.8h, v23.8h - sub v28.8h, v22.8h, v24.8h - add v21.8h, v21.8h, v23.8h - add v22.8h, v22.8h, v24.8h - mul v25.8h, v26.8h, v7.h[3] - mul v27.8h, v28.8h, v7.h[3] - sqrdmulh v23.8h, v26.8h, v5.h[3] - sqrdmulh v24.8h, v28.8h, v5.h[3] - sqrdmlsh v23.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - sub v26.8h, v9.8h, v13.8h - sub v28.8h, v10.8h, v14.8h - add v9.8h, v9.8h, v13.8h - add v10.8h, v10.8h, v14.8h - mul v25.8h, v26.8h, v7.h[4] - mul v27.8h, v28.8h, v7.h[4] - sqrdmulh v13.8h, v26.8h, v5.h[4] - sqrdmulh v14.8h, v28.8h, v5.h[4] - sqrdmlsh v13.8h, v25.8h, v8.h[0] - sqrdmlsh v14.8h, v27.8h, v8.h[0] - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - sub v26.8h, v11.8h, v15.8h - sub v28.8h, v12.8h, v16.8h - add v11.8h, v11.8h, v15.8h - add v12.8h, v12.8h, v16.8h - mul v25.8h, v26.8h, v7.h[4] - mul v27.8h, v28.8h, v7.h[4] - sqrdmulh v15.8h, v26.8h, v5.h[4] - sqrdmulh v16.8h, v28.8h, v5.h[4] - sqrdmlsh v15.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v21.8h - sub v28.8h, v18.8h, v22.8h - add v17.8h, v17.8h, v21.8h - add v18.8h, v18.8h, v22.8h - mul v25.8h, v26.8h, v7.h[5] - mul v27.8h, v28.8h, v7.h[5] - sqrdmulh v21.8h, v26.8h, v5.h[5] - sqrdmulh v22.8h, v28.8h, v5.h[5] - sqrdmlsh v21.8h, v25.8h, v8.h[0] - sqrdmlsh v22.8h, v27.8h, v8.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - sub v26.8h, v19.8h, v23.8h - sub v28.8h, v20.8h, v24.8h - add v19.8h, v19.8h, v23.8h - add v20.8h, v20.8h, v24.8h - mul v25.8h, v26.8h, v7.h[5] - mul v27.8h, v28.8h, v7.h[5] - sqrdmulh v23.8h, v26.8h, v5.h[5] - sqrdmulh v24.8h, v28.8h, v5.h[5] - sqrdmlsh v23.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - sqdmulh v25.8h, v9.8h, v8.h[2] - sqdmulh v26.8h, v10.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v9.8h, v25.8h, v8.h[0] - mls v10.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v11.8h, v8.h[2] - sqdmulh v26.8h, v12.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v11.8h, v25.8h, v8.h[0] - mls v12.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v17.8h, v8.h[2] - sqdmulh v26.8h, v18.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v17.8h, v25.8h, v8.h[0] - mls v18.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v19.8h, v8.h[2] - sqdmulh v26.8h, v20.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v19.8h, v25.8h, v8.h[0] - mls v20.8h, v26.8h, v8.h[0] - sub v26.8h, v9.8h, v17.8h - sub v28.8h, v10.8h, v18.8h - add v9.8h, v9.8h, v17.8h - add v10.8h, v10.8h, v18.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v17.8h, v26.8h, v5.h[6] - sqrdmulh v18.8h, v28.8h, v5.h[6] - sqrdmlsh v17.8h, v25.8h, v8.h[0] - sqrdmlsh v18.8h, v27.8h, v8.h[0] - sshr v17.8h, v17.8h, #1 - sshr v18.8h, v18.8h, #1 - sub v26.8h, v11.8h, v19.8h - sub v28.8h, v12.8h, v20.8h - add v11.8h, v11.8h, v19.8h - add v12.8h, v12.8h, v20.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v19.8h, v26.8h, v5.h[6] - sqrdmulh v20.8h, v28.8h, v5.h[6] - sqrdmlsh v19.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v13.8h, v21.8h - sub v28.8h, v14.8h, v22.8h - add v13.8h, v13.8h, v21.8h - add v14.8h, v14.8h, v22.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v21.8h, v26.8h, v5.h[6] - sqrdmulh v22.8h, v28.8h, v5.h[6] - sqrdmlsh v21.8h, v25.8h, v8.h[0] - sqrdmlsh v22.8h, v27.8h, v8.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - sub v26.8h, v15.8h, v23.8h - sub v28.8h, v16.8h, v24.8h - add v15.8h, v15.8h, v23.8h - add v16.8h, v16.8h, v24.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v23.8h, v26.8h, v5.h[6] - sqrdmulh v24.8h, v28.8h, v5.h[6] - sqrdmlsh v23.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v25.8h, v9.8h, v7.h[7] - mul v26.8h, v10.8h, v7.h[7] - sqrdmulh v9.8h, v9.8h, v5.h[7] - sqrdmulh v10.8h, v10.8h, v5.h[7] - sqrdmlsh v9.8h, v25.8h, v8.h[0] - sqrdmlsh v10.8h, v26.8h, v8.h[0] - sshr v9.8h, v9.8h, #1 - sshr v10.8h, v10.8h, #1 - mul v25.8h, v11.8h, v7.h[7] - mul v26.8h, v12.8h, v7.h[7] - sqrdmulh v11.8h, v11.8h, v5.h[7] - sqrdmulh v12.8h, v12.8h, v5.h[7] - sqrdmlsh v11.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v26.8h, v8.h[0] - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - mul v25.8h, v13.8h, v7.h[7] - mul v26.8h, v14.8h, v7.h[7] - sqrdmulh v13.8h, v13.8h, v5.h[7] - sqrdmulh v14.8h, v14.8h, v5.h[7] - sqrdmlsh v13.8h, v25.8h, v8.h[0] - sqrdmlsh v14.8h, v26.8h, v8.h[0] - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - mul v25.8h, v15.8h, v7.h[7] - mul v26.8h, v16.8h, v7.h[7] - sqrdmulh v15.8h, v15.8h, v5.h[7] - sqrdmulh v16.8h, v16.8h, v5.h[7] - sqrdmlsh v15.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v26.8h, v8.h[0] - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - mul v25.8h, v17.8h, v7.h[7] - mul v26.8h, v18.8h, v7.h[7] - sqrdmulh v17.8h, v17.8h, v5.h[7] - sqrdmulh v18.8h, v18.8h, v5.h[7] - sqrdmlsh v17.8h, v25.8h, v8.h[0] - sqrdmlsh v18.8h, v26.8h, v8.h[0] - sshr v17.8h, v17.8h, #1 - sshr v18.8h, v18.8h, #1 - mul v25.8h, v19.8h, v7.h[7] - mul v26.8h, v20.8h, v7.h[7] - sqrdmulh v19.8h, v19.8h, v5.h[7] - sqrdmulh v20.8h, v20.8h, v5.h[7] - sqrdmlsh v19.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v26.8h, v8.h[0] - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - mul v25.8h, v21.8h, v7.h[7] - mul v26.8h, v22.8h, v7.h[7] - sqrdmulh v21.8h, v21.8h, v5.h[7] - sqrdmulh v22.8h, v22.8h, v5.h[7] - sqrdmlsh v21.8h, v25.8h, v8.h[0] - sqrdmlsh v22.8h, v26.8h, v8.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v25.8h, v23.8h, v7.h[7] - mul v26.8h, v24.8h, v7.h[7] - sqrdmulh v23.8h, v23.8h, v5.h[7] - sqrdmulh v24.8h, v24.8h, v5.h[7] - sqrdmlsh v23.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v26.8h, v8.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - str q9, [x0] - str q10, [x0, #32] - str q11, [x0, #64] - str q12, [x0, #96] - str q13, [x0, #128] - str q14, [x0, #160] - str q15, [x0, #192] - str q16, [x0, #224] - str q17, [x1] - str q18, [x1, #32] - str q19, [x1, #64] - str q20, [x1, #96] - str q21, [x1, #128] - str q22, [x1, #160] - str q23, [x1, #192] - str q24, [x1, #224] - ldr q9, [x0, #16] - ldr q10, [x0, #48] - ldr q11, [x0, #80] - ldr q12, [x0, #112] - ldr q13, [x0, #144] - ldr q14, [x0, #176] - ldr q15, [x0, #208] - ldr q16, [x0, #240] - ldr q17, [x1, #16] - ldr q18, [x1, #48] - ldr q19, [x1, #80] - ldr q20, [x1, #112] - ldr q21, [x1, #144] - ldr q22, [x1, #176] - ldr q23, [x1, #208] - ldr q24, [x1, #240] - sub v26.8h, v9.8h, v10.8h - sub v28.8h, v11.8h, v12.8h - add v9.8h, v9.8h, v10.8h - add v11.8h, v11.8h, v12.8h - mul v25.8h, v26.8h, v6.h[0] - mul v27.8h, v28.8h, v6.h[1] - sqrdmulh v10.8h, v26.8h, v4.h[0] - sqrdmulh v12.8h, v28.8h, v4.h[1] - sqrdmlsh v10.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v10.8h, v10.8h, #1 - sshr v12.8h, v12.8h, #1 - sub v26.8h, v13.8h, v14.8h - sub v28.8h, v15.8h, v16.8h - add v13.8h, v13.8h, v14.8h - add v15.8h, v15.8h, v16.8h - mul v25.8h, v26.8h, v6.h[2] - mul v27.8h, v28.8h, v6.h[3] - sqrdmulh v14.8h, v26.8h, v4.h[2] - sqrdmulh v16.8h, v28.8h, v4.h[3] - sqrdmlsh v14.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v14.8h, v14.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v18.8h - sub v28.8h, v19.8h, v20.8h - add v17.8h, v17.8h, v18.8h - add v19.8h, v19.8h, v20.8h - mul v25.8h, v26.8h, v6.h[4] - mul v27.8h, v28.8h, v6.h[5] - sqrdmulh v18.8h, v26.8h, v4.h[4] - sqrdmulh v20.8h, v28.8h, v4.h[5] - sqrdmlsh v18.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v18.8h, v18.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v21.8h, v22.8h - sub v28.8h, v23.8h, v24.8h - add v21.8h, v21.8h, v22.8h - add v23.8h, v23.8h, v24.8h - mul v25.8h, v26.8h, v6.h[6] - mul v27.8h, v28.8h, v6.h[7] - sqrdmulh v22.8h, v26.8h, v4.h[6] - sqrdmulh v24.8h, v28.8h, v4.h[7] - sqrdmlsh v22.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v22.8h, v22.8h, #1 - sshr v24.8h, v24.8h, #1 - sub v26.8h, v9.8h, v11.8h - sub v28.8h, v10.8h, v12.8h - add v9.8h, v9.8h, v11.8h - add v10.8h, v10.8h, v12.8h - mul v25.8h, v26.8h, v7.h[0] - mul v27.8h, v28.8h, v7.h[0] - sqrdmulh v11.8h, v26.8h, v5.h[0] - sqrdmulh v12.8h, v28.8h, v5.h[0] - sqrdmlsh v11.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v27.8h, v8.h[0] - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - sub v26.8h, v13.8h, v15.8h - sub v28.8h, v14.8h, v16.8h - add v13.8h, v13.8h, v15.8h - add v14.8h, v14.8h, v16.8h - mul v25.8h, v26.8h, v7.h[1] - mul v27.8h, v28.8h, v7.h[1] - sqrdmulh v15.8h, v26.8h, v5.h[1] - sqrdmulh v16.8h, v28.8h, v5.h[1] - sqrdmlsh v15.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v19.8h - sub v28.8h, v18.8h, v20.8h - add v17.8h, v17.8h, v19.8h - add v18.8h, v18.8h, v20.8h - mul v25.8h, v26.8h, v7.h[2] - mul v27.8h, v28.8h, v7.h[2] - sqrdmulh v19.8h, v26.8h, v5.h[2] - sqrdmulh v20.8h, v28.8h, v5.h[2] - sqrdmlsh v19.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v21.8h, v23.8h - sub v28.8h, v22.8h, v24.8h - add v21.8h, v21.8h, v23.8h - add v22.8h, v22.8h, v24.8h - mul v25.8h, v26.8h, v7.h[3] - mul v27.8h, v28.8h, v7.h[3] - sqrdmulh v23.8h, v26.8h, v5.h[3] - sqrdmulh v24.8h, v28.8h, v5.h[3] - sqrdmlsh v23.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - sub v26.8h, v9.8h, v13.8h - sub v28.8h, v10.8h, v14.8h - add v9.8h, v9.8h, v13.8h - add v10.8h, v10.8h, v14.8h - mul v25.8h, v26.8h, v7.h[4] - mul v27.8h, v28.8h, v7.h[4] - sqrdmulh v13.8h, v26.8h, v5.h[4] - sqrdmulh v14.8h, v28.8h, v5.h[4] - sqrdmlsh v13.8h, v25.8h, v8.h[0] - sqrdmlsh v14.8h, v27.8h, v8.h[0] - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - sub v26.8h, v11.8h, v15.8h - sub v28.8h, v12.8h, v16.8h - add v11.8h, v11.8h, v15.8h - add v12.8h, v12.8h, v16.8h - mul v25.8h, v26.8h, v7.h[4] - mul v27.8h, v28.8h, v7.h[4] - sqrdmulh v15.8h, v26.8h, v5.h[4] - sqrdmulh v16.8h, v28.8h, v5.h[4] - sqrdmlsh v15.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v27.8h, v8.h[0] - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - sub v26.8h, v17.8h, v21.8h - sub v28.8h, v18.8h, v22.8h - add v17.8h, v17.8h, v21.8h - add v18.8h, v18.8h, v22.8h - mul v25.8h, v26.8h, v7.h[5] - mul v27.8h, v28.8h, v7.h[5] - sqrdmulh v21.8h, v26.8h, v5.h[5] - sqrdmulh v22.8h, v28.8h, v5.h[5] - sqrdmlsh v21.8h, v25.8h, v8.h[0] - sqrdmlsh v22.8h, v27.8h, v8.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - sub v26.8h, v19.8h, v23.8h - sub v28.8h, v20.8h, v24.8h - add v19.8h, v19.8h, v23.8h - add v20.8h, v20.8h, v24.8h - mul v25.8h, v26.8h, v7.h[5] - mul v27.8h, v28.8h, v7.h[5] - sqrdmulh v23.8h, v26.8h, v5.h[5] - sqrdmulh v24.8h, v28.8h, v5.h[5] - sqrdmlsh v23.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - sqdmulh v25.8h, v9.8h, v8.h[2] - sqdmulh v26.8h, v10.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v9.8h, v25.8h, v8.h[0] - mls v10.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v11.8h, v8.h[2] - sqdmulh v26.8h, v12.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v11.8h, v25.8h, v8.h[0] - mls v12.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v17.8h, v8.h[2] - sqdmulh v26.8h, v18.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v17.8h, v25.8h, v8.h[0] - mls v18.8h, v26.8h, v8.h[0] - sqdmulh v25.8h, v19.8h, v8.h[2] - sqdmulh v26.8h, v20.8h, v8.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v19.8h, v25.8h, v8.h[0] - mls v20.8h, v26.8h, v8.h[0] - sub v26.8h, v9.8h, v17.8h - sub v28.8h, v10.8h, v18.8h - add v9.8h, v9.8h, v17.8h - add v10.8h, v10.8h, v18.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v17.8h, v26.8h, v5.h[6] - sqrdmulh v18.8h, v28.8h, v5.h[6] - sqrdmlsh v17.8h, v25.8h, v8.h[0] - sqrdmlsh v18.8h, v27.8h, v8.h[0] - sshr v17.8h, v17.8h, #1 - sshr v18.8h, v18.8h, #1 - sub v26.8h, v11.8h, v19.8h - sub v28.8h, v12.8h, v20.8h - add v11.8h, v11.8h, v19.8h - add v12.8h, v12.8h, v20.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v19.8h, v26.8h, v5.h[6] - sqrdmulh v20.8h, v28.8h, v5.h[6] - sqrdmlsh v19.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v27.8h, v8.h[0] - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - sub v26.8h, v13.8h, v21.8h - sub v28.8h, v14.8h, v22.8h - add v13.8h, v13.8h, v21.8h - add v14.8h, v14.8h, v22.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v21.8h, v26.8h, v5.h[6] - sqrdmulh v22.8h, v28.8h, v5.h[6] - sqrdmlsh v21.8h, v25.8h, v8.h[0] - sqrdmlsh v22.8h, v27.8h, v8.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - sub v26.8h, v15.8h, v23.8h - sub v28.8h, v16.8h, v24.8h - add v15.8h, v15.8h, v23.8h - add v16.8h, v16.8h, v24.8h - mul v25.8h, v26.8h, v7.h[6] - mul v27.8h, v28.8h, v7.h[6] - sqrdmulh v23.8h, v26.8h, v5.h[6] - sqrdmulh v24.8h, v28.8h, v5.h[6] - sqrdmlsh v23.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v27.8h, v8.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - mul v25.8h, v9.8h, v7.h[7] - mul v26.8h, v10.8h, v7.h[7] - sqrdmulh v9.8h, v9.8h, v5.h[7] - sqrdmulh v10.8h, v10.8h, v5.h[7] - sqrdmlsh v9.8h, v25.8h, v8.h[0] - sqrdmlsh v10.8h, v26.8h, v8.h[0] - sshr v9.8h, v9.8h, #1 - sshr v10.8h, v10.8h, #1 - mul v25.8h, v11.8h, v7.h[7] - mul v26.8h, v12.8h, v7.h[7] - sqrdmulh v11.8h, v11.8h, v5.h[7] - sqrdmulh v12.8h, v12.8h, v5.h[7] - sqrdmlsh v11.8h, v25.8h, v8.h[0] - sqrdmlsh v12.8h, v26.8h, v8.h[0] - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - mul v25.8h, v13.8h, v7.h[7] - mul v26.8h, v14.8h, v7.h[7] - sqrdmulh v13.8h, v13.8h, v5.h[7] - sqrdmulh v14.8h, v14.8h, v5.h[7] - sqrdmlsh v13.8h, v25.8h, v8.h[0] - sqrdmlsh v14.8h, v26.8h, v8.h[0] - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - mul v25.8h, v15.8h, v7.h[7] - mul v26.8h, v16.8h, v7.h[7] - sqrdmulh v15.8h, v15.8h, v5.h[7] - sqrdmulh v16.8h, v16.8h, v5.h[7] - sqrdmlsh v15.8h, v25.8h, v8.h[0] - sqrdmlsh v16.8h, v26.8h, v8.h[0] - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - mul v25.8h, v17.8h, v7.h[7] - mul v26.8h, v18.8h, v7.h[7] - sqrdmulh v17.8h, v17.8h, v5.h[7] - sqrdmulh v18.8h, v18.8h, v5.h[7] - sqrdmlsh v17.8h, v25.8h, v8.h[0] - sqrdmlsh v18.8h, v26.8h, v8.h[0] - sshr v17.8h, v17.8h, #1 - sshr v18.8h, v18.8h, #1 - mul v25.8h, v19.8h, v7.h[7] - mul v26.8h, v20.8h, v7.h[7] - sqrdmulh v19.8h, v19.8h, v5.h[7] - sqrdmulh v20.8h, v20.8h, v5.h[7] - sqrdmlsh v19.8h, v25.8h, v8.h[0] - sqrdmlsh v20.8h, v26.8h, v8.h[0] - sshr v19.8h, v19.8h, #1 - sshr v20.8h, v20.8h, #1 - mul v25.8h, v21.8h, v7.h[7] - mul v26.8h, v22.8h, v7.h[7] - sqrdmulh v21.8h, v21.8h, v5.h[7] - sqrdmulh v22.8h, v22.8h, v5.h[7] - sqrdmlsh v21.8h, v25.8h, v8.h[0] - sqrdmlsh v22.8h, v26.8h, v8.h[0] - sshr v21.8h, v21.8h, #1 - sshr v22.8h, v22.8h, #1 - mul v25.8h, v23.8h, v7.h[7] - mul v26.8h, v24.8h, v7.h[7] - sqrdmulh v23.8h, v23.8h, v5.h[7] - sqrdmulh v24.8h, v24.8h, v5.h[7] - sqrdmlsh v23.8h, v25.8h, v8.h[0] - sqrdmlsh v24.8h, v26.8h, v8.h[0] - sshr v23.8h, v23.8h, #1 - sshr v24.8h, v24.8h, #1 - str q9, [x0, #16] - str q10, [x0, #48] - str q11, [x0, #80] - str q12, [x0, #112] - str q13, [x0, #144] - str q14, [x0, #176] - str q15, [x0, #208] - str q16, [x0, #240] - str q17, [x1, #16] - str q18, [x1, #48] - str q19, [x1, #80] - str q20, [x1, #112] - str q21, [x1, #144] - str q22, [x1, #176] - str q23, [x1, #208] - str q24, [x1, #240] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldr Q8, [x4] + ldp Q9, Q10, [x0] + ldp Q11, Q12, [x0, #32] + ldp Q13, Q14, [x0, #64] + ldp Q15, Q16, [x0, #96] + ldp Q17, Q18, [x0, #128] + ldp Q19, Q20, [x0, #160] + ldp Q21, Q22, [x0, #192] + ldp Q23, Q24, [x0, #224] + mov V25.16B, V9.16B + trn1 V9.2D, V9.2D, V10.2D + trn2 V10.2D, V25.2D, V10.2D + mov V25.16B, V9.16B + trn1 V9.4S, V9.4S, V10.4S + trn2 V10.4S, V25.4S, V10.4S + mov V25.16B, V11.16B + trn1 V11.2D, V11.2D, V12.2D + trn2 V12.2D, V25.2D, V12.2D + mov V25.16B, V11.16B + trn1 V11.4S, V11.4S, V12.4S + trn2 V12.4S, V25.4S, V12.4S + mov V25.16B, V13.16B + trn1 V13.2D, V13.2D, V14.2D + trn2 V14.2D, V25.2D, V14.2D + mov V25.16B, V13.16B + trn1 V13.4S, V13.4S, V14.4S + trn2 V14.4S, V25.4S, V14.4S + mov V25.16B, V15.16B + trn1 V15.2D, V15.2D, V16.2D + trn2 V16.2D, V25.2D, V16.2D + mov V25.16B, V15.16B + trn1 V15.4S, V15.4S, V16.4S + trn2 V16.4S, V25.4S, V16.4S + mov V25.16B, V17.16B + trn1 V17.2D, V17.2D, V18.2D + trn2 V18.2D, V25.2D, V18.2D + mov V25.16B, V17.16B + trn1 V17.4S, V17.4S, V18.4S + trn2 V18.4S, V25.4S, V18.4S + mov V25.16B, V19.16B + trn1 V19.2D, V19.2D, V20.2D + trn2 V20.2D, V25.2D, V20.2D + mov V25.16B, V19.16B + trn1 V19.4S, V19.4S, V20.4S + trn2 V20.4S, V25.4S, V20.4S + mov V25.16B, V21.16B + trn1 V21.2D, V21.2D, V22.2D + trn2 V22.2D, V25.2D, V22.2D + mov V25.16B, V21.16B + trn1 V21.4S, V21.4S, V22.4S + trn2 V22.4S, V25.4S, V22.4S + mov V25.16B, V23.16B + trn1 V23.2D, V23.2D, V24.2D + trn2 V24.2D, V25.2D, V24.2D + mov V25.16B, V23.16B + trn1 V23.4S, V23.4S, V24.4S + trn2 V24.4S, V25.4S, V24.4S + ldr Q0, [x2] + ldr Q1, [x2, #16] + ldr Q2, [x3] + ldr Q3, [x3, #16] + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V10.8H, V26.8H, V0.8H + sqrdmulh V12.8H, V28.8H, V1.8H + sqrdmlsh V10.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + ldr Q0, [x2, #32] + ldr Q1, [x2, #48] + ldr Q2, [x3, #32] + ldr Q3, [x3, #48] + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V14.8H, V26.8H, V0.8H + sqrdmulh V16.8H, V28.8H, V1.8H + sqrdmlsh V14.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + ldr Q0, [x2, #64] + ldr Q1, [x2, #80] + ldr Q2, [x3, #64] + ldr Q3, [x3, #80] + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V18.8H, V26.8H, V0.8H + sqrdmulh V20.8H, V28.8H, V1.8H + sqrdmlsh V18.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + ldr Q0, [x2, #96] + ldr Q1, [x2, #112] + ldr Q2, [x3, #96] + ldr Q3, [x3, #112] + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V22.8H, V26.8H, V0.8H + sqrdmulh V24.8H, V28.8H, V1.8H + sqrdmlsh V22.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #256] + ldr Q1, [x2, #272] + ldr Q2, [x3, #256] + ldr Q3, [x3, #272] + mov V25.16B, V9.16B + mov V26.16B, V11.16B + trn1 V9.4S, V9.4S, V10.4S + trn1 V11.4S, V11.4S, V12.4S + trn2 V10.4S, V25.4S, V10.4S + trn2 V12.4S, V26.4S, V12.4S + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V10.8H, V26.8H, V0.8H + sqrdmulh V12.8H, V28.8H, V1.8H + sqrdmlsh V10.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + ldr Q0, [x2, #288] + ldr Q1, [x2, #304] + ldr Q2, [x3, #288] + ldr Q3, [x3, #304] + mov V25.16B, V13.16B + mov V26.16B, V15.16B + trn1 V13.4S, V13.4S, V14.4S + trn1 V15.4S, V15.4S, V16.4S + trn2 V14.4S, V25.4S, V14.4S + trn2 V16.4S, V26.4S, V16.4S + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V14.8H, V26.8H, V0.8H + sqrdmulh V16.8H, V28.8H, V1.8H + sqrdmlsh V14.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + ldr Q0, [x2, #320] + ldr Q1, [x2, #336] + ldr Q2, [x3, #320] + ldr Q3, [x3, #336] + mov V25.16B, V17.16B + mov V26.16B, V19.16B + trn1 V17.4S, V17.4S, V18.4S + trn1 V19.4S, V19.4S, V20.4S + trn2 V18.4S, V25.4S, V18.4S + trn2 V20.4S, V26.4S, V20.4S + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V18.8H, V26.8H, V0.8H + sqrdmulh V20.8H, V28.8H, V1.8H + sqrdmlsh V18.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + ldr Q0, [x2, #352] + ldr Q1, [x2, #368] + ldr Q2, [x3, #352] + ldr Q3, [x3, #368] + mov V25.16B, V21.16B + mov V26.16B, V23.16B + trn1 V21.4S, V21.4S, V22.4S + trn1 V23.4S, V23.4S, V24.4S + trn2 V22.4S, V25.4S, V22.4S + trn2 V24.4S, V26.4S, V24.4S + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V22.8H, V26.8H, V0.8H + sqrdmulh V24.8H, V28.8H, V1.8H + sqrdmlsh V22.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #512] + ldr Q2, [x3, #512] + mov V25.16B, V9.16B + mov V26.16B, V11.16B + trn1 V9.2D, V9.2D, V10.2D + trn1 V11.2D, V11.2D, V12.2D + trn2 V10.2D, V25.2D, V10.2D + trn2 V12.2D, V26.2D, V12.2D + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.H[0] + mul V27.8H, V28.8H, V2.H[1] + sqrdmulh V10.8H, V26.8H, V0.H[0] + sqrdmulh V12.8H, V28.8H, V0.H[1] + sqrdmlsh V10.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + mov V25.16B, V13.16B + mov V26.16B, V15.16B + trn1 V13.2D, V13.2D, V14.2D + trn1 V15.2D, V15.2D, V16.2D + trn2 V14.2D, V25.2D, V14.2D + trn2 V16.2D, V26.2D, V16.2D + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.H[2] + mul V27.8H, V28.8H, V2.H[3] + sqrdmulh V14.8H, V26.8H, V0.H[2] + sqrdmulh V16.8H, V28.8H, V0.H[3] + sqrdmlsh V14.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + mov V25.16B, V17.16B + mov V26.16B, V19.16B + trn1 V17.2D, V17.2D, V18.2D + trn1 V19.2D, V19.2D, V20.2D + trn2 V18.2D, V25.2D, V18.2D + trn2 V20.2D, V26.2D, V20.2D + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.H[4] + mul V27.8H, V28.8H, V2.H[5] + sqrdmulh V18.8H, V26.8H, V0.H[4] + sqrdmulh V20.8H, V28.8H, V0.H[5] + sqrdmlsh V18.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + mov V25.16B, V21.16B + mov V26.16B, V23.16B + trn1 V21.2D, V21.2D, V22.2D + trn1 V23.2D, V23.2D, V24.2D + trn2 V22.2D, V25.2D, V22.2D + trn2 V24.2D, V26.2D, V24.2D + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.H[6] + mul V27.8H, V28.8H, V2.H[7] + sqrdmulh V22.8H, V26.8H, V0.H[6] + sqrdmulh V24.8H, V28.8H, V0.H[7] + sqrdmlsh V22.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + sqdmulh V25.8H, V9.8H, V8.H[2] + sqdmulh V26.8H, V11.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V9.8H, V25.8H, V8.H[0] + mls V11.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V13.8H, V8.H[2] + sqdmulh V26.8H, V15.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V13.8H, V25.8H, V8.H[0] + mls V15.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V17.8H, V8.H[2] + sqdmulh V26.8H, V19.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V17.8H, V25.8H, V8.H[0] + mls V19.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V21.8H, V8.H[2] + sqdmulh V26.8H, V23.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V21.8H, V25.8H, V8.H[0] + mls V23.8H, V26.8H, V8.H[0] + stp Q9, Q10, [x0] + stp Q11, Q12, [x0, #32] + stp Q13, Q14, [x0, #64] + stp Q15, Q16, [x0, #96] + stp Q17, Q18, [x0, #128] + stp Q19, Q20, [x0, #160] + stp Q21, Q22, [x0, #192] + stp Q23, Q24, [x0, #224] + ldp Q9, Q10, [x1] + ldp Q11, Q12, [x1, #32] + ldp Q13, Q14, [x1, #64] + ldp Q15, Q16, [x1, #96] + ldp Q17, Q18, [x1, #128] + ldp Q19, Q20, [x1, #160] + ldp Q21, Q22, [x1, #192] + ldp Q23, Q24, [x1, #224] + mov V25.16B, V9.16B + trn1 V9.2D, V9.2D, V10.2D + trn2 V10.2D, V25.2D, V10.2D + mov V25.16B, V9.16B + trn1 V9.4S, V9.4S, V10.4S + trn2 V10.4S, V25.4S, V10.4S + mov V25.16B, V11.16B + trn1 V11.2D, V11.2D, V12.2D + trn2 V12.2D, V25.2D, V12.2D + mov V25.16B, V11.16B + trn1 V11.4S, V11.4S, V12.4S + trn2 V12.4S, V25.4S, V12.4S + mov V25.16B, V13.16B + trn1 V13.2D, V13.2D, V14.2D + trn2 V14.2D, V25.2D, V14.2D + mov V25.16B, V13.16B + trn1 V13.4S, V13.4S, V14.4S + trn2 V14.4S, V25.4S, V14.4S + mov V25.16B, V15.16B + trn1 V15.2D, V15.2D, V16.2D + trn2 V16.2D, V25.2D, V16.2D + mov V25.16B, V15.16B + trn1 V15.4S, V15.4S, V16.4S + trn2 V16.4S, V25.4S, V16.4S + mov V25.16B, V17.16B + trn1 V17.2D, V17.2D, V18.2D + trn2 V18.2D, V25.2D, V18.2D + mov V25.16B, V17.16B + trn1 V17.4S, V17.4S, V18.4S + trn2 V18.4S, V25.4S, V18.4S + mov V25.16B, V19.16B + trn1 V19.2D, V19.2D, V20.2D + trn2 V20.2D, V25.2D, V20.2D + mov V25.16B, V19.16B + trn1 V19.4S, V19.4S, V20.4S + trn2 V20.4S, V25.4S, V20.4S + mov V25.16B, V21.16B + trn1 V21.2D, V21.2D, V22.2D + trn2 V22.2D, V25.2D, V22.2D + mov V25.16B, V21.16B + trn1 V21.4S, V21.4S, V22.4S + trn2 V22.4S, V25.4S, V22.4S + mov V25.16B, V23.16B + trn1 V23.2D, V23.2D, V24.2D + trn2 V24.2D, V25.2D, V24.2D + mov V25.16B, V23.16B + trn1 V23.4S, V23.4S, V24.4S + trn2 V24.4S, V25.4S, V24.4S + ldr Q0, [x2, #128] + ldr Q1, [x2, #144] + ldr Q2, [x3, #128] + ldr Q3, [x3, #144] + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V10.8H, V26.8H, V0.8H + sqrdmulh V12.8H, V28.8H, V1.8H + sqrdmlsh V10.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + ldr Q0, [x2, #160] + ldr Q1, [x2, #176] + ldr Q2, [x3, #160] + ldr Q3, [x3, #176] + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V14.8H, V26.8H, V0.8H + sqrdmulh V16.8H, V28.8H, V1.8H + sqrdmlsh V14.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + ldr Q0, [x2, #192] + ldr Q1, [x2, #208] + ldr Q2, [x3, #192] + ldr Q3, [x3, #208] + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V18.8H, V26.8H, V0.8H + sqrdmulh V20.8H, V28.8H, V1.8H + sqrdmlsh V18.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + ldr Q0, [x2, #224] + ldr Q1, [x2, #240] + ldr Q2, [x3, #224] + ldr Q3, [x3, #240] + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V22.8H, V26.8H, V0.8H + sqrdmulh V24.8H, V28.8H, V1.8H + sqrdmlsh V22.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #384] + ldr Q1, [x2, #400] + ldr Q2, [x3, #384] + ldr Q3, [x3, #400] + mov V25.16B, V9.16B + mov V26.16B, V11.16B + trn1 V9.4S, V9.4S, V10.4S + trn1 V11.4S, V11.4S, V12.4S + trn2 V10.4S, V25.4S, V10.4S + trn2 V12.4S, V26.4S, V12.4S + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V10.8H, V26.8H, V0.8H + sqrdmulh V12.8H, V28.8H, V1.8H + sqrdmlsh V10.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + ldr Q0, [x2, #416] + ldr Q1, [x2, #432] + ldr Q2, [x3, #416] + ldr Q3, [x3, #432] + mov V25.16B, V13.16B + mov V26.16B, V15.16B + trn1 V13.4S, V13.4S, V14.4S + trn1 V15.4S, V15.4S, V16.4S + trn2 V14.4S, V25.4S, V14.4S + trn2 V16.4S, V26.4S, V16.4S + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V14.8H, V26.8H, V0.8H + sqrdmulh V16.8H, V28.8H, V1.8H + sqrdmlsh V14.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + ldr Q0, [x2, #448] + ldr Q1, [x2, #464] + ldr Q2, [x3, #448] + ldr Q3, [x3, #464] + mov V25.16B, V17.16B + mov V26.16B, V19.16B + trn1 V17.4S, V17.4S, V18.4S + trn1 V19.4S, V19.4S, V20.4S + trn2 V18.4S, V25.4S, V18.4S + trn2 V20.4S, V26.4S, V20.4S + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V18.8H, V26.8H, V0.8H + sqrdmulh V20.8H, V28.8H, V1.8H + sqrdmlsh V18.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + ldr Q0, [x2, #480] + ldr Q1, [x2, #496] + ldr Q2, [x3, #480] + ldr Q3, [x3, #496] + mov V25.16B, V21.16B + mov V26.16B, V23.16B + trn1 V21.4S, V21.4S, V22.4S + trn1 V23.4S, V23.4S, V24.4S + trn2 V22.4S, V25.4S, V22.4S + trn2 V24.4S, V26.4S, V24.4S + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.8H + mul V27.8H, V28.8H, V3.8H + sqrdmulh V22.8H, V26.8H, V0.8H + sqrdmulh V24.8H, V28.8H, V1.8H + sqrdmlsh V22.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + ldr Q0, [x2, #528] + ldr Q2, [x3, #528] + mov V25.16B, V9.16B + mov V26.16B, V11.16B + trn1 V9.2D, V9.2D, V10.2D + trn1 V11.2D, V11.2D, V12.2D + trn2 V10.2D, V25.2D, V10.2D + trn2 V12.2D, V26.2D, V12.2D + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V2.H[0] + mul V27.8H, V28.8H, V2.H[1] + sqrdmulh V10.8H, V26.8H, V0.H[0] + sqrdmulh V12.8H, V28.8H, V0.H[1] + sqrdmlsh V10.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + mov V25.16B, V13.16B + mov V26.16B, V15.16B + trn1 V13.2D, V13.2D, V14.2D + trn1 V15.2D, V15.2D, V16.2D + trn2 V14.2D, V25.2D, V14.2D + trn2 V16.2D, V26.2D, V16.2D + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V2.H[2] + mul V27.8H, V28.8H, V2.H[3] + sqrdmulh V14.8H, V26.8H, V0.H[2] + sqrdmulh V16.8H, V28.8H, V0.H[3] + sqrdmlsh V14.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + mov V25.16B, V17.16B + mov V26.16B, V19.16B + trn1 V17.2D, V17.2D, V18.2D + trn1 V19.2D, V19.2D, V20.2D + trn2 V18.2D, V25.2D, V18.2D + trn2 V20.2D, V26.2D, V20.2D + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V2.H[4] + mul V27.8H, V28.8H, V2.H[5] + sqrdmulh V18.8H, V26.8H, V0.H[4] + sqrdmulh V20.8H, V28.8H, V0.H[5] + sqrdmlsh V18.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + mov V25.16B, V21.16B + mov V26.16B, V23.16B + trn1 V21.2D, V21.2D, V22.2D + trn1 V23.2D, V23.2D, V24.2D + trn2 V22.2D, V25.2D, V22.2D + trn2 V24.2D, V26.2D, V24.2D + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V2.H[6] + mul V27.8H, V28.8H, V2.H[7] + sqrdmulh V22.8H, V26.8H, V0.H[6] + sqrdmulh V24.8H, V28.8H, V0.H[7] + sqrdmlsh V22.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + sqdmulh V25.8H, V9.8H, V8.H[2] + sqdmulh V26.8H, V11.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V9.8H, V25.8H, V8.H[0] + mls V11.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V13.8H, V8.H[2] + sqdmulh V26.8H, V15.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V13.8H, V25.8H, V8.H[0] + mls V15.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V17.8H, V8.H[2] + sqdmulh V26.8H, V19.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V17.8H, V25.8H, V8.H[0] + mls V19.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V21.8H, V8.H[2] + sqdmulh V26.8H, V23.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V21.8H, V25.8H, V8.H[0] + mls V23.8H, V26.8H, V8.H[0] + stp Q9, Q10, [x1] + stp Q11, Q12, [x1, #32] + stp Q13, Q14, [x1, #64] + stp Q15, Q16, [x1, #96] + stp Q17, Q18, [x1, #128] + stp Q19, Q20, [x1, #160] + stp Q21, Q22, [x1, #192] + stp Q23, Q24, [x1, #224] + ldr Q4, [x2, #544] + ldr Q5, [x2, #560] + ldr Q6, [x3, #544] + ldr Q7, [x3, #560] + ldr Q9, [x0] + ldr Q10, [x0, #32] + ldr Q11, [x0, #64] + ldr Q12, [x0, #96] + ldr Q13, [x0, #128] + ldr Q14, [x0, #160] + ldr Q15, [x0, #192] + ldr Q16, [x0, #224] + ldr Q17, [x1] + ldr Q18, [x1, #32] + ldr Q19, [x1, #64] + ldr Q20, [x1, #96] + ldr Q21, [x1, #128] + ldr Q22, [x1, #160] + ldr Q23, [x1, #192] + ldr Q24, [x1, #224] + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V6.H[0] + mul V27.8H, V28.8H, V6.H[1] + sqrdmulh V10.8H, V26.8H, V4.H[0] + sqrdmulh V12.8H, V28.8H, V4.H[1] + sqrdmlsh V10.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V6.H[2] + mul V27.8H, V28.8H, V6.H[3] + sqrdmulh V14.8H, V26.8H, V4.H[2] + sqrdmulh V16.8H, V28.8H, V4.H[3] + sqrdmlsh V14.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V6.H[4] + mul V27.8H, V28.8H, V6.H[5] + sqrdmulh V18.8H, V26.8H, V4.H[4] + sqrdmulh V20.8H, V28.8H, V4.H[5] + sqrdmlsh V18.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V6.H[6] + mul V27.8H, V28.8H, V6.H[7] + sqrdmulh V22.8H, V26.8H, V4.H[6] + sqrdmulh V24.8H, V28.8H, V4.H[7] + sqrdmlsh V22.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + sub V26.8H, V9.8H, V11.8H + sub V28.8H, V10.8H, V12.8H + add V9.8H, V9.8H, V11.8H + add V10.8H, V10.8H, V12.8H + mul V25.8H, V26.8H, V7.H[0] + mul V27.8H, V28.8H, V7.H[0] + sqrdmulh V11.8H, V26.8H, V5.H[0] + sqrdmulh V12.8H, V28.8H, V5.H[0] + sqrdmlsh V11.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + sub V26.8H, V13.8H, V15.8H + sub V28.8H, V14.8H, V16.8H + add V13.8H, V13.8H, V15.8H + add V14.8H, V14.8H, V16.8H + mul V25.8H, V26.8H, V7.H[1] + mul V27.8H, V28.8H, V7.H[1] + sqrdmulh V15.8H, V26.8H, V5.H[1] + sqrdmulh V16.8H, V28.8H, V5.H[1] + sqrdmlsh V15.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V19.8H + sub V28.8H, V18.8H, V20.8H + add V17.8H, V17.8H, V19.8H + add V18.8H, V18.8H, V20.8H + mul V25.8H, V26.8H, V7.H[2] + mul V27.8H, V28.8H, V7.H[2] + sqrdmulh V19.8H, V26.8H, V5.H[2] + sqrdmulh V20.8H, V28.8H, V5.H[2] + sqrdmlsh V19.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V21.8H, V23.8H + sub V28.8H, V22.8H, V24.8H + add V21.8H, V21.8H, V23.8H + add V22.8H, V22.8H, V24.8H + mul V25.8H, V26.8H, V7.H[3] + mul V27.8H, V28.8H, V7.H[3] + sqrdmulh V23.8H, V26.8H, V5.H[3] + sqrdmulh V24.8H, V28.8H, V5.H[3] + sqrdmlsh V23.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + sub V26.8H, V9.8H, V13.8H + sub V28.8H, V10.8H, V14.8H + add V9.8H, V9.8H, V13.8H + add V10.8H, V10.8H, V14.8H + mul V25.8H, V26.8H, V7.H[4] + mul V27.8H, V28.8H, V7.H[4] + sqrdmulh V13.8H, V26.8H, V5.H[4] + sqrdmulh V14.8H, V28.8H, V5.H[4] + sqrdmlsh V13.8H, V25.8H, V8.H[0] + sqrdmlsh V14.8H, V27.8H, V8.H[0] + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + sub V26.8H, V11.8H, V15.8H + sub V28.8H, V12.8H, V16.8H + add V11.8H, V11.8H, V15.8H + add V12.8H, V12.8H, V16.8H + mul V25.8H, V26.8H, V7.H[4] + mul V27.8H, V28.8H, V7.H[4] + sqrdmulh V15.8H, V26.8H, V5.H[4] + sqrdmulh V16.8H, V28.8H, V5.H[4] + sqrdmlsh V15.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V21.8H + sub V28.8H, V18.8H, V22.8H + add V17.8H, V17.8H, V21.8H + add V18.8H, V18.8H, V22.8H + mul V25.8H, V26.8H, V7.H[5] + mul V27.8H, V28.8H, V7.H[5] + sqrdmulh V21.8H, V26.8H, V5.H[5] + sqrdmulh V22.8H, V28.8H, V5.H[5] + sqrdmlsh V21.8H, V25.8H, V8.H[0] + sqrdmlsh V22.8H, V27.8H, V8.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + sub V26.8H, V19.8H, V23.8H + sub V28.8H, V20.8H, V24.8H + add V19.8H, V19.8H, V23.8H + add V20.8H, V20.8H, V24.8H + mul V25.8H, V26.8H, V7.H[5] + mul V27.8H, V28.8H, V7.H[5] + sqrdmulh V23.8H, V26.8H, V5.H[5] + sqrdmulh V24.8H, V28.8H, V5.H[5] + sqrdmlsh V23.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + sqdmulh V25.8H, V9.8H, V8.H[2] + sqdmulh V26.8H, V10.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V9.8H, V25.8H, V8.H[0] + mls V10.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V11.8H, V8.H[2] + sqdmulh V26.8H, V12.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V11.8H, V25.8H, V8.H[0] + mls V12.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V17.8H, V8.H[2] + sqdmulh V26.8H, V18.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V17.8H, V25.8H, V8.H[0] + mls V18.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V19.8H, V8.H[2] + sqdmulh V26.8H, V20.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V19.8H, V25.8H, V8.H[0] + mls V20.8H, V26.8H, V8.H[0] + sub V26.8H, V9.8H, V17.8H + sub V28.8H, V10.8H, V18.8H + add V9.8H, V9.8H, V17.8H + add V10.8H, V10.8H, V18.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V17.8H, V26.8H, V5.H[6] + sqrdmulh V18.8H, V28.8H, V5.H[6] + sqrdmlsh V17.8H, V25.8H, V8.H[0] + sqrdmlsh V18.8H, V27.8H, V8.H[0] + sshr V17.8H, V17.8H, #1 + sshr V18.8H, V18.8H, #1 + sub V26.8H, V11.8H, V19.8H + sub V28.8H, V12.8H, V20.8H + add V11.8H, V11.8H, V19.8H + add V12.8H, V12.8H, V20.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V19.8H, V26.8H, V5.H[6] + sqrdmulh V20.8H, V28.8H, V5.H[6] + sqrdmlsh V19.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V13.8H, V21.8H + sub V28.8H, V14.8H, V22.8H + add V13.8H, V13.8H, V21.8H + add V14.8H, V14.8H, V22.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V21.8H, V26.8H, V5.H[6] + sqrdmulh V22.8H, V28.8H, V5.H[6] + sqrdmlsh V21.8H, V25.8H, V8.H[0] + sqrdmlsh V22.8H, V27.8H, V8.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + sub V26.8H, V15.8H, V23.8H + sub V28.8H, V16.8H, V24.8H + add V15.8H, V15.8H, V23.8H + add V16.8H, V16.8H, V24.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V23.8H, V26.8H, V5.H[6] + sqrdmulh V24.8H, V28.8H, V5.H[6] + sqrdmlsh V23.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V25.8H, V9.8H, V7.H[7] + mul V26.8H, V10.8H, V7.H[7] + sqrdmulh V9.8H, V9.8H, V5.H[7] + sqrdmulh V10.8H, V10.8H, V5.H[7] + sqrdmlsh V9.8H, V25.8H, V8.H[0] + sqrdmlsh V10.8H, V26.8H, V8.H[0] + sshr V9.8H, V9.8H, #1 + sshr V10.8H, V10.8H, #1 + mul V25.8H, V11.8H, V7.H[7] + mul V26.8H, V12.8H, V7.H[7] + sqrdmulh V11.8H, V11.8H, V5.H[7] + sqrdmulh V12.8H, V12.8H, V5.H[7] + sqrdmlsh V11.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V26.8H, V8.H[0] + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + mul V25.8H, V13.8H, V7.H[7] + mul V26.8H, V14.8H, V7.H[7] + sqrdmulh V13.8H, V13.8H, V5.H[7] + sqrdmulh V14.8H, V14.8H, V5.H[7] + sqrdmlsh V13.8H, V25.8H, V8.H[0] + sqrdmlsh V14.8H, V26.8H, V8.H[0] + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + mul V25.8H, V15.8H, V7.H[7] + mul V26.8H, V16.8H, V7.H[7] + sqrdmulh V15.8H, V15.8H, V5.H[7] + sqrdmulh V16.8H, V16.8H, V5.H[7] + sqrdmlsh V15.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V26.8H, V8.H[0] + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + mul V25.8H, V17.8H, V7.H[7] + mul V26.8H, V18.8H, V7.H[7] + sqrdmulh V17.8H, V17.8H, V5.H[7] + sqrdmulh V18.8H, V18.8H, V5.H[7] + sqrdmlsh V17.8H, V25.8H, V8.H[0] + sqrdmlsh V18.8H, V26.8H, V8.H[0] + sshr V17.8H, V17.8H, #1 + sshr V18.8H, V18.8H, #1 + mul V25.8H, V19.8H, V7.H[7] + mul V26.8H, V20.8H, V7.H[7] + sqrdmulh V19.8H, V19.8H, V5.H[7] + sqrdmulh V20.8H, V20.8H, V5.H[7] + sqrdmlsh V19.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V26.8H, V8.H[0] + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + mul V25.8H, V21.8H, V7.H[7] + mul V26.8H, V22.8H, V7.H[7] + sqrdmulh V21.8H, V21.8H, V5.H[7] + sqrdmulh V22.8H, V22.8H, V5.H[7] + sqrdmlsh V21.8H, V25.8H, V8.H[0] + sqrdmlsh V22.8H, V26.8H, V8.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V25.8H, V23.8H, V7.H[7] + mul V26.8H, V24.8H, V7.H[7] + sqrdmulh V23.8H, V23.8H, V5.H[7] + sqrdmulh V24.8H, V24.8H, V5.H[7] + sqrdmlsh V23.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V26.8H, V8.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + str Q9, [x0] + str Q10, [x0, #32] + str Q11, [x0, #64] + str Q12, [x0, #96] + str Q13, [x0, #128] + str Q14, [x0, #160] + str Q15, [x0, #192] + str Q16, [x0, #224] + str Q17, [x1] + str Q18, [x1, #32] + str Q19, [x1, #64] + str Q20, [x1, #96] + str Q21, [x1, #128] + str Q22, [x1, #160] + str Q23, [x1, #192] + str Q24, [x1, #224] + ldr Q9, [x0, #16] + ldr Q10, [x0, #48] + ldr Q11, [x0, #80] + ldr Q12, [x0, #112] + ldr Q13, [x0, #144] + ldr Q14, [x0, #176] + ldr Q15, [x0, #208] + ldr Q16, [x0, #240] + ldr Q17, [x1, #16] + ldr Q18, [x1, #48] + ldr Q19, [x1, #80] + ldr Q20, [x1, #112] + ldr Q21, [x1, #144] + ldr Q22, [x1, #176] + ldr Q23, [x1, #208] + ldr Q24, [x1, #240] + sub V26.8H, V9.8H, V10.8H + sub V28.8H, V11.8H, V12.8H + add V9.8H, V9.8H, V10.8H + add V11.8H, V11.8H, V12.8H + mul V25.8H, V26.8H, V6.H[0] + mul V27.8H, V28.8H, V6.H[1] + sqrdmulh V10.8H, V26.8H, V4.H[0] + sqrdmulh V12.8H, V28.8H, V4.H[1] + sqrdmlsh V10.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V10.8H, V10.8H, #1 + sshr V12.8H, V12.8H, #1 + sub V26.8H, V13.8H, V14.8H + sub V28.8H, V15.8H, V16.8H + add V13.8H, V13.8H, V14.8H + add V15.8H, V15.8H, V16.8H + mul V25.8H, V26.8H, V6.H[2] + mul V27.8H, V28.8H, V6.H[3] + sqrdmulh V14.8H, V26.8H, V4.H[2] + sqrdmulh V16.8H, V28.8H, V4.H[3] + sqrdmlsh V14.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V14.8H, V14.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V18.8H + sub V28.8H, V19.8H, V20.8H + add V17.8H, V17.8H, V18.8H + add V19.8H, V19.8H, V20.8H + mul V25.8H, V26.8H, V6.H[4] + mul V27.8H, V28.8H, V6.H[5] + sqrdmulh V18.8H, V26.8H, V4.H[4] + sqrdmulh V20.8H, V28.8H, V4.H[5] + sqrdmlsh V18.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V18.8H, V18.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V21.8H, V22.8H + sub V28.8H, V23.8H, V24.8H + add V21.8H, V21.8H, V22.8H + add V23.8H, V23.8H, V24.8H + mul V25.8H, V26.8H, V6.H[6] + mul V27.8H, V28.8H, V6.H[7] + sqrdmulh V22.8H, V26.8H, V4.H[6] + sqrdmulh V24.8H, V28.8H, V4.H[7] + sqrdmlsh V22.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V22.8H, V22.8H, #1 + sshr V24.8H, V24.8H, #1 + sub V26.8H, V9.8H, V11.8H + sub V28.8H, V10.8H, V12.8H + add V9.8H, V9.8H, V11.8H + add V10.8H, V10.8H, V12.8H + mul V25.8H, V26.8H, V7.H[0] + mul V27.8H, V28.8H, V7.H[0] + sqrdmulh V11.8H, V26.8H, V5.H[0] + sqrdmulh V12.8H, V28.8H, V5.H[0] + sqrdmlsh V11.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V27.8H, V8.H[0] + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + sub V26.8H, V13.8H, V15.8H + sub V28.8H, V14.8H, V16.8H + add V13.8H, V13.8H, V15.8H + add V14.8H, V14.8H, V16.8H + mul V25.8H, V26.8H, V7.H[1] + mul V27.8H, V28.8H, V7.H[1] + sqrdmulh V15.8H, V26.8H, V5.H[1] + sqrdmulh V16.8H, V28.8H, V5.H[1] + sqrdmlsh V15.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V19.8H + sub V28.8H, V18.8H, V20.8H + add V17.8H, V17.8H, V19.8H + add V18.8H, V18.8H, V20.8H + mul V25.8H, V26.8H, V7.H[2] + mul V27.8H, V28.8H, V7.H[2] + sqrdmulh V19.8H, V26.8H, V5.H[2] + sqrdmulh V20.8H, V28.8H, V5.H[2] + sqrdmlsh V19.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V21.8H, V23.8H + sub V28.8H, V22.8H, V24.8H + add V21.8H, V21.8H, V23.8H + add V22.8H, V22.8H, V24.8H + mul V25.8H, V26.8H, V7.H[3] + mul V27.8H, V28.8H, V7.H[3] + sqrdmulh V23.8H, V26.8H, V5.H[3] + sqrdmulh V24.8H, V28.8H, V5.H[3] + sqrdmlsh V23.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + sub V26.8H, V9.8H, V13.8H + sub V28.8H, V10.8H, V14.8H + add V9.8H, V9.8H, V13.8H + add V10.8H, V10.8H, V14.8H + mul V25.8H, V26.8H, V7.H[4] + mul V27.8H, V28.8H, V7.H[4] + sqrdmulh V13.8H, V26.8H, V5.H[4] + sqrdmulh V14.8H, V28.8H, V5.H[4] + sqrdmlsh V13.8H, V25.8H, V8.H[0] + sqrdmlsh V14.8H, V27.8H, V8.H[0] + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + sub V26.8H, V11.8H, V15.8H + sub V28.8H, V12.8H, V16.8H + add V11.8H, V11.8H, V15.8H + add V12.8H, V12.8H, V16.8H + mul V25.8H, V26.8H, V7.H[4] + mul V27.8H, V28.8H, V7.H[4] + sqrdmulh V15.8H, V26.8H, V5.H[4] + sqrdmulh V16.8H, V28.8H, V5.H[4] + sqrdmlsh V15.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V27.8H, V8.H[0] + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + sub V26.8H, V17.8H, V21.8H + sub V28.8H, V18.8H, V22.8H + add V17.8H, V17.8H, V21.8H + add V18.8H, V18.8H, V22.8H + mul V25.8H, V26.8H, V7.H[5] + mul V27.8H, V28.8H, V7.H[5] + sqrdmulh V21.8H, V26.8H, V5.H[5] + sqrdmulh V22.8H, V28.8H, V5.H[5] + sqrdmlsh V21.8H, V25.8H, V8.H[0] + sqrdmlsh V22.8H, V27.8H, V8.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + sub V26.8H, V19.8H, V23.8H + sub V28.8H, V20.8H, V24.8H + add V19.8H, V19.8H, V23.8H + add V20.8H, V20.8H, V24.8H + mul V25.8H, V26.8H, V7.H[5] + mul V27.8H, V28.8H, V7.H[5] + sqrdmulh V23.8H, V26.8H, V5.H[5] + sqrdmulh V24.8H, V28.8H, V5.H[5] + sqrdmlsh V23.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + sqdmulh V25.8H, V9.8H, V8.H[2] + sqdmulh V26.8H, V10.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V9.8H, V25.8H, V8.H[0] + mls V10.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V11.8H, V8.H[2] + sqdmulh V26.8H, V12.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V11.8H, V25.8H, V8.H[0] + mls V12.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V17.8H, V8.H[2] + sqdmulh V26.8H, V18.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V17.8H, V25.8H, V8.H[0] + mls V18.8H, V26.8H, V8.H[0] + sqdmulh V25.8H, V19.8H, V8.H[2] + sqdmulh V26.8H, V20.8H, V8.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V19.8H, V25.8H, V8.H[0] + mls V20.8H, V26.8H, V8.H[0] + sub V26.8H, V9.8H, V17.8H + sub V28.8H, V10.8H, V18.8H + add V9.8H, V9.8H, V17.8H + add V10.8H, V10.8H, V18.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V17.8H, V26.8H, V5.H[6] + sqrdmulh V18.8H, V28.8H, V5.H[6] + sqrdmlsh V17.8H, V25.8H, V8.H[0] + sqrdmlsh V18.8H, V27.8H, V8.H[0] + sshr V17.8H, V17.8H, #1 + sshr V18.8H, V18.8H, #1 + sub V26.8H, V11.8H, V19.8H + sub V28.8H, V12.8H, V20.8H + add V11.8H, V11.8H, V19.8H + add V12.8H, V12.8H, V20.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V19.8H, V26.8H, V5.H[6] + sqrdmulh V20.8H, V28.8H, V5.H[6] + sqrdmlsh V19.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V27.8H, V8.H[0] + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + sub V26.8H, V13.8H, V21.8H + sub V28.8H, V14.8H, V22.8H + add V13.8H, V13.8H, V21.8H + add V14.8H, V14.8H, V22.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V21.8H, V26.8H, V5.H[6] + sqrdmulh V22.8H, V28.8H, V5.H[6] + sqrdmlsh V21.8H, V25.8H, V8.H[0] + sqrdmlsh V22.8H, V27.8H, V8.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + sub V26.8H, V15.8H, V23.8H + sub V28.8H, V16.8H, V24.8H + add V15.8H, V15.8H, V23.8H + add V16.8H, V16.8H, V24.8H + mul V25.8H, V26.8H, V7.H[6] + mul V27.8H, V28.8H, V7.H[6] + sqrdmulh V23.8H, V26.8H, V5.H[6] + sqrdmulh V24.8H, V28.8H, V5.H[6] + sqrdmlsh V23.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V27.8H, V8.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + mul V25.8H, V9.8H, V7.H[7] + mul V26.8H, V10.8H, V7.H[7] + sqrdmulh V9.8H, V9.8H, V5.H[7] + sqrdmulh V10.8H, V10.8H, V5.H[7] + sqrdmlsh V9.8H, V25.8H, V8.H[0] + sqrdmlsh V10.8H, V26.8H, V8.H[0] + sshr V9.8H, V9.8H, #1 + sshr V10.8H, V10.8H, #1 + mul V25.8H, V11.8H, V7.H[7] + mul V26.8H, V12.8H, V7.H[7] + sqrdmulh V11.8H, V11.8H, V5.H[7] + sqrdmulh V12.8H, V12.8H, V5.H[7] + sqrdmlsh V11.8H, V25.8H, V8.H[0] + sqrdmlsh V12.8H, V26.8H, V8.H[0] + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + mul V25.8H, V13.8H, V7.H[7] + mul V26.8H, V14.8H, V7.H[7] + sqrdmulh V13.8H, V13.8H, V5.H[7] + sqrdmulh V14.8H, V14.8H, V5.H[7] + sqrdmlsh V13.8H, V25.8H, V8.H[0] + sqrdmlsh V14.8H, V26.8H, V8.H[0] + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + mul V25.8H, V15.8H, V7.H[7] + mul V26.8H, V16.8H, V7.H[7] + sqrdmulh V15.8H, V15.8H, V5.H[7] + sqrdmulh V16.8H, V16.8H, V5.H[7] + sqrdmlsh V15.8H, V25.8H, V8.H[0] + sqrdmlsh V16.8H, V26.8H, V8.H[0] + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + mul V25.8H, V17.8H, V7.H[7] + mul V26.8H, V18.8H, V7.H[7] + sqrdmulh V17.8H, V17.8H, V5.H[7] + sqrdmulh V18.8H, V18.8H, V5.H[7] + sqrdmlsh V17.8H, V25.8H, V8.H[0] + sqrdmlsh V18.8H, V26.8H, V8.H[0] + sshr V17.8H, V17.8H, #1 + sshr V18.8H, V18.8H, #1 + mul V25.8H, V19.8H, V7.H[7] + mul V26.8H, V20.8H, V7.H[7] + sqrdmulh V19.8H, V19.8H, V5.H[7] + sqrdmulh V20.8H, V20.8H, V5.H[7] + sqrdmlsh V19.8H, V25.8H, V8.H[0] + sqrdmlsh V20.8H, V26.8H, V8.H[0] + sshr V19.8H, V19.8H, #1 + sshr V20.8H, V20.8H, #1 + mul V25.8H, V21.8H, V7.H[7] + mul V26.8H, V22.8H, V7.H[7] + sqrdmulh V21.8H, V21.8H, V5.H[7] + sqrdmulh V22.8H, V22.8H, V5.H[7] + sqrdmlsh V21.8H, V25.8H, V8.H[0] + sqrdmlsh V22.8H, V26.8H, V8.H[0] + sshr V21.8H, V21.8H, #1 + sshr V22.8H, V22.8H, #1 + mul V25.8H, V23.8H, V7.H[7] + mul V26.8H, V24.8H, V7.H[7] + sqrdmulh V23.8H, V23.8H, V5.H[7] + sqrdmulh V24.8H, V24.8H, V5.H[7] + sqrdmlsh V23.8H, V25.8H, V8.H[0] + sqrdmlsh V24.8H, V26.8H, V8.H[0] + sshr V23.8H, V23.8H, #1 + sshr V24.8H, V24.8H, #1 + str Q9, [x0, #16] + str Q10, [x0, #48] + str Q11, [x0, #80] + str Q12, [x0, #112] + str Q13, [x0, #144] + str Q14, [x0, #176] + str Q15, [x0, #208] + str Q16, [x0, #240] + str Q17, [x1, #16] + str Q18, [x1, #48] + str Q19, [x1, #80] + str Q20, [x1, #112] + str Q21, [x1, #144] + str Q22, [x1, #176] + str Q23, [x1, #208] + str Q24, [x1, #240] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP ENDIF - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_aarch64_zetas_mul DCW 0x08b2, 0xf74e, 0x01ae, 0xfe52, 0x022b, 0xfdd5, 0x034b, 0xfcb5 @@ -5344,675 +5344,675 @@ L_mlkem_aarch64_zetas_mul mlkem_basemul_mont PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x3, L_mlkem_aarch64_zetas_mul add x3, x3, L_mlkem_aarch64_zetas_mul adrp x4, L_mlkem_aarch64_consts add x4, x4, L_mlkem_aarch64_consts - ldr q1, [x4] - ldp q2, q3, [x1] - ldp q4, q5, [x1, #32] - ldp q6, q7, [x1, #64] - ldp q8, q9, [x1, #96] - ldp q10, q11, [x2] - ldp q12, q13, [x2, #32] - ldp q14, q15, [x2, #64] - ldp q16, q17, [x2, #96] - ldr q0, [x3] - uzp1 v18.8h, v2.8h, v3.8h - uzp2 v19.8h, v2.8h, v3.8h - uzp1 v20.8h, v10.8h, v11.8h - uzp2 v21.8h, v10.8h, v11.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0] - ldr q0, [x3, #16] - uzp1 v18.8h, v4.8h, v5.8h - uzp2 v19.8h, v4.8h, v5.8h - uzp1 v20.8h, v12.8h, v13.8h - uzp2 v21.8h, v12.8h, v13.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #32] - ldr q0, [x3, #32] - uzp1 v18.8h, v6.8h, v7.8h - uzp2 v19.8h, v6.8h, v7.8h - uzp1 v20.8h, v14.8h, v15.8h - uzp2 v21.8h, v14.8h, v15.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #64] - ldr q0, [x3, #48] - uzp1 v18.8h, v8.8h, v9.8h - uzp2 v19.8h, v8.8h, v9.8h - uzp1 v20.8h, v16.8h, v17.8h - uzp2 v21.8h, v16.8h, v17.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #96] - ldp q2, q3, [x1, #128] - ldp q4, q5, [x1, #160] - ldp q6, q7, [x1, #192] - ldp q8, q9, [x1, #224] - ldp q10, q11, [x2, #128] - ldp q12, q13, [x2, #160] - ldp q14, q15, [x2, #192] - ldp q16, q17, [x2, #224] - ldr q0, [x3, #64] - uzp1 v18.8h, v2.8h, v3.8h - uzp2 v19.8h, v2.8h, v3.8h - uzp1 v20.8h, v10.8h, v11.8h - uzp2 v21.8h, v10.8h, v11.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #128] - ldr q0, [x3, #80] - uzp1 v18.8h, v4.8h, v5.8h - uzp2 v19.8h, v4.8h, v5.8h - uzp1 v20.8h, v12.8h, v13.8h - uzp2 v21.8h, v12.8h, v13.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #160] - ldr q0, [x3, #96] - uzp1 v18.8h, v6.8h, v7.8h - uzp2 v19.8h, v6.8h, v7.8h - uzp1 v20.8h, v14.8h, v15.8h - uzp2 v21.8h, v14.8h, v15.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #192] - ldr q0, [x3, #112] - uzp1 v18.8h, v8.8h, v9.8h - uzp2 v19.8h, v8.8h, v9.8h - uzp1 v20.8h, v16.8h, v17.8h - uzp2 v21.8h, v16.8h, v17.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #224] - ldp q2, q3, [x1, #256] - ldp q4, q5, [x1, #288] - ldp q6, q7, [x1, #320] - ldp q8, q9, [x1, #352] - ldp q10, q11, [x2, #256] - ldp q12, q13, [x2, #288] - ldp q14, q15, [x2, #320] - ldp q16, q17, [x2, #352] - ldr q0, [x3, #128] - uzp1 v18.8h, v2.8h, v3.8h - uzp2 v19.8h, v2.8h, v3.8h - uzp1 v20.8h, v10.8h, v11.8h - uzp2 v21.8h, v10.8h, v11.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #256] - ldr q0, [x3, #144] - uzp1 v18.8h, v4.8h, v5.8h - uzp2 v19.8h, v4.8h, v5.8h - uzp1 v20.8h, v12.8h, v13.8h - uzp2 v21.8h, v12.8h, v13.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #288] - ldr q0, [x3, #160] - uzp1 v18.8h, v6.8h, v7.8h - uzp2 v19.8h, v6.8h, v7.8h - uzp1 v20.8h, v14.8h, v15.8h - uzp2 v21.8h, v14.8h, v15.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #320] - ldr q0, [x3, #176] - uzp1 v18.8h, v8.8h, v9.8h - uzp2 v19.8h, v8.8h, v9.8h - uzp1 v20.8h, v16.8h, v17.8h - uzp2 v21.8h, v16.8h, v17.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #352] - ldp q2, q3, [x1, #384] - ldp q4, q5, [x1, #416] - ldp q6, q7, [x1, #448] - ldp q8, q9, [x1, #480] - ldp q10, q11, [x2, #384] - ldp q12, q13, [x2, #416] - ldp q14, q15, [x2, #448] - ldp q16, q17, [x2, #480] - ldr q0, [x3, #192] - uzp1 v18.8h, v2.8h, v3.8h - uzp2 v19.8h, v2.8h, v3.8h - uzp1 v20.8h, v10.8h, v11.8h - uzp2 v21.8h, v10.8h, v11.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #384] - ldr q0, [x3, #208] - uzp1 v18.8h, v4.8h, v5.8h - uzp2 v19.8h, v4.8h, v5.8h - uzp1 v20.8h, v12.8h, v13.8h - uzp2 v21.8h, v12.8h, v13.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #416] - ldr q0, [x3, #224] - uzp1 v18.8h, v6.8h, v7.8h - uzp2 v19.8h, v6.8h, v7.8h - uzp1 v20.8h, v14.8h, v15.8h - uzp2 v21.8h, v14.8h, v15.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #448] - ldr q0, [x3, #240] - uzp1 v18.8h, v8.8h, v9.8h - uzp2 v19.8h, v8.8h, v9.8h - uzp1 v20.8h, v16.8h, v17.8h - uzp2 v21.8h, v16.8h, v17.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - stp q24, q25, [x0, #480] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldr Q1, [x4] + ldp Q2, Q3, [x1] + ldp Q4, Q5, [x1, #32] + ldp Q6, Q7, [x1, #64] + ldp Q8, Q9, [x1, #96] + ldp Q10, Q11, [x2] + ldp Q12, Q13, [x2, #32] + ldp Q14, Q15, [x2, #64] + ldp Q16, Q17, [x2, #96] + ldr Q0, [x3] + uzp1 V18.8H, V2.8H, V3.8H + uzp2 V19.8H, V2.8H, V3.8H + uzp1 V20.8H, V10.8H, V11.8H + uzp2 V21.8H, V10.8H, V11.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0] + ldr Q0, [x3, #16] + uzp1 V18.8H, V4.8H, V5.8H + uzp2 V19.8H, V4.8H, V5.8H + uzp1 V20.8H, V12.8H, V13.8H + uzp2 V21.8H, V12.8H, V13.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #32] + ldr Q0, [x3, #32] + uzp1 V18.8H, V6.8H, V7.8H + uzp2 V19.8H, V6.8H, V7.8H + uzp1 V20.8H, V14.8H, V15.8H + uzp2 V21.8H, V14.8H, V15.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #64] + ldr Q0, [x3, #48] + uzp1 V18.8H, V8.8H, V9.8H + uzp2 V19.8H, V8.8H, V9.8H + uzp1 V20.8H, V16.8H, V17.8H + uzp2 V21.8H, V16.8H, V17.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #96] + ldp Q2, Q3, [x1, #128] + ldp Q4, Q5, [x1, #160] + ldp Q6, Q7, [x1, #192] + ldp Q8, Q9, [x1, #224] + ldp Q10, Q11, [x2, #128] + ldp Q12, Q13, [x2, #160] + ldp Q14, Q15, [x2, #192] + ldp Q16, Q17, [x2, #224] + ldr Q0, [x3, #64] + uzp1 V18.8H, V2.8H, V3.8H + uzp2 V19.8H, V2.8H, V3.8H + uzp1 V20.8H, V10.8H, V11.8H + uzp2 V21.8H, V10.8H, V11.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #128] + ldr Q0, [x3, #80] + uzp1 V18.8H, V4.8H, V5.8H + uzp2 V19.8H, V4.8H, V5.8H + uzp1 V20.8H, V12.8H, V13.8H + uzp2 V21.8H, V12.8H, V13.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #160] + ldr Q0, [x3, #96] + uzp1 V18.8H, V6.8H, V7.8H + uzp2 V19.8H, V6.8H, V7.8H + uzp1 V20.8H, V14.8H, V15.8H + uzp2 V21.8H, V14.8H, V15.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #192] + ldr Q0, [x3, #112] + uzp1 V18.8H, V8.8H, V9.8H + uzp2 V19.8H, V8.8H, V9.8H + uzp1 V20.8H, V16.8H, V17.8H + uzp2 V21.8H, V16.8H, V17.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #224] + ldp Q2, Q3, [x1, #256] + ldp Q4, Q5, [x1, #288] + ldp Q6, Q7, [x1, #320] + ldp Q8, Q9, [x1, #352] + ldp Q10, Q11, [x2, #256] + ldp Q12, Q13, [x2, #288] + ldp Q14, Q15, [x2, #320] + ldp Q16, Q17, [x2, #352] + ldr Q0, [x3, #128] + uzp1 V18.8H, V2.8H, V3.8H + uzp2 V19.8H, V2.8H, V3.8H + uzp1 V20.8H, V10.8H, V11.8H + uzp2 V21.8H, V10.8H, V11.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #256] + ldr Q0, [x3, #144] + uzp1 V18.8H, V4.8H, V5.8H + uzp2 V19.8H, V4.8H, V5.8H + uzp1 V20.8H, V12.8H, V13.8H + uzp2 V21.8H, V12.8H, V13.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #288] + ldr Q0, [x3, #160] + uzp1 V18.8H, V6.8H, V7.8H + uzp2 V19.8H, V6.8H, V7.8H + uzp1 V20.8H, V14.8H, V15.8H + uzp2 V21.8H, V14.8H, V15.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #320] + ldr Q0, [x3, #176] + uzp1 V18.8H, V8.8H, V9.8H + uzp2 V19.8H, V8.8H, V9.8H + uzp1 V20.8H, V16.8H, V17.8H + uzp2 V21.8H, V16.8H, V17.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #352] + ldp Q2, Q3, [x1, #384] + ldp Q4, Q5, [x1, #416] + ldp Q6, Q7, [x1, #448] + ldp Q8, Q9, [x1, #480] + ldp Q10, Q11, [x2, #384] + ldp Q12, Q13, [x2, #416] + ldp Q14, Q15, [x2, #448] + ldp Q16, Q17, [x2, #480] + ldr Q0, [x3, #192] + uzp1 V18.8H, V2.8H, V3.8H + uzp2 V19.8H, V2.8H, V3.8H + uzp1 V20.8H, V10.8H, V11.8H + uzp2 V21.8H, V10.8H, V11.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #384] + ldr Q0, [x3, #208] + uzp1 V18.8H, V4.8H, V5.8H + uzp2 V19.8H, V4.8H, V5.8H + uzp1 V20.8H, V12.8H, V13.8H + uzp2 V21.8H, V12.8H, V13.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #416] + ldr Q0, [x3, #224] + uzp1 V18.8H, V6.8H, V7.8H + uzp2 V19.8H, V6.8H, V7.8H + uzp1 V20.8H, V14.8H, V15.8H + uzp2 V21.8H, V14.8H, V15.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #448] + ldr Q0, [x3, #240] + uzp1 V18.8H, V8.8H, V9.8H + uzp2 V19.8H, V8.8H, V9.8H + uzp1 V20.8H, V16.8H, V17.8H + uzp2 V21.8H, V16.8H, V17.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + stp Q24, Q25, [x0, #480] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -6022,727 +6022,727 @@ mlkem_basemul_mont PROC mlkem_basemul_mont_add PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x3, L_mlkem_aarch64_zetas_mul add x3, x3, L_mlkem_aarch64_zetas_mul adrp x4, L_mlkem_aarch64_consts add x4, x4, L_mlkem_aarch64_consts - ldr q1, [x4] - ldp q2, q3, [x1] - ldp q4, q5, [x1, #32] - ldp q6, q7, [x1, #64] - ldp q8, q9, [x1, #96] - ldp q10, q11, [x2] - ldp q12, q13, [x2, #32] - ldp q14, q15, [x2, #64] - ldp q16, q17, [x2, #96] - ldp q28, q29, [x0] - ldr q0, [x3] - uzp1 v18.8h, v2.8h, v3.8h - uzp2 v19.8h, v2.8h, v3.8h - uzp1 v20.8h, v10.8h, v11.8h - uzp2 v21.8h, v10.8h, v11.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0] - ldp q28, q29, [x0, #32] - ldr q0, [x3, #16] - uzp1 v18.8h, v4.8h, v5.8h - uzp2 v19.8h, v4.8h, v5.8h - uzp1 v20.8h, v12.8h, v13.8h - uzp2 v21.8h, v12.8h, v13.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #32] - ldp q28, q29, [x0, #64] - ldr q0, [x3, #32] - uzp1 v18.8h, v6.8h, v7.8h - uzp2 v19.8h, v6.8h, v7.8h - uzp1 v20.8h, v14.8h, v15.8h - uzp2 v21.8h, v14.8h, v15.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #64] - ldp q28, q29, [x0, #96] - ldr q0, [x3, #48] - uzp1 v18.8h, v8.8h, v9.8h - uzp2 v19.8h, v8.8h, v9.8h - uzp1 v20.8h, v16.8h, v17.8h - uzp2 v21.8h, v16.8h, v17.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #96] - ldp q2, q3, [x1, #128] - ldp q4, q5, [x1, #160] - ldp q6, q7, [x1, #192] - ldp q8, q9, [x1, #224] - ldp q10, q11, [x2, #128] - ldp q12, q13, [x2, #160] - ldp q14, q15, [x2, #192] - ldp q16, q17, [x2, #224] - ldp q28, q29, [x0, #128] - ldr q0, [x3, #64] - uzp1 v18.8h, v2.8h, v3.8h - uzp2 v19.8h, v2.8h, v3.8h - uzp1 v20.8h, v10.8h, v11.8h - uzp2 v21.8h, v10.8h, v11.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #128] - ldp q28, q29, [x0, #160] - ldr q0, [x3, #80] - uzp1 v18.8h, v4.8h, v5.8h - uzp2 v19.8h, v4.8h, v5.8h - uzp1 v20.8h, v12.8h, v13.8h - uzp2 v21.8h, v12.8h, v13.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #160] - ldp q28, q29, [x0, #192] - ldr q0, [x3, #96] - uzp1 v18.8h, v6.8h, v7.8h - uzp2 v19.8h, v6.8h, v7.8h - uzp1 v20.8h, v14.8h, v15.8h - uzp2 v21.8h, v14.8h, v15.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #192] - ldp q28, q29, [x0, #224] - ldr q0, [x3, #112] - uzp1 v18.8h, v8.8h, v9.8h - uzp2 v19.8h, v8.8h, v9.8h - uzp1 v20.8h, v16.8h, v17.8h - uzp2 v21.8h, v16.8h, v17.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #224] - ldp q2, q3, [x1, #256] - ldp q4, q5, [x1, #288] - ldp q6, q7, [x1, #320] - ldp q8, q9, [x1, #352] - ldp q10, q11, [x2, #256] - ldp q12, q13, [x2, #288] - ldp q14, q15, [x2, #320] - ldp q16, q17, [x2, #352] - ldp q28, q29, [x0, #256] - ldr q0, [x3, #128] - uzp1 v18.8h, v2.8h, v3.8h - uzp2 v19.8h, v2.8h, v3.8h - uzp1 v20.8h, v10.8h, v11.8h - uzp2 v21.8h, v10.8h, v11.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #256] - ldp q28, q29, [x0, #288] - ldr q0, [x3, #144] - uzp1 v18.8h, v4.8h, v5.8h - uzp2 v19.8h, v4.8h, v5.8h - uzp1 v20.8h, v12.8h, v13.8h - uzp2 v21.8h, v12.8h, v13.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #288] - ldp q28, q29, [x0, #320] - ldr q0, [x3, #160] - uzp1 v18.8h, v6.8h, v7.8h - uzp2 v19.8h, v6.8h, v7.8h - uzp1 v20.8h, v14.8h, v15.8h - uzp2 v21.8h, v14.8h, v15.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #320] - ldp q28, q29, [x0, #352] - ldr q0, [x3, #176] - uzp1 v18.8h, v8.8h, v9.8h - uzp2 v19.8h, v8.8h, v9.8h - uzp1 v20.8h, v16.8h, v17.8h - uzp2 v21.8h, v16.8h, v17.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #352] - ldp q2, q3, [x1, #384] - ldp q4, q5, [x1, #416] - ldp q6, q7, [x1, #448] - ldp q8, q9, [x1, #480] - ldp q10, q11, [x2, #384] - ldp q12, q13, [x2, #416] - ldp q14, q15, [x2, #448] - ldp q16, q17, [x2, #480] - ldp q28, q29, [x0, #384] - ldr q0, [x3, #192] - uzp1 v18.8h, v2.8h, v3.8h - uzp2 v19.8h, v2.8h, v3.8h - uzp1 v20.8h, v10.8h, v11.8h - uzp2 v21.8h, v10.8h, v11.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #384] - ldp q28, q29, [x0, #416] - ldr q0, [x3, #208] - uzp1 v18.8h, v4.8h, v5.8h - uzp2 v19.8h, v4.8h, v5.8h - uzp1 v20.8h, v12.8h, v13.8h - uzp2 v21.8h, v12.8h, v13.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #416] - ldp q28, q29, [x0, #448] - ldr q0, [x3, #224] - uzp1 v18.8h, v6.8h, v7.8h - uzp2 v19.8h, v6.8h, v7.8h - uzp1 v20.8h, v14.8h, v15.8h - uzp2 v21.8h, v14.8h, v15.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #448] - ldp q28, q29, [x0, #480] - ldr q0, [x3, #240] - uzp1 v18.8h, v8.8h, v9.8h - uzp2 v19.8h, v8.8h, v9.8h - uzp1 v20.8h, v16.8h, v17.8h - uzp2 v21.8h, v16.8h, v17.8h - smull v26.4s, v18.4h, v20.4h - smull2 v27.4s, v18.8h, v20.8h - smull v23.4s, v19.4h, v21.4h - smull2 v24.4s, v19.8h, v21.8h - xtn v25.4h, v23.4s - xtn2 v25.8h, v24.4s - mul v25.8h, v25.8h, v1.h[1] - smlsl v23.4s, v25.4h, v1.h[0] - smlsl2 v24.4s, v25.8h, v1.h[0] - shrn v22.4h, v23.4s, #16 - shrn2 v22.8h, v24.4s, #16 - smlal v26.4s, v22.4h, v0.4h - smlal2 v27.4s, v22.8h, v0.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v22.4h, v26.4s, #16 - shrn2 v22.8h, v27.4s, #16 - smull v26.4s, v18.4h, v21.4h - smull2 v27.4s, v18.8h, v21.8h - smlal v26.4s, v19.4h, v20.4h - smlal2 v27.4s, v19.8h, v20.8h - xtn v24.4h, v26.4s - xtn2 v24.8h, v27.4s - mul v24.8h, v24.8h, v1.h[1] - smlsl v26.4s, v24.4h, v1.h[0] - smlsl2 v27.4s, v24.8h, v1.h[0] - shrn v23.4h, v26.4s, #16 - shrn2 v23.8h, v27.4s, #16 - zip1 v24.8h, v22.8h, v23.8h - zip2 v25.8h, v22.8h, v23.8h - add v28.8h, v28.8h, v24.8h - add v29.8h, v29.8h, v25.8h - stp q28, q29, [x0, #480] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldr Q1, [x4] + ldp Q2, Q3, [x1] + ldp Q4, Q5, [x1, #32] + ldp Q6, Q7, [x1, #64] + ldp Q8, Q9, [x1, #96] + ldp Q10, Q11, [x2] + ldp Q12, Q13, [x2, #32] + ldp Q14, Q15, [x2, #64] + ldp Q16, Q17, [x2, #96] + ldp Q28, Q29, [x0] + ldr Q0, [x3] + uzp1 V18.8H, V2.8H, V3.8H + uzp2 V19.8H, V2.8H, V3.8H + uzp1 V20.8H, V10.8H, V11.8H + uzp2 V21.8H, V10.8H, V11.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0] + ldp Q28, Q29, [x0, #32] + ldr Q0, [x3, #16] + uzp1 V18.8H, V4.8H, V5.8H + uzp2 V19.8H, V4.8H, V5.8H + uzp1 V20.8H, V12.8H, V13.8H + uzp2 V21.8H, V12.8H, V13.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #32] + ldp Q28, Q29, [x0, #64] + ldr Q0, [x3, #32] + uzp1 V18.8H, V6.8H, V7.8H + uzp2 V19.8H, V6.8H, V7.8H + uzp1 V20.8H, V14.8H, V15.8H + uzp2 V21.8H, V14.8H, V15.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #64] + ldp Q28, Q29, [x0, #96] + ldr Q0, [x3, #48] + uzp1 V18.8H, V8.8H, V9.8H + uzp2 V19.8H, V8.8H, V9.8H + uzp1 V20.8H, V16.8H, V17.8H + uzp2 V21.8H, V16.8H, V17.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #96] + ldp Q2, Q3, [x1, #128] + ldp Q4, Q5, [x1, #160] + ldp Q6, Q7, [x1, #192] + ldp Q8, Q9, [x1, #224] + ldp Q10, Q11, [x2, #128] + ldp Q12, Q13, [x2, #160] + ldp Q14, Q15, [x2, #192] + ldp Q16, Q17, [x2, #224] + ldp Q28, Q29, [x0, #128] + ldr Q0, [x3, #64] + uzp1 V18.8H, V2.8H, V3.8H + uzp2 V19.8H, V2.8H, V3.8H + uzp1 V20.8H, V10.8H, V11.8H + uzp2 V21.8H, V10.8H, V11.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #128] + ldp Q28, Q29, [x0, #160] + ldr Q0, [x3, #80] + uzp1 V18.8H, V4.8H, V5.8H + uzp2 V19.8H, V4.8H, V5.8H + uzp1 V20.8H, V12.8H, V13.8H + uzp2 V21.8H, V12.8H, V13.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #160] + ldp Q28, Q29, [x0, #192] + ldr Q0, [x3, #96] + uzp1 V18.8H, V6.8H, V7.8H + uzp2 V19.8H, V6.8H, V7.8H + uzp1 V20.8H, V14.8H, V15.8H + uzp2 V21.8H, V14.8H, V15.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #192] + ldp Q28, Q29, [x0, #224] + ldr Q0, [x3, #112] + uzp1 V18.8H, V8.8H, V9.8H + uzp2 V19.8H, V8.8H, V9.8H + uzp1 V20.8H, V16.8H, V17.8H + uzp2 V21.8H, V16.8H, V17.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #224] + ldp Q2, Q3, [x1, #256] + ldp Q4, Q5, [x1, #288] + ldp Q6, Q7, [x1, #320] + ldp Q8, Q9, [x1, #352] + ldp Q10, Q11, [x2, #256] + ldp Q12, Q13, [x2, #288] + ldp Q14, Q15, [x2, #320] + ldp Q16, Q17, [x2, #352] + ldp Q28, Q29, [x0, #256] + ldr Q0, [x3, #128] + uzp1 V18.8H, V2.8H, V3.8H + uzp2 V19.8H, V2.8H, V3.8H + uzp1 V20.8H, V10.8H, V11.8H + uzp2 V21.8H, V10.8H, V11.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #256] + ldp Q28, Q29, [x0, #288] + ldr Q0, [x3, #144] + uzp1 V18.8H, V4.8H, V5.8H + uzp2 V19.8H, V4.8H, V5.8H + uzp1 V20.8H, V12.8H, V13.8H + uzp2 V21.8H, V12.8H, V13.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #288] + ldp Q28, Q29, [x0, #320] + ldr Q0, [x3, #160] + uzp1 V18.8H, V6.8H, V7.8H + uzp2 V19.8H, V6.8H, V7.8H + uzp1 V20.8H, V14.8H, V15.8H + uzp2 V21.8H, V14.8H, V15.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #320] + ldp Q28, Q29, [x0, #352] + ldr Q0, [x3, #176] + uzp1 V18.8H, V8.8H, V9.8H + uzp2 V19.8H, V8.8H, V9.8H + uzp1 V20.8H, V16.8H, V17.8H + uzp2 V21.8H, V16.8H, V17.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #352] + ldp Q2, Q3, [x1, #384] + ldp Q4, Q5, [x1, #416] + ldp Q6, Q7, [x1, #448] + ldp Q8, Q9, [x1, #480] + ldp Q10, Q11, [x2, #384] + ldp Q12, Q13, [x2, #416] + ldp Q14, Q15, [x2, #448] + ldp Q16, Q17, [x2, #480] + ldp Q28, Q29, [x0, #384] + ldr Q0, [x3, #192] + uzp1 V18.8H, V2.8H, V3.8H + uzp2 V19.8H, V2.8H, V3.8H + uzp1 V20.8H, V10.8H, V11.8H + uzp2 V21.8H, V10.8H, V11.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #384] + ldp Q28, Q29, [x0, #416] + ldr Q0, [x3, #208] + uzp1 V18.8H, V4.8H, V5.8H + uzp2 V19.8H, V4.8H, V5.8H + uzp1 V20.8H, V12.8H, V13.8H + uzp2 V21.8H, V12.8H, V13.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #416] + ldp Q28, Q29, [x0, #448] + ldr Q0, [x3, #224] + uzp1 V18.8H, V6.8H, V7.8H + uzp2 V19.8H, V6.8H, V7.8H + uzp1 V20.8H, V14.8H, V15.8H + uzp2 V21.8H, V14.8H, V15.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #448] + ldp Q28, Q29, [x0, #480] + ldr Q0, [x3, #240] + uzp1 V18.8H, V8.8H, V9.8H + uzp2 V19.8H, V8.8H, V9.8H + uzp1 V20.8H, V16.8H, V17.8H + uzp2 V21.8H, V16.8H, V17.8H + smull V26.4S, V18.4H, V20.4H + smull2 V27.4S, V18.8H, V20.8H + smull V23.4S, V19.4H, V21.4H + smull2 V24.4S, V19.8H, V21.8H + xtn V25.4H, V23.4S + xtn2 V25.8H, V24.4S + mul V25.8H, V25.8H, V1.H[1] + smlsl V23.4S, V25.4H, V1.H[0] + smlsl2 V24.4S, V25.8H, V1.H[0] + shrn V22.4H, V23.4S, #16 + shrn2 V22.8H, V24.4S, #16 + smlal V26.4S, V22.4H, V0.4H + smlal2 V27.4S, V22.8H, V0.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V22.4H, V26.4S, #16 + shrn2 V22.8H, V27.4S, #16 + smull V26.4S, V18.4H, V21.4H + smull2 V27.4S, V18.8H, V21.8H + smlal V26.4S, V19.4H, V20.4H + smlal2 V27.4S, V19.8H, V20.8H + xtn V24.4H, V26.4S + xtn2 V24.8H, V27.4S + mul V24.8H, V24.8H, V1.H[1] + smlsl V26.4S, V24.4H, V1.H[0] + smlsl2 V27.4S, V24.8H, V1.H[0] + shrn V23.4H, V26.4S, #16 + shrn2 V23.8H, V27.4S, #16 + zip1 V24.8H, V22.8H, V23.8H + zip2 V25.8H, V22.8H, V23.8H + add V28.8H, V28.8H, V24.8H + add V29.8H, V29.8H, V25.8H + stp Q28, Q29, [x0, #480] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_aarch64_q DCW 0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d01, 0x0d01 @@ -6752,163 +6752,163 @@ L_mlkem_aarch64_q mlkem_csubq_neon PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x1, L_mlkem_aarch64_q add x1, x1, L_mlkem_aarch64_q - ldr q20, [x1] - ld4 {v0.8h, v1.8h, v2.8h, v3.8h}, [x0], #0x40 - ld4 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - ld4 {v8.8h, v9.8h, v10.8h, v11.8h}, [x0], #0x40 - ld4 {v12.8h, v13.8h, v14.8h, v15.8h}, [x0], #0x40 + ldr Q20, [x1] + ld4 {V0.8H, V1.8H, V2.8H, V3.8H}, [x0], #0x40 + ld4 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + ld4 {V8.8H, V9.8H, V10.8H, V11.8H}, [x0], #0x40 + ld4 {V12.8H, V13.8H, V14.8H, V15.8H}, [x0], #0x40 sub x0, x0, #0x100 - sub v0.8h, v0.8h, v20.8h - sub v1.8h, v1.8h, v20.8h - sub v2.8h, v2.8h, v20.8h - sub v3.8h, v3.8h, v20.8h - sub v4.8h, v4.8h, v20.8h - sub v5.8h, v5.8h, v20.8h - sub v6.8h, v6.8h, v20.8h - sub v7.8h, v7.8h, v20.8h - sub v8.8h, v8.8h, v20.8h - sub v9.8h, v9.8h, v20.8h - sub v10.8h, v10.8h, v20.8h - sub v11.8h, v11.8h, v20.8h - sub v12.8h, v12.8h, v20.8h - sub v13.8h, v13.8h, v20.8h - sub v14.8h, v14.8h, v20.8h - sub v15.8h, v15.8h, v20.8h - sshr v16.8h, v0.8h, #15 - sshr v17.8h, v1.8h, #15 - sshr v18.8h, v2.8h, #15 - sshr v19.8h, v3.8h, #15 - and v16.16b, v16.16b, v20.16b - and v17.16b, v17.16b, v20.16b - and v18.16b, v18.16b, v20.16b - and v19.16b, v19.16b, v20.16b - add v0.8h, v0.8h, v16.8h - add v1.8h, v1.8h, v17.8h - add v2.8h, v2.8h, v18.8h - add v3.8h, v3.8h, v19.8h - sshr v16.8h, v4.8h, #15 - sshr v17.8h, v5.8h, #15 - sshr v18.8h, v6.8h, #15 - sshr v19.8h, v7.8h, #15 - and v16.16b, v16.16b, v20.16b - and v17.16b, v17.16b, v20.16b - and v18.16b, v18.16b, v20.16b - and v19.16b, v19.16b, v20.16b - add v4.8h, v4.8h, v16.8h - add v5.8h, v5.8h, v17.8h - add v6.8h, v6.8h, v18.8h - add v7.8h, v7.8h, v19.8h - sshr v16.8h, v8.8h, #15 - sshr v17.8h, v9.8h, #15 - sshr v18.8h, v10.8h, #15 - sshr v19.8h, v11.8h, #15 - and v16.16b, v16.16b, v20.16b - and v17.16b, v17.16b, v20.16b - and v18.16b, v18.16b, v20.16b - and v19.16b, v19.16b, v20.16b - add v8.8h, v8.8h, v16.8h - add v9.8h, v9.8h, v17.8h - add v10.8h, v10.8h, v18.8h - add v11.8h, v11.8h, v19.8h - sshr v16.8h, v12.8h, #15 - sshr v17.8h, v13.8h, #15 - sshr v18.8h, v14.8h, #15 - sshr v19.8h, v15.8h, #15 - and v16.16b, v16.16b, v20.16b - and v17.16b, v17.16b, v20.16b - and v18.16b, v18.16b, v20.16b - and v19.16b, v19.16b, v20.16b - add v12.8h, v12.8h, v16.8h - add v13.8h, v13.8h, v17.8h - add v14.8h, v14.8h, v18.8h - add v15.8h, v15.8h, v19.8h - st4 {v0.8h, v1.8h, v2.8h, v3.8h}, [x0], #0x40 - st4 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - st4 {v8.8h, v9.8h, v10.8h, v11.8h}, [x0], #0x40 - st4 {v12.8h, v13.8h, v14.8h, v15.8h}, [x0], #0x40 - ld4 {v0.8h, v1.8h, v2.8h, v3.8h}, [x0], #0x40 - ld4 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - ld4 {v8.8h, v9.8h, v10.8h, v11.8h}, [x0], #0x40 - ld4 {v12.8h, v13.8h, v14.8h, v15.8h}, [x0], #0x40 + sub V0.8H, V0.8H, V20.8H + sub V1.8H, V1.8H, V20.8H + sub V2.8H, V2.8H, V20.8H + sub V3.8H, V3.8H, V20.8H + sub V4.8H, V4.8H, V20.8H + sub V5.8H, V5.8H, V20.8H + sub V6.8H, V6.8H, V20.8H + sub V7.8H, V7.8H, V20.8H + sub V8.8H, V8.8H, V20.8H + sub V9.8H, V9.8H, V20.8H + sub V10.8H, V10.8H, V20.8H + sub V11.8H, V11.8H, V20.8H + sub V12.8H, V12.8H, V20.8H + sub V13.8H, V13.8H, V20.8H + sub V14.8H, V14.8H, V20.8H + sub V15.8H, V15.8H, V20.8H + sshr V16.8H, V0.8H, #15 + sshr V17.8H, V1.8H, #15 + sshr V18.8H, V2.8H, #15 + sshr V19.8H, V3.8H, #15 + and V16.16B, V16.16B, V20.16B + and V17.16B, V17.16B, V20.16B + and V18.16B, V18.16B, V20.16B + and V19.16B, V19.16B, V20.16B + add V0.8H, V0.8H, V16.8H + add V1.8H, V1.8H, V17.8H + add V2.8H, V2.8H, V18.8H + add V3.8H, V3.8H, V19.8H + sshr V16.8H, V4.8H, #15 + sshr V17.8H, V5.8H, #15 + sshr V18.8H, V6.8H, #15 + sshr V19.8H, V7.8H, #15 + and V16.16B, V16.16B, V20.16B + and V17.16B, V17.16B, V20.16B + and V18.16B, V18.16B, V20.16B + and V19.16B, V19.16B, V20.16B + add V4.8H, V4.8H, V16.8H + add V5.8H, V5.8H, V17.8H + add V6.8H, V6.8H, V18.8H + add V7.8H, V7.8H, V19.8H + sshr V16.8H, V8.8H, #15 + sshr V17.8H, V9.8H, #15 + sshr V18.8H, V10.8H, #15 + sshr V19.8H, V11.8H, #15 + and V16.16B, V16.16B, V20.16B + and V17.16B, V17.16B, V20.16B + and V18.16B, V18.16B, V20.16B + and V19.16B, V19.16B, V20.16B + add V8.8H, V8.8H, V16.8H + add V9.8H, V9.8H, V17.8H + add V10.8H, V10.8H, V18.8H + add V11.8H, V11.8H, V19.8H + sshr V16.8H, V12.8H, #15 + sshr V17.8H, V13.8H, #15 + sshr V18.8H, V14.8H, #15 + sshr V19.8H, V15.8H, #15 + and V16.16B, V16.16B, V20.16B + and V17.16B, V17.16B, V20.16B + and V18.16B, V18.16B, V20.16B + and V19.16B, V19.16B, V20.16B + add V12.8H, V12.8H, V16.8H + add V13.8H, V13.8H, V17.8H + add V14.8H, V14.8H, V18.8H + add V15.8H, V15.8H, V19.8H + st4 {V0.8H, V1.8H, V2.8H, V3.8H}, [x0], #0x40 + st4 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + st4 {V8.8H, V9.8H, V10.8H, V11.8H}, [x0], #0x40 + st4 {V12.8H, V13.8H, V14.8H, V15.8H}, [x0], #0x40 + ld4 {V0.8H, V1.8H, V2.8H, V3.8H}, [x0], #0x40 + ld4 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + ld4 {V8.8H, V9.8H, V10.8H, V11.8H}, [x0], #0x40 + ld4 {V12.8H, V13.8H, V14.8H, V15.8H}, [x0], #0x40 sub x0, x0, #0x100 - sub v0.8h, v0.8h, v20.8h - sub v1.8h, v1.8h, v20.8h - sub v2.8h, v2.8h, v20.8h - sub v3.8h, v3.8h, v20.8h - sub v4.8h, v4.8h, v20.8h - sub v5.8h, v5.8h, v20.8h - sub v6.8h, v6.8h, v20.8h - sub v7.8h, v7.8h, v20.8h - sub v8.8h, v8.8h, v20.8h - sub v9.8h, v9.8h, v20.8h - sub v10.8h, v10.8h, v20.8h - sub v11.8h, v11.8h, v20.8h - sub v12.8h, v12.8h, v20.8h - sub v13.8h, v13.8h, v20.8h - sub v14.8h, v14.8h, v20.8h - sub v15.8h, v15.8h, v20.8h - sshr v16.8h, v0.8h, #15 - sshr v17.8h, v1.8h, #15 - sshr v18.8h, v2.8h, #15 - sshr v19.8h, v3.8h, #15 - and v16.16b, v16.16b, v20.16b - and v17.16b, v17.16b, v20.16b - and v18.16b, v18.16b, v20.16b - and v19.16b, v19.16b, v20.16b - add v0.8h, v0.8h, v16.8h - add v1.8h, v1.8h, v17.8h - add v2.8h, v2.8h, v18.8h - add v3.8h, v3.8h, v19.8h - sshr v16.8h, v4.8h, #15 - sshr v17.8h, v5.8h, #15 - sshr v18.8h, v6.8h, #15 - sshr v19.8h, v7.8h, #15 - and v16.16b, v16.16b, v20.16b - and v17.16b, v17.16b, v20.16b - and v18.16b, v18.16b, v20.16b - and v19.16b, v19.16b, v20.16b - add v4.8h, v4.8h, v16.8h - add v5.8h, v5.8h, v17.8h - add v6.8h, v6.8h, v18.8h - add v7.8h, v7.8h, v19.8h - sshr v16.8h, v8.8h, #15 - sshr v17.8h, v9.8h, #15 - sshr v18.8h, v10.8h, #15 - sshr v19.8h, v11.8h, #15 - and v16.16b, v16.16b, v20.16b - and v17.16b, v17.16b, v20.16b - and v18.16b, v18.16b, v20.16b - and v19.16b, v19.16b, v20.16b - add v8.8h, v8.8h, v16.8h - add v9.8h, v9.8h, v17.8h - add v10.8h, v10.8h, v18.8h - add v11.8h, v11.8h, v19.8h - sshr v16.8h, v12.8h, #15 - sshr v17.8h, v13.8h, #15 - sshr v18.8h, v14.8h, #15 - sshr v19.8h, v15.8h, #15 - and v16.16b, v16.16b, v20.16b - and v17.16b, v17.16b, v20.16b - and v18.16b, v18.16b, v20.16b - and v19.16b, v19.16b, v20.16b - add v12.8h, v12.8h, v16.8h - add v13.8h, v13.8h, v17.8h - add v14.8h, v14.8h, v18.8h - add v15.8h, v15.8h, v19.8h - st4 {v0.8h, v1.8h, v2.8h, v3.8h}, [x0], #0x40 - st4 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - st4 {v8.8h, v9.8h, v10.8h, v11.8h}, [x0], #0x40 - st4 {v12.8h, v13.8h, v14.8h, v15.8h}, [x0], #0x40 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + sub V0.8H, V0.8H, V20.8H + sub V1.8H, V1.8H, V20.8H + sub V2.8H, V2.8H, V20.8H + sub V3.8H, V3.8H, V20.8H + sub V4.8H, V4.8H, V20.8H + sub V5.8H, V5.8H, V20.8H + sub V6.8H, V6.8H, V20.8H + sub V7.8H, V7.8H, V20.8H + sub V8.8H, V8.8H, V20.8H + sub V9.8H, V9.8H, V20.8H + sub V10.8H, V10.8H, V20.8H + sub V11.8H, V11.8H, V20.8H + sub V12.8H, V12.8H, V20.8H + sub V13.8H, V13.8H, V20.8H + sub V14.8H, V14.8H, V20.8H + sub V15.8H, V15.8H, V20.8H + sshr V16.8H, V0.8H, #15 + sshr V17.8H, V1.8H, #15 + sshr V18.8H, V2.8H, #15 + sshr V19.8H, V3.8H, #15 + and V16.16B, V16.16B, V20.16B + and V17.16B, V17.16B, V20.16B + and V18.16B, V18.16B, V20.16B + and V19.16B, V19.16B, V20.16B + add V0.8H, V0.8H, V16.8H + add V1.8H, V1.8H, V17.8H + add V2.8H, V2.8H, V18.8H + add V3.8H, V3.8H, V19.8H + sshr V16.8H, V4.8H, #15 + sshr V17.8H, V5.8H, #15 + sshr V18.8H, V6.8H, #15 + sshr V19.8H, V7.8H, #15 + and V16.16B, V16.16B, V20.16B + and V17.16B, V17.16B, V20.16B + and V18.16B, V18.16B, V20.16B + and V19.16B, V19.16B, V20.16B + add V4.8H, V4.8H, V16.8H + add V5.8H, V5.8H, V17.8H + add V6.8H, V6.8H, V18.8H + add V7.8H, V7.8H, V19.8H + sshr V16.8H, V8.8H, #15 + sshr V17.8H, V9.8H, #15 + sshr V18.8H, V10.8H, #15 + sshr V19.8H, V11.8H, #15 + and V16.16B, V16.16B, V20.16B + and V17.16B, V17.16B, V20.16B + and V18.16B, V18.16B, V20.16B + and V19.16B, V19.16B, V20.16B + add V8.8H, V8.8H, V16.8H + add V9.8H, V9.8H, V17.8H + add V10.8H, V10.8H, V18.8H + add V11.8H, V11.8H, V19.8H + sshr V16.8H, V12.8H, #15 + sshr V17.8H, V13.8H, #15 + sshr V18.8H, V14.8H, #15 + sshr V19.8H, V15.8H, #15 + and V16.16B, V16.16B, V20.16B + and V17.16B, V17.16B, V20.16B + and V18.16B, V18.16B, V20.16B + and V19.16B, V19.16B, V20.16B + add V12.8H, V12.8H, V16.8H + add V13.8H, V13.8H, V17.8H + add V14.8H, V14.8H, V18.8H + add V15.8H, V15.8H, V19.8H + st4 {V0.8H, V1.8H, V2.8H, V3.8H}, [x0], #0x40 + st4 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + st4 {V8.8H, V9.8H, V10.8H, V11.8H}, [x0], #0x40 + st4 {V12.8H, V13.8H, V14.8H, V15.8H}, [x0], #0x40 + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -6918,173 +6918,173 @@ mlkem_csubq_neon PROC mlkem_add_reduce PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x2, L_mlkem_aarch64_consts add x2, x2, L_mlkem_aarch64_consts - ldr q0, [x2] - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 + ldr Q0, [x2] + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 sub x0, x0, #0x80 - add v1.8h, v1.8h, v9.8h - add v2.8h, v2.8h, v10.8h - add v3.8h, v3.8h, v11.8h - add v4.8h, v4.8h, v12.8h - add v5.8h, v5.8h, v13.8h - add v6.8h, v6.8h, v14.8h - add v7.8h, v7.8h, v15.8h - add v8.8h, v8.8h, v16.8h - sqdmulh v17.8h, v1.8h, v0.h[2] - sqdmulh v18.8h, v2.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v1.8h, v17.8h, v0.h[0] - mls v2.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v3.8h, v0.h[2] - sqdmulh v18.8h, v4.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v3.8h, v17.8h, v0.h[0] - mls v4.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v5.8h, v0.h[2] - sqdmulh v18.8h, v6.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v5.8h, v17.8h, v0.h[0] - mls v6.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v7.8h, v0.h[2] - sqdmulh v18.8h, v8.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v7.8h, v17.8h, v0.h[0] - mls v8.8h, v18.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 + add V1.8H, V1.8H, V9.8H + add V2.8H, V2.8H, V10.8H + add V3.8H, V3.8H, V11.8H + add V4.8H, V4.8H, V12.8H + add V5.8H, V5.8H, V13.8H + add V6.8H, V6.8H, V14.8H + add V7.8H, V7.8H, V15.8H + add V8.8H, V8.8H, V16.8H + sqdmulh V17.8H, V1.8H, V0.H[2] + sqdmulh V18.8H, V2.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V1.8H, V17.8H, V0.H[0] + mls V2.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V3.8H, V0.H[2] + sqdmulh V18.8H, V4.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V3.8H, V17.8H, V0.H[0] + mls V4.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V5.8H, V0.H[2] + sqdmulh V18.8H, V6.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V5.8H, V17.8H, V0.H[0] + mls V6.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V7.8H, V0.H[2] + sqdmulh V18.8H, V8.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V7.8H, V17.8H, V0.H[0] + mls V8.8H, V18.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 sub x0, x0, #0x80 - add v1.8h, v1.8h, v9.8h - add v2.8h, v2.8h, v10.8h - add v3.8h, v3.8h, v11.8h - add v4.8h, v4.8h, v12.8h - add v5.8h, v5.8h, v13.8h - add v6.8h, v6.8h, v14.8h - add v7.8h, v7.8h, v15.8h - add v8.8h, v8.8h, v16.8h - sqdmulh v17.8h, v1.8h, v0.h[2] - sqdmulh v18.8h, v2.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v1.8h, v17.8h, v0.h[0] - mls v2.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v3.8h, v0.h[2] - sqdmulh v18.8h, v4.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v3.8h, v17.8h, v0.h[0] - mls v4.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v5.8h, v0.h[2] - sqdmulh v18.8h, v6.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v5.8h, v17.8h, v0.h[0] - mls v6.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v7.8h, v0.h[2] - sqdmulh v18.8h, v8.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v7.8h, v17.8h, v0.h[0] - mls v8.8h, v18.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 + add V1.8H, V1.8H, V9.8H + add V2.8H, V2.8H, V10.8H + add V3.8H, V3.8H, V11.8H + add V4.8H, V4.8H, V12.8H + add V5.8H, V5.8H, V13.8H + add V6.8H, V6.8H, V14.8H + add V7.8H, V7.8H, V15.8H + add V8.8H, V8.8H, V16.8H + sqdmulh V17.8H, V1.8H, V0.H[2] + sqdmulh V18.8H, V2.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V1.8H, V17.8H, V0.H[0] + mls V2.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V3.8H, V0.H[2] + sqdmulh V18.8H, V4.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V3.8H, V17.8H, V0.H[0] + mls V4.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V5.8H, V0.H[2] + sqdmulh V18.8H, V6.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V5.8H, V17.8H, V0.H[0] + mls V6.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V7.8H, V0.H[2] + sqdmulh V18.8H, V8.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V7.8H, V17.8H, V0.H[0] + mls V8.8H, V18.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 sub x0, x0, #0x80 - add v1.8h, v1.8h, v9.8h - add v2.8h, v2.8h, v10.8h - add v3.8h, v3.8h, v11.8h - add v4.8h, v4.8h, v12.8h - add v5.8h, v5.8h, v13.8h - add v6.8h, v6.8h, v14.8h - add v7.8h, v7.8h, v15.8h - add v8.8h, v8.8h, v16.8h - sqdmulh v17.8h, v1.8h, v0.h[2] - sqdmulh v18.8h, v2.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v1.8h, v17.8h, v0.h[0] - mls v2.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v3.8h, v0.h[2] - sqdmulh v18.8h, v4.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v3.8h, v17.8h, v0.h[0] - mls v4.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v5.8h, v0.h[2] - sqdmulh v18.8h, v6.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v5.8h, v17.8h, v0.h[0] - mls v6.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v7.8h, v0.h[2] - sqdmulh v18.8h, v8.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v7.8h, v17.8h, v0.h[0] - mls v8.8h, v18.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 + add V1.8H, V1.8H, V9.8H + add V2.8H, V2.8H, V10.8H + add V3.8H, V3.8H, V11.8H + add V4.8H, V4.8H, V12.8H + add V5.8H, V5.8H, V13.8H + add V6.8H, V6.8H, V14.8H + add V7.8H, V7.8H, V15.8H + add V8.8H, V8.8H, V16.8H + sqdmulh V17.8H, V1.8H, V0.H[2] + sqdmulh V18.8H, V2.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V1.8H, V17.8H, V0.H[0] + mls V2.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V3.8H, V0.H[2] + sqdmulh V18.8H, V4.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V3.8H, V17.8H, V0.H[0] + mls V4.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V5.8H, V0.H[2] + sqdmulh V18.8H, V6.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V5.8H, V17.8H, V0.H[0] + mls V6.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V7.8H, V0.H[2] + sqdmulh V18.8H, V8.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V7.8H, V17.8H, V0.H[0] + mls V8.8H, V18.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 sub x0, x0, #0x80 - add v1.8h, v1.8h, v9.8h - add v2.8h, v2.8h, v10.8h - add v3.8h, v3.8h, v11.8h - add v4.8h, v4.8h, v12.8h - add v5.8h, v5.8h, v13.8h - add v6.8h, v6.8h, v14.8h - add v7.8h, v7.8h, v15.8h - add v8.8h, v8.8h, v16.8h - sqdmulh v17.8h, v1.8h, v0.h[2] - sqdmulh v18.8h, v2.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v1.8h, v17.8h, v0.h[0] - mls v2.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v3.8h, v0.h[2] - sqdmulh v18.8h, v4.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v3.8h, v17.8h, v0.h[0] - mls v4.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v5.8h, v0.h[2] - sqdmulh v18.8h, v6.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v5.8h, v17.8h, v0.h[0] - mls v6.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v7.8h, v0.h[2] - sqdmulh v18.8h, v8.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v7.8h, v17.8h, v0.h[0] - mls v8.8h, v18.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + add V1.8H, V1.8H, V9.8H + add V2.8H, V2.8H, V10.8H + add V3.8H, V3.8H, V11.8H + add V4.8H, V4.8H, V12.8H + add V5.8H, V5.8H, V13.8H + add V6.8H, V6.8H, V14.8H + add V7.8H, V7.8H, V15.8H + add V8.8H, V8.8H, V16.8H + sqdmulh V17.8H, V1.8H, V0.H[2] + sqdmulh V18.8H, V2.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V1.8H, V17.8H, V0.H[0] + mls V2.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V3.8H, V0.H[2] + sqdmulh V18.8H, V4.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V3.8H, V17.8H, V0.H[0] + mls V4.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V5.8H, V0.H[2] + sqdmulh V18.8H, V6.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V5.8H, V17.8H, V0.H[0] + mls V6.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V7.8H, V0.H[2] + sqdmulh V18.8H, V8.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V7.8H, V17.8H, V0.H[0] + mls V8.8H, V18.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -7094,213 +7094,213 @@ mlkem_add_reduce PROC mlkem_add3_reduce PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x3, L_mlkem_aarch64_consts add x3, x3, L_mlkem_aarch64_consts - ldr q0, [x3] - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 - ld4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x2], #0x40 - ld4 {v21.8h, v22.8h, v23.8h, v24.8h}, [x2], #0x40 + ldr Q0, [x3] + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 + ld4 {V17.8H, V18.8H, V19.8H, V20.8H}, [x2], #0x40 + ld4 {V21.8H, V22.8H, V23.8H, V24.8H}, [x2], #0x40 sub x0, x0, #0x80 - add v1.8h, v1.8h, v9.8h - add v2.8h, v2.8h, v10.8h - add v3.8h, v3.8h, v11.8h - add v4.8h, v4.8h, v12.8h - add v5.8h, v5.8h, v13.8h - add v6.8h, v6.8h, v14.8h - add v7.8h, v7.8h, v15.8h - add v8.8h, v8.8h, v16.8h - add v1.8h, v1.8h, v17.8h - add v2.8h, v2.8h, v18.8h - add v3.8h, v3.8h, v19.8h - add v4.8h, v4.8h, v20.8h - add v5.8h, v5.8h, v21.8h - add v6.8h, v6.8h, v22.8h - add v7.8h, v7.8h, v23.8h - add v8.8h, v8.8h, v24.8h - sqdmulh v25.8h, v1.8h, v0.h[2] - sqdmulh v26.8h, v2.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v1.8h, v25.8h, v0.h[0] - mls v2.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v3.8h, v0.h[2] - sqdmulh v26.8h, v4.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v3.8h, v25.8h, v0.h[0] - mls v4.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v5.8h, v0.h[2] - sqdmulh v26.8h, v6.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v5.8h, v25.8h, v0.h[0] - mls v6.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v7.8h, v0.h[2] - sqdmulh v26.8h, v8.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v7.8h, v25.8h, v0.h[0] - mls v8.8h, v26.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 - ld4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x2], #0x40 - ld4 {v21.8h, v22.8h, v23.8h, v24.8h}, [x2], #0x40 + add V1.8H, V1.8H, V9.8H + add V2.8H, V2.8H, V10.8H + add V3.8H, V3.8H, V11.8H + add V4.8H, V4.8H, V12.8H + add V5.8H, V5.8H, V13.8H + add V6.8H, V6.8H, V14.8H + add V7.8H, V7.8H, V15.8H + add V8.8H, V8.8H, V16.8H + add V1.8H, V1.8H, V17.8H + add V2.8H, V2.8H, V18.8H + add V3.8H, V3.8H, V19.8H + add V4.8H, V4.8H, V20.8H + add V5.8H, V5.8H, V21.8H + add V6.8H, V6.8H, V22.8H + add V7.8H, V7.8H, V23.8H + add V8.8H, V8.8H, V24.8H + sqdmulh V25.8H, V1.8H, V0.H[2] + sqdmulh V26.8H, V2.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V1.8H, V25.8H, V0.H[0] + mls V2.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V3.8H, V0.H[2] + sqdmulh V26.8H, V4.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V3.8H, V25.8H, V0.H[0] + mls V4.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V5.8H, V0.H[2] + sqdmulh V26.8H, V6.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V5.8H, V25.8H, V0.H[0] + mls V6.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V7.8H, V0.H[2] + sqdmulh V26.8H, V8.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V7.8H, V25.8H, V0.H[0] + mls V8.8H, V26.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 + ld4 {V17.8H, V18.8H, V19.8H, V20.8H}, [x2], #0x40 + ld4 {V21.8H, V22.8H, V23.8H, V24.8H}, [x2], #0x40 sub x0, x0, #0x80 - add v1.8h, v1.8h, v9.8h - add v2.8h, v2.8h, v10.8h - add v3.8h, v3.8h, v11.8h - add v4.8h, v4.8h, v12.8h - add v5.8h, v5.8h, v13.8h - add v6.8h, v6.8h, v14.8h - add v7.8h, v7.8h, v15.8h - add v8.8h, v8.8h, v16.8h - add v1.8h, v1.8h, v17.8h - add v2.8h, v2.8h, v18.8h - add v3.8h, v3.8h, v19.8h - add v4.8h, v4.8h, v20.8h - add v5.8h, v5.8h, v21.8h - add v6.8h, v6.8h, v22.8h - add v7.8h, v7.8h, v23.8h - add v8.8h, v8.8h, v24.8h - sqdmulh v25.8h, v1.8h, v0.h[2] - sqdmulh v26.8h, v2.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v1.8h, v25.8h, v0.h[0] - mls v2.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v3.8h, v0.h[2] - sqdmulh v26.8h, v4.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v3.8h, v25.8h, v0.h[0] - mls v4.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v5.8h, v0.h[2] - sqdmulh v26.8h, v6.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v5.8h, v25.8h, v0.h[0] - mls v6.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v7.8h, v0.h[2] - sqdmulh v26.8h, v8.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v7.8h, v25.8h, v0.h[0] - mls v8.8h, v26.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 - ld4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x2], #0x40 - ld4 {v21.8h, v22.8h, v23.8h, v24.8h}, [x2], #0x40 + add V1.8H, V1.8H, V9.8H + add V2.8H, V2.8H, V10.8H + add V3.8H, V3.8H, V11.8H + add V4.8H, V4.8H, V12.8H + add V5.8H, V5.8H, V13.8H + add V6.8H, V6.8H, V14.8H + add V7.8H, V7.8H, V15.8H + add V8.8H, V8.8H, V16.8H + add V1.8H, V1.8H, V17.8H + add V2.8H, V2.8H, V18.8H + add V3.8H, V3.8H, V19.8H + add V4.8H, V4.8H, V20.8H + add V5.8H, V5.8H, V21.8H + add V6.8H, V6.8H, V22.8H + add V7.8H, V7.8H, V23.8H + add V8.8H, V8.8H, V24.8H + sqdmulh V25.8H, V1.8H, V0.H[2] + sqdmulh V26.8H, V2.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V1.8H, V25.8H, V0.H[0] + mls V2.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V3.8H, V0.H[2] + sqdmulh V26.8H, V4.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V3.8H, V25.8H, V0.H[0] + mls V4.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V5.8H, V0.H[2] + sqdmulh V26.8H, V6.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V5.8H, V25.8H, V0.H[0] + mls V6.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V7.8H, V0.H[2] + sqdmulh V26.8H, V8.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V7.8H, V25.8H, V0.H[0] + mls V8.8H, V26.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 + ld4 {V17.8H, V18.8H, V19.8H, V20.8H}, [x2], #0x40 + ld4 {V21.8H, V22.8H, V23.8H, V24.8H}, [x2], #0x40 sub x0, x0, #0x80 - add v1.8h, v1.8h, v9.8h - add v2.8h, v2.8h, v10.8h - add v3.8h, v3.8h, v11.8h - add v4.8h, v4.8h, v12.8h - add v5.8h, v5.8h, v13.8h - add v6.8h, v6.8h, v14.8h - add v7.8h, v7.8h, v15.8h - add v8.8h, v8.8h, v16.8h - add v1.8h, v1.8h, v17.8h - add v2.8h, v2.8h, v18.8h - add v3.8h, v3.8h, v19.8h - add v4.8h, v4.8h, v20.8h - add v5.8h, v5.8h, v21.8h - add v6.8h, v6.8h, v22.8h - add v7.8h, v7.8h, v23.8h - add v8.8h, v8.8h, v24.8h - sqdmulh v25.8h, v1.8h, v0.h[2] - sqdmulh v26.8h, v2.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v1.8h, v25.8h, v0.h[0] - mls v2.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v3.8h, v0.h[2] - sqdmulh v26.8h, v4.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v3.8h, v25.8h, v0.h[0] - mls v4.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v5.8h, v0.h[2] - sqdmulh v26.8h, v6.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v5.8h, v25.8h, v0.h[0] - mls v6.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v7.8h, v0.h[2] - sqdmulh v26.8h, v8.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v7.8h, v25.8h, v0.h[0] - mls v8.8h, v26.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 - ld4 {v17.8h, v18.8h, v19.8h, v20.8h}, [x2], #0x40 - ld4 {v21.8h, v22.8h, v23.8h, v24.8h}, [x2], #0x40 + add V1.8H, V1.8H, V9.8H + add V2.8H, V2.8H, V10.8H + add V3.8H, V3.8H, V11.8H + add V4.8H, V4.8H, V12.8H + add V5.8H, V5.8H, V13.8H + add V6.8H, V6.8H, V14.8H + add V7.8H, V7.8H, V15.8H + add V8.8H, V8.8H, V16.8H + add V1.8H, V1.8H, V17.8H + add V2.8H, V2.8H, V18.8H + add V3.8H, V3.8H, V19.8H + add V4.8H, V4.8H, V20.8H + add V5.8H, V5.8H, V21.8H + add V6.8H, V6.8H, V22.8H + add V7.8H, V7.8H, V23.8H + add V8.8H, V8.8H, V24.8H + sqdmulh V25.8H, V1.8H, V0.H[2] + sqdmulh V26.8H, V2.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V1.8H, V25.8H, V0.H[0] + mls V2.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V3.8H, V0.H[2] + sqdmulh V26.8H, V4.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V3.8H, V25.8H, V0.H[0] + mls V4.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V5.8H, V0.H[2] + sqdmulh V26.8H, V6.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V5.8H, V25.8H, V0.H[0] + mls V6.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V7.8H, V0.H[2] + sqdmulh V26.8H, V8.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V7.8H, V25.8H, V0.H[0] + mls V8.8H, V26.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 + ld4 {V17.8H, V18.8H, V19.8H, V20.8H}, [x2], #0x40 + ld4 {V21.8H, V22.8H, V23.8H, V24.8H}, [x2], #0x40 sub x0, x0, #0x80 - add v1.8h, v1.8h, v9.8h - add v2.8h, v2.8h, v10.8h - add v3.8h, v3.8h, v11.8h - add v4.8h, v4.8h, v12.8h - add v5.8h, v5.8h, v13.8h - add v6.8h, v6.8h, v14.8h - add v7.8h, v7.8h, v15.8h - add v8.8h, v8.8h, v16.8h - add v1.8h, v1.8h, v17.8h - add v2.8h, v2.8h, v18.8h - add v3.8h, v3.8h, v19.8h - add v4.8h, v4.8h, v20.8h - add v5.8h, v5.8h, v21.8h - add v6.8h, v6.8h, v22.8h - add v7.8h, v7.8h, v23.8h - add v8.8h, v8.8h, v24.8h - sqdmulh v25.8h, v1.8h, v0.h[2] - sqdmulh v26.8h, v2.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v1.8h, v25.8h, v0.h[0] - mls v2.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v3.8h, v0.h[2] - sqdmulh v26.8h, v4.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v3.8h, v25.8h, v0.h[0] - mls v4.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v5.8h, v0.h[2] - sqdmulh v26.8h, v6.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v5.8h, v25.8h, v0.h[0] - mls v6.8h, v26.8h, v0.h[0] - sqdmulh v25.8h, v7.8h, v0.h[2] - sqdmulh v26.8h, v8.8h, v0.h[2] - sshr v25.8h, v25.8h, #11 - sshr v26.8h, v26.8h, #11 - mls v7.8h, v25.8h, v0.h[0] - mls v8.8h, v26.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + add V1.8H, V1.8H, V9.8H + add V2.8H, V2.8H, V10.8H + add V3.8H, V3.8H, V11.8H + add V4.8H, V4.8H, V12.8H + add V5.8H, V5.8H, V13.8H + add V6.8H, V6.8H, V14.8H + add V7.8H, V7.8H, V15.8H + add V8.8H, V8.8H, V16.8H + add V1.8H, V1.8H, V17.8H + add V2.8H, V2.8H, V18.8H + add V3.8H, V3.8H, V19.8H + add V4.8H, V4.8H, V20.8H + add V5.8H, V5.8H, V21.8H + add V6.8H, V6.8H, V22.8H + add V7.8H, V7.8H, V23.8H + add V8.8H, V8.8H, V24.8H + sqdmulh V25.8H, V1.8H, V0.H[2] + sqdmulh V26.8H, V2.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V1.8H, V25.8H, V0.H[0] + mls V2.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V3.8H, V0.H[2] + sqdmulh V26.8H, V4.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V3.8H, V25.8H, V0.H[0] + mls V4.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V5.8H, V0.H[2] + sqdmulh V26.8H, V6.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V5.8H, V25.8H, V0.H[0] + mls V6.8H, V26.8H, V0.H[0] + sqdmulh V25.8H, V7.8H, V0.H[2] + sqdmulh V26.8H, V8.8H, V0.H[2] + sshr V25.8H, V25.8H, #11 + sshr V26.8H, V26.8H, #11 + mls V7.8H, V25.8H, V0.H[0] + mls V8.8H, V26.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -7310,173 +7310,173 @@ mlkem_add3_reduce PROC mlkem_rsub_reduce PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x2, L_mlkem_aarch64_consts add x2, x2, L_mlkem_aarch64_consts - ldr q0, [x2] - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 + ldr Q0, [x2] + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 sub x0, x0, #0x80 - sub v1.8h, v9.8h, v1.8h - sub v2.8h, v10.8h, v2.8h - sub v3.8h, v11.8h, v3.8h - sub v4.8h, v12.8h, v4.8h - sub v5.8h, v13.8h, v5.8h - sub v6.8h, v14.8h, v6.8h - sub v7.8h, v15.8h, v7.8h - sub v8.8h, v16.8h, v8.8h - sqdmulh v17.8h, v1.8h, v0.h[2] - sqdmulh v18.8h, v2.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v1.8h, v17.8h, v0.h[0] - mls v2.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v3.8h, v0.h[2] - sqdmulh v18.8h, v4.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v3.8h, v17.8h, v0.h[0] - mls v4.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v5.8h, v0.h[2] - sqdmulh v18.8h, v6.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v5.8h, v17.8h, v0.h[0] - mls v6.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v7.8h, v0.h[2] - sqdmulh v18.8h, v8.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v7.8h, v17.8h, v0.h[0] - mls v8.8h, v18.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 + sub V1.8H, V9.8H, V1.8H + sub V2.8H, V10.8H, V2.8H + sub V3.8H, V11.8H, V3.8H + sub V4.8H, V12.8H, V4.8H + sub V5.8H, V13.8H, V5.8H + sub V6.8H, V14.8H, V6.8H + sub V7.8H, V15.8H, V7.8H + sub V8.8H, V16.8H, V8.8H + sqdmulh V17.8H, V1.8H, V0.H[2] + sqdmulh V18.8H, V2.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V1.8H, V17.8H, V0.H[0] + mls V2.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V3.8H, V0.H[2] + sqdmulh V18.8H, V4.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V3.8H, V17.8H, V0.H[0] + mls V4.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V5.8H, V0.H[2] + sqdmulh V18.8H, V6.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V5.8H, V17.8H, V0.H[0] + mls V6.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V7.8H, V0.H[2] + sqdmulh V18.8H, V8.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V7.8H, V17.8H, V0.H[0] + mls V8.8H, V18.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 sub x0, x0, #0x80 - sub v1.8h, v9.8h, v1.8h - sub v2.8h, v10.8h, v2.8h - sub v3.8h, v11.8h, v3.8h - sub v4.8h, v12.8h, v4.8h - sub v5.8h, v13.8h, v5.8h - sub v6.8h, v14.8h, v6.8h - sub v7.8h, v15.8h, v7.8h - sub v8.8h, v16.8h, v8.8h - sqdmulh v17.8h, v1.8h, v0.h[2] - sqdmulh v18.8h, v2.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v1.8h, v17.8h, v0.h[0] - mls v2.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v3.8h, v0.h[2] - sqdmulh v18.8h, v4.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v3.8h, v17.8h, v0.h[0] - mls v4.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v5.8h, v0.h[2] - sqdmulh v18.8h, v6.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v5.8h, v17.8h, v0.h[0] - mls v6.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v7.8h, v0.h[2] - sqdmulh v18.8h, v8.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v7.8h, v17.8h, v0.h[0] - mls v8.8h, v18.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 + sub V1.8H, V9.8H, V1.8H + sub V2.8H, V10.8H, V2.8H + sub V3.8H, V11.8H, V3.8H + sub V4.8H, V12.8H, V4.8H + sub V5.8H, V13.8H, V5.8H + sub V6.8H, V14.8H, V6.8H + sub V7.8H, V15.8H, V7.8H + sub V8.8H, V16.8H, V8.8H + sqdmulh V17.8H, V1.8H, V0.H[2] + sqdmulh V18.8H, V2.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V1.8H, V17.8H, V0.H[0] + mls V2.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V3.8H, V0.H[2] + sqdmulh V18.8H, V4.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V3.8H, V17.8H, V0.H[0] + mls V4.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V5.8H, V0.H[2] + sqdmulh V18.8H, V6.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V5.8H, V17.8H, V0.H[0] + mls V6.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V7.8H, V0.H[2] + sqdmulh V18.8H, V8.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V7.8H, V17.8H, V0.H[0] + mls V8.8H, V18.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 sub x0, x0, #0x80 - sub v1.8h, v9.8h, v1.8h - sub v2.8h, v10.8h, v2.8h - sub v3.8h, v11.8h, v3.8h - sub v4.8h, v12.8h, v4.8h - sub v5.8h, v13.8h, v5.8h - sub v6.8h, v14.8h, v6.8h - sub v7.8h, v15.8h, v7.8h - sub v8.8h, v16.8h, v8.8h - sqdmulh v17.8h, v1.8h, v0.h[2] - sqdmulh v18.8h, v2.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v1.8h, v17.8h, v0.h[0] - mls v2.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v3.8h, v0.h[2] - sqdmulh v18.8h, v4.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v3.8h, v17.8h, v0.h[0] - mls v4.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v5.8h, v0.h[2] - sqdmulh v18.8h, v6.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v5.8h, v17.8h, v0.h[0] - mls v6.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v7.8h, v0.h[2] - sqdmulh v18.8h, v8.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v7.8h, v17.8h, v0.h[0] - mls v8.8h, v18.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x1], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x1], #0x40 + sub V1.8H, V9.8H, V1.8H + sub V2.8H, V10.8H, V2.8H + sub V3.8H, V11.8H, V3.8H + sub V4.8H, V12.8H, V4.8H + sub V5.8H, V13.8H, V5.8H + sub V6.8H, V14.8H, V6.8H + sub V7.8H, V15.8H, V7.8H + sub V8.8H, V16.8H, V8.8H + sqdmulh V17.8H, V1.8H, V0.H[2] + sqdmulh V18.8H, V2.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V1.8H, V17.8H, V0.H[0] + mls V2.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V3.8H, V0.H[2] + sqdmulh V18.8H, V4.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V3.8H, V17.8H, V0.H[0] + mls V4.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V5.8H, V0.H[2] + sqdmulh V18.8H, V6.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V5.8H, V17.8H, V0.H[0] + mls V6.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V7.8H, V0.H[2] + sqdmulh V18.8H, V8.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V7.8H, V17.8H, V0.H[0] + mls V8.8H, V18.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x1], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x1], #0x40 sub x0, x0, #0x80 - sub v1.8h, v9.8h, v1.8h - sub v2.8h, v10.8h, v2.8h - sub v3.8h, v11.8h, v3.8h - sub v4.8h, v12.8h, v4.8h - sub v5.8h, v13.8h, v5.8h - sub v6.8h, v14.8h, v6.8h - sub v7.8h, v15.8h, v7.8h - sub v8.8h, v16.8h, v8.8h - sqdmulh v17.8h, v1.8h, v0.h[2] - sqdmulh v18.8h, v2.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v1.8h, v17.8h, v0.h[0] - mls v2.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v3.8h, v0.h[2] - sqdmulh v18.8h, v4.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v3.8h, v17.8h, v0.h[0] - mls v4.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v5.8h, v0.h[2] - sqdmulh v18.8h, v6.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v5.8h, v17.8h, v0.h[0] - mls v6.8h, v18.8h, v0.h[0] - sqdmulh v17.8h, v7.8h, v0.h[2] - sqdmulh v18.8h, v8.8h, v0.h[2] - sshr v17.8h, v17.8h, #11 - sshr v18.8h, v18.8h, #11 - mls v7.8h, v17.8h, v0.h[0] - mls v8.8h, v18.8h, v0.h[0] - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + sub V1.8H, V9.8H, V1.8H + sub V2.8H, V10.8H, V2.8H + sub V3.8H, V11.8H, V3.8H + sub V4.8H, V12.8H, V4.8H + sub V5.8H, V13.8H, V5.8H + sub V6.8H, V14.8H, V6.8H + sub V7.8H, V15.8H, V7.8H + sub V8.8H, V16.8H, V8.8H + sqdmulh V17.8H, V1.8H, V0.H[2] + sqdmulh V18.8H, V2.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V1.8H, V17.8H, V0.H[0] + mls V2.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V3.8H, V0.H[2] + sqdmulh V18.8H, V4.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V3.8H, V17.8H, V0.H[0] + mls V4.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V5.8H, V0.H[2] + sqdmulh V18.8H, V6.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V5.8H, V17.8H, V0.H[0] + mls V6.8H, V18.8H, V0.H[0] + sqdmulh V17.8H, V7.8H, V0.H[2] + sqdmulh V18.8H, V8.8H, V0.H[2] + sshr V17.8H, V17.8H, #11 + sshr V18.8H, V18.8H, #11 + mls V7.8H, V17.8H, V0.H[0] + mls V8.8H, V18.8H, V0.H[0] + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -7486,195 +7486,195 @@ mlkem_rsub_reduce PROC mlkem_to_mont PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x1, L_mlkem_aarch64_consts add x1, x1, L_mlkem_aarch64_consts - ldr q0, [x1] - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x0], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x0], #0x40 + ldr Q0, [x1] + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x0], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x0], #0x40 sub x0, x0, #0x100 - mul v17.8h, v1.8h, v0.h[4] - mul v18.8h, v2.8h, v0.h[4] - sqrdmulh v1.8h, v1.8h, v0.h[3] - sqrdmulh v2.8h, v2.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v1.8h, v1.8h, v17.8h - sub v2.8h, v2.8h, v18.8h - sshr v1.8h, v1.8h, #1 - sshr v2.8h, v2.8h, #1 - mul v17.8h, v3.8h, v0.h[4] - mul v18.8h, v4.8h, v0.h[4] - sqrdmulh v3.8h, v3.8h, v0.h[3] - sqrdmulh v4.8h, v4.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v3.8h, v3.8h, v17.8h - sub v4.8h, v4.8h, v18.8h - sshr v3.8h, v3.8h, #1 - sshr v4.8h, v4.8h, #1 - mul v17.8h, v5.8h, v0.h[4] - mul v18.8h, v6.8h, v0.h[4] - sqrdmulh v5.8h, v5.8h, v0.h[3] - sqrdmulh v6.8h, v6.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v5.8h, v5.8h, v17.8h - sub v6.8h, v6.8h, v18.8h - sshr v5.8h, v5.8h, #1 - sshr v6.8h, v6.8h, #1 - mul v17.8h, v7.8h, v0.h[4] - mul v18.8h, v8.8h, v0.h[4] - sqrdmulh v7.8h, v7.8h, v0.h[3] - sqrdmulh v8.8h, v8.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v7.8h, v7.8h, v17.8h - sub v8.8h, v8.8h, v18.8h - sshr v7.8h, v7.8h, #1 - sshr v8.8h, v8.8h, #1 - mul v17.8h, v9.8h, v0.h[4] - mul v18.8h, v10.8h, v0.h[4] - sqrdmulh v9.8h, v9.8h, v0.h[3] - sqrdmulh v10.8h, v10.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v9.8h, v9.8h, v17.8h - sub v10.8h, v10.8h, v18.8h - sshr v9.8h, v9.8h, #1 - sshr v10.8h, v10.8h, #1 - mul v17.8h, v11.8h, v0.h[4] - mul v18.8h, v12.8h, v0.h[4] - sqrdmulh v11.8h, v11.8h, v0.h[3] - sqrdmulh v12.8h, v12.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v11.8h, v11.8h, v17.8h - sub v12.8h, v12.8h, v18.8h - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - mul v17.8h, v13.8h, v0.h[4] - mul v18.8h, v14.8h, v0.h[4] - sqrdmulh v13.8h, v13.8h, v0.h[3] - sqrdmulh v14.8h, v14.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v13.8h, v13.8h, v17.8h - sub v14.8h, v14.8h, v18.8h - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - mul v17.8h, v15.8h, v0.h[4] - mul v18.8h, v16.8h, v0.h[4] - sqrdmulh v15.8h, v15.8h, v0.h[3] - sqrdmulh v16.8h, v16.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v15.8h, v15.8h, v17.8h - sub v16.8h, v16.8h, v18.8h - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - st4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x0], #0x40 - st4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x0], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x0], #0x40 + mul V17.8H, V1.8H, V0.H[4] + mul V18.8H, V2.8H, V0.H[4] + sqrdmulh V1.8H, V1.8H, V0.H[3] + sqrdmulh V2.8H, V2.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V1.8H, V1.8H, V17.8H + sub V2.8H, V2.8H, V18.8H + sshr V1.8H, V1.8H, #1 + sshr V2.8H, V2.8H, #1 + mul V17.8H, V3.8H, V0.H[4] + mul V18.8H, V4.8H, V0.H[4] + sqrdmulh V3.8H, V3.8H, V0.H[3] + sqrdmulh V4.8H, V4.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V3.8H, V3.8H, V17.8H + sub V4.8H, V4.8H, V18.8H + sshr V3.8H, V3.8H, #1 + sshr V4.8H, V4.8H, #1 + mul V17.8H, V5.8H, V0.H[4] + mul V18.8H, V6.8H, V0.H[4] + sqrdmulh V5.8H, V5.8H, V0.H[3] + sqrdmulh V6.8H, V6.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V5.8H, V5.8H, V17.8H + sub V6.8H, V6.8H, V18.8H + sshr V5.8H, V5.8H, #1 + sshr V6.8H, V6.8H, #1 + mul V17.8H, V7.8H, V0.H[4] + mul V18.8H, V8.8H, V0.H[4] + sqrdmulh V7.8H, V7.8H, V0.H[3] + sqrdmulh V8.8H, V8.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V7.8H, V7.8H, V17.8H + sub V8.8H, V8.8H, V18.8H + sshr V7.8H, V7.8H, #1 + sshr V8.8H, V8.8H, #1 + mul V17.8H, V9.8H, V0.H[4] + mul V18.8H, V10.8H, V0.H[4] + sqrdmulh V9.8H, V9.8H, V0.H[3] + sqrdmulh V10.8H, V10.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V9.8H, V9.8H, V17.8H + sub V10.8H, V10.8H, V18.8H + sshr V9.8H, V9.8H, #1 + sshr V10.8H, V10.8H, #1 + mul V17.8H, V11.8H, V0.H[4] + mul V18.8H, V12.8H, V0.H[4] + sqrdmulh V11.8H, V11.8H, V0.H[3] + sqrdmulh V12.8H, V12.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V11.8H, V11.8H, V17.8H + sub V12.8H, V12.8H, V18.8H + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + mul V17.8H, V13.8H, V0.H[4] + mul V18.8H, V14.8H, V0.H[4] + sqrdmulh V13.8H, V13.8H, V0.H[3] + sqrdmulh V14.8H, V14.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V13.8H, V13.8H, V17.8H + sub V14.8H, V14.8H, V18.8H + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + mul V17.8H, V15.8H, V0.H[4] + mul V18.8H, V16.8H, V0.H[4] + sqrdmulh V15.8H, V15.8H, V0.H[3] + sqrdmulh V16.8H, V16.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V15.8H, V15.8H, V17.8H + sub V16.8H, V16.8H, V18.8H + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + st4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x0], #0x40 + st4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x0], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x0], #0x40 sub x0, x0, #0x100 - mul v17.8h, v1.8h, v0.h[4] - mul v18.8h, v2.8h, v0.h[4] - sqrdmulh v1.8h, v1.8h, v0.h[3] - sqrdmulh v2.8h, v2.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v1.8h, v1.8h, v17.8h - sub v2.8h, v2.8h, v18.8h - sshr v1.8h, v1.8h, #1 - sshr v2.8h, v2.8h, #1 - mul v17.8h, v3.8h, v0.h[4] - mul v18.8h, v4.8h, v0.h[4] - sqrdmulh v3.8h, v3.8h, v0.h[3] - sqrdmulh v4.8h, v4.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v3.8h, v3.8h, v17.8h - sub v4.8h, v4.8h, v18.8h - sshr v3.8h, v3.8h, #1 - sshr v4.8h, v4.8h, #1 - mul v17.8h, v5.8h, v0.h[4] - mul v18.8h, v6.8h, v0.h[4] - sqrdmulh v5.8h, v5.8h, v0.h[3] - sqrdmulh v6.8h, v6.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v5.8h, v5.8h, v17.8h - sub v6.8h, v6.8h, v18.8h - sshr v5.8h, v5.8h, #1 - sshr v6.8h, v6.8h, #1 - mul v17.8h, v7.8h, v0.h[4] - mul v18.8h, v8.8h, v0.h[4] - sqrdmulh v7.8h, v7.8h, v0.h[3] - sqrdmulh v8.8h, v8.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v7.8h, v7.8h, v17.8h - sub v8.8h, v8.8h, v18.8h - sshr v7.8h, v7.8h, #1 - sshr v8.8h, v8.8h, #1 - mul v17.8h, v9.8h, v0.h[4] - mul v18.8h, v10.8h, v0.h[4] - sqrdmulh v9.8h, v9.8h, v0.h[3] - sqrdmulh v10.8h, v10.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v9.8h, v9.8h, v17.8h - sub v10.8h, v10.8h, v18.8h - sshr v9.8h, v9.8h, #1 - sshr v10.8h, v10.8h, #1 - mul v17.8h, v11.8h, v0.h[4] - mul v18.8h, v12.8h, v0.h[4] - sqrdmulh v11.8h, v11.8h, v0.h[3] - sqrdmulh v12.8h, v12.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v11.8h, v11.8h, v17.8h - sub v12.8h, v12.8h, v18.8h - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - mul v17.8h, v13.8h, v0.h[4] - mul v18.8h, v14.8h, v0.h[4] - sqrdmulh v13.8h, v13.8h, v0.h[3] - sqrdmulh v14.8h, v14.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v13.8h, v13.8h, v17.8h - sub v14.8h, v14.8h, v18.8h - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - mul v17.8h, v15.8h, v0.h[4] - mul v18.8h, v16.8h, v0.h[4] - sqrdmulh v15.8h, v15.8h, v0.h[3] - sqrdmulh v16.8h, v16.8h, v0.h[3] - sqrdmulh v17.8h, v17.8h, v0.h[0] - sqrdmulh v18.8h, v18.8h, v0.h[0] - sub v15.8h, v15.8h, v17.8h - sub v16.8h, v16.8h, v18.8h - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - st4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x0], #0x40 - st4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x0], #0x40 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + mul V17.8H, V1.8H, V0.H[4] + mul V18.8H, V2.8H, V0.H[4] + sqrdmulh V1.8H, V1.8H, V0.H[3] + sqrdmulh V2.8H, V2.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V1.8H, V1.8H, V17.8H + sub V2.8H, V2.8H, V18.8H + sshr V1.8H, V1.8H, #1 + sshr V2.8H, V2.8H, #1 + mul V17.8H, V3.8H, V0.H[4] + mul V18.8H, V4.8H, V0.H[4] + sqrdmulh V3.8H, V3.8H, V0.H[3] + sqrdmulh V4.8H, V4.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V3.8H, V3.8H, V17.8H + sub V4.8H, V4.8H, V18.8H + sshr V3.8H, V3.8H, #1 + sshr V4.8H, V4.8H, #1 + mul V17.8H, V5.8H, V0.H[4] + mul V18.8H, V6.8H, V0.H[4] + sqrdmulh V5.8H, V5.8H, V0.H[3] + sqrdmulh V6.8H, V6.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V5.8H, V5.8H, V17.8H + sub V6.8H, V6.8H, V18.8H + sshr V5.8H, V5.8H, #1 + sshr V6.8H, V6.8H, #1 + mul V17.8H, V7.8H, V0.H[4] + mul V18.8H, V8.8H, V0.H[4] + sqrdmulh V7.8H, V7.8H, V0.H[3] + sqrdmulh V8.8H, V8.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V7.8H, V7.8H, V17.8H + sub V8.8H, V8.8H, V18.8H + sshr V7.8H, V7.8H, #1 + sshr V8.8H, V8.8H, #1 + mul V17.8H, V9.8H, V0.H[4] + mul V18.8H, V10.8H, V0.H[4] + sqrdmulh V9.8H, V9.8H, V0.H[3] + sqrdmulh V10.8H, V10.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V9.8H, V9.8H, V17.8H + sub V10.8H, V10.8H, V18.8H + sshr V9.8H, V9.8H, #1 + sshr V10.8H, V10.8H, #1 + mul V17.8H, V11.8H, V0.H[4] + mul V18.8H, V12.8H, V0.H[4] + sqrdmulh V11.8H, V11.8H, V0.H[3] + sqrdmulh V12.8H, V12.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V11.8H, V11.8H, V17.8H + sub V12.8H, V12.8H, V18.8H + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + mul V17.8H, V13.8H, V0.H[4] + mul V18.8H, V14.8H, V0.H[4] + sqrdmulh V13.8H, V13.8H, V0.H[3] + sqrdmulh V14.8H, V14.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V13.8H, V13.8H, V17.8H + sub V14.8H, V14.8H, V18.8H + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + mul V17.8H, V15.8H, V0.H[4] + mul V18.8H, V16.8H, V0.H[4] + sqrdmulh V15.8H, V15.8H, V0.H[3] + sqrdmulh V16.8H, V16.8H, V0.H[3] + sqrdmulh V17.8H, V17.8H, V0.H[0] + sqrdmulh V18.8H, V18.8H, V0.H[0] + sub V15.8H, V15.8H, V17.8H + sub V16.8H, V16.8H, V18.8H + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + st4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x0], #0x40 + st4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x0], #0x40 + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP @@ -7685,176 +7685,176 @@ mlkem_to_mont PROC mlkem_to_mont_sqrdmlsh PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x1, L_mlkem_aarch64_consts add x1, x1, L_mlkem_aarch64_consts - ldr q0, [x1] - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x0], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x0], #0x40 + ldr Q0, [x1] + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x0], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x0], #0x40 sub x0, x0, #0x100 - mul v17.8h, v1.8h, v0.h[4] - mul v18.8h, v2.8h, v0.h[4] - sqrdmulh v1.8h, v1.8h, v0.h[3] - sqrdmulh v2.8h, v2.8h, v0.h[3] - sqrdmlsh v1.8h, v17.8h, v0.h[0] - sqrdmlsh v2.8h, v18.8h, v0.h[0] - sshr v1.8h, v1.8h, #1 - sshr v2.8h, v2.8h, #1 - mul v17.8h, v3.8h, v0.h[4] - mul v18.8h, v4.8h, v0.h[4] - sqrdmulh v3.8h, v3.8h, v0.h[3] - sqrdmulh v4.8h, v4.8h, v0.h[3] - sqrdmlsh v3.8h, v17.8h, v0.h[0] - sqrdmlsh v4.8h, v18.8h, v0.h[0] - sshr v3.8h, v3.8h, #1 - sshr v4.8h, v4.8h, #1 - mul v17.8h, v5.8h, v0.h[4] - mul v18.8h, v6.8h, v0.h[4] - sqrdmulh v5.8h, v5.8h, v0.h[3] - sqrdmulh v6.8h, v6.8h, v0.h[3] - sqrdmlsh v5.8h, v17.8h, v0.h[0] - sqrdmlsh v6.8h, v18.8h, v0.h[0] - sshr v5.8h, v5.8h, #1 - sshr v6.8h, v6.8h, #1 - mul v17.8h, v7.8h, v0.h[4] - mul v18.8h, v8.8h, v0.h[4] - sqrdmulh v7.8h, v7.8h, v0.h[3] - sqrdmulh v8.8h, v8.8h, v0.h[3] - sqrdmlsh v7.8h, v17.8h, v0.h[0] - sqrdmlsh v8.8h, v18.8h, v0.h[0] - sshr v7.8h, v7.8h, #1 - sshr v8.8h, v8.8h, #1 - mul v17.8h, v9.8h, v0.h[4] - mul v18.8h, v10.8h, v0.h[4] - sqrdmulh v9.8h, v9.8h, v0.h[3] - sqrdmulh v10.8h, v10.8h, v0.h[3] - sqrdmlsh v9.8h, v17.8h, v0.h[0] - sqrdmlsh v10.8h, v18.8h, v0.h[0] - sshr v9.8h, v9.8h, #1 - sshr v10.8h, v10.8h, #1 - mul v17.8h, v11.8h, v0.h[4] - mul v18.8h, v12.8h, v0.h[4] - sqrdmulh v11.8h, v11.8h, v0.h[3] - sqrdmulh v12.8h, v12.8h, v0.h[3] - sqrdmlsh v11.8h, v17.8h, v0.h[0] - sqrdmlsh v12.8h, v18.8h, v0.h[0] - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - mul v17.8h, v13.8h, v0.h[4] - mul v18.8h, v14.8h, v0.h[4] - sqrdmulh v13.8h, v13.8h, v0.h[3] - sqrdmulh v14.8h, v14.8h, v0.h[3] - sqrdmlsh v13.8h, v17.8h, v0.h[0] - sqrdmlsh v14.8h, v18.8h, v0.h[0] - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - mul v17.8h, v15.8h, v0.h[4] - mul v18.8h, v16.8h, v0.h[4] - sqrdmulh v15.8h, v15.8h, v0.h[3] - sqrdmulh v16.8h, v16.8h, v0.h[3] - sqrdmlsh v15.8h, v17.8h, v0.h[0] - sqrdmlsh v16.8h, v18.8h, v0.h[0] - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - st4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x0], #0x40 - st4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x0], #0x40 - ld4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - ld4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - ld4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x0], #0x40 - ld4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x0], #0x40 + mul V17.8H, V1.8H, V0.H[4] + mul V18.8H, V2.8H, V0.H[4] + sqrdmulh V1.8H, V1.8H, V0.H[3] + sqrdmulh V2.8H, V2.8H, V0.H[3] + sqrdmlsh V1.8H, V17.8H, V0.H[0] + sqrdmlsh V2.8H, V18.8H, V0.H[0] + sshr V1.8H, V1.8H, #1 + sshr V2.8H, V2.8H, #1 + mul V17.8H, V3.8H, V0.H[4] + mul V18.8H, V4.8H, V0.H[4] + sqrdmulh V3.8H, V3.8H, V0.H[3] + sqrdmulh V4.8H, V4.8H, V0.H[3] + sqrdmlsh V3.8H, V17.8H, V0.H[0] + sqrdmlsh V4.8H, V18.8H, V0.H[0] + sshr V3.8H, V3.8H, #1 + sshr V4.8H, V4.8H, #1 + mul V17.8H, V5.8H, V0.H[4] + mul V18.8H, V6.8H, V0.H[4] + sqrdmulh V5.8H, V5.8H, V0.H[3] + sqrdmulh V6.8H, V6.8H, V0.H[3] + sqrdmlsh V5.8H, V17.8H, V0.H[0] + sqrdmlsh V6.8H, V18.8H, V0.H[0] + sshr V5.8H, V5.8H, #1 + sshr V6.8H, V6.8H, #1 + mul V17.8H, V7.8H, V0.H[4] + mul V18.8H, V8.8H, V0.H[4] + sqrdmulh V7.8H, V7.8H, V0.H[3] + sqrdmulh V8.8H, V8.8H, V0.H[3] + sqrdmlsh V7.8H, V17.8H, V0.H[0] + sqrdmlsh V8.8H, V18.8H, V0.H[0] + sshr V7.8H, V7.8H, #1 + sshr V8.8H, V8.8H, #1 + mul V17.8H, V9.8H, V0.H[4] + mul V18.8H, V10.8H, V0.H[4] + sqrdmulh V9.8H, V9.8H, V0.H[3] + sqrdmulh V10.8H, V10.8H, V0.H[3] + sqrdmlsh V9.8H, V17.8H, V0.H[0] + sqrdmlsh V10.8H, V18.8H, V0.H[0] + sshr V9.8H, V9.8H, #1 + sshr V10.8H, V10.8H, #1 + mul V17.8H, V11.8H, V0.H[4] + mul V18.8H, V12.8H, V0.H[4] + sqrdmulh V11.8H, V11.8H, V0.H[3] + sqrdmulh V12.8H, V12.8H, V0.H[3] + sqrdmlsh V11.8H, V17.8H, V0.H[0] + sqrdmlsh V12.8H, V18.8H, V0.H[0] + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + mul V17.8H, V13.8H, V0.H[4] + mul V18.8H, V14.8H, V0.H[4] + sqrdmulh V13.8H, V13.8H, V0.H[3] + sqrdmulh V14.8H, V14.8H, V0.H[3] + sqrdmlsh V13.8H, V17.8H, V0.H[0] + sqrdmlsh V14.8H, V18.8H, V0.H[0] + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + mul V17.8H, V15.8H, V0.H[4] + mul V18.8H, V16.8H, V0.H[4] + sqrdmulh V15.8H, V15.8H, V0.H[3] + sqrdmulh V16.8H, V16.8H, V0.H[3] + sqrdmlsh V15.8H, V17.8H, V0.H[0] + sqrdmlsh V16.8H, V18.8H, V0.H[0] + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + st4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x0], #0x40 + st4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x0], #0x40 + ld4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + ld4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + ld4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x0], #0x40 + ld4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x0], #0x40 sub x0, x0, #0x100 - mul v17.8h, v1.8h, v0.h[4] - mul v18.8h, v2.8h, v0.h[4] - sqrdmulh v1.8h, v1.8h, v0.h[3] - sqrdmulh v2.8h, v2.8h, v0.h[3] - sqrdmlsh v1.8h, v17.8h, v0.h[0] - sqrdmlsh v2.8h, v18.8h, v0.h[0] - sshr v1.8h, v1.8h, #1 - sshr v2.8h, v2.8h, #1 - mul v17.8h, v3.8h, v0.h[4] - mul v18.8h, v4.8h, v0.h[4] - sqrdmulh v3.8h, v3.8h, v0.h[3] - sqrdmulh v4.8h, v4.8h, v0.h[3] - sqrdmlsh v3.8h, v17.8h, v0.h[0] - sqrdmlsh v4.8h, v18.8h, v0.h[0] - sshr v3.8h, v3.8h, #1 - sshr v4.8h, v4.8h, #1 - mul v17.8h, v5.8h, v0.h[4] - mul v18.8h, v6.8h, v0.h[4] - sqrdmulh v5.8h, v5.8h, v0.h[3] - sqrdmulh v6.8h, v6.8h, v0.h[3] - sqrdmlsh v5.8h, v17.8h, v0.h[0] - sqrdmlsh v6.8h, v18.8h, v0.h[0] - sshr v5.8h, v5.8h, #1 - sshr v6.8h, v6.8h, #1 - mul v17.8h, v7.8h, v0.h[4] - mul v18.8h, v8.8h, v0.h[4] - sqrdmulh v7.8h, v7.8h, v0.h[3] - sqrdmulh v8.8h, v8.8h, v0.h[3] - sqrdmlsh v7.8h, v17.8h, v0.h[0] - sqrdmlsh v8.8h, v18.8h, v0.h[0] - sshr v7.8h, v7.8h, #1 - sshr v8.8h, v8.8h, #1 - mul v17.8h, v9.8h, v0.h[4] - mul v18.8h, v10.8h, v0.h[4] - sqrdmulh v9.8h, v9.8h, v0.h[3] - sqrdmulh v10.8h, v10.8h, v0.h[3] - sqrdmlsh v9.8h, v17.8h, v0.h[0] - sqrdmlsh v10.8h, v18.8h, v0.h[0] - sshr v9.8h, v9.8h, #1 - sshr v10.8h, v10.8h, #1 - mul v17.8h, v11.8h, v0.h[4] - mul v18.8h, v12.8h, v0.h[4] - sqrdmulh v11.8h, v11.8h, v0.h[3] - sqrdmulh v12.8h, v12.8h, v0.h[3] - sqrdmlsh v11.8h, v17.8h, v0.h[0] - sqrdmlsh v12.8h, v18.8h, v0.h[0] - sshr v11.8h, v11.8h, #1 - sshr v12.8h, v12.8h, #1 - mul v17.8h, v13.8h, v0.h[4] - mul v18.8h, v14.8h, v0.h[4] - sqrdmulh v13.8h, v13.8h, v0.h[3] - sqrdmulh v14.8h, v14.8h, v0.h[3] - sqrdmlsh v13.8h, v17.8h, v0.h[0] - sqrdmlsh v14.8h, v18.8h, v0.h[0] - sshr v13.8h, v13.8h, #1 - sshr v14.8h, v14.8h, #1 - mul v17.8h, v15.8h, v0.h[4] - mul v18.8h, v16.8h, v0.h[4] - sqrdmulh v15.8h, v15.8h, v0.h[3] - sqrdmulh v16.8h, v16.8h, v0.h[3] - sqrdmlsh v15.8h, v17.8h, v0.h[0] - sqrdmlsh v16.8h, v18.8h, v0.h[0] - sshr v15.8h, v15.8h, #1 - sshr v16.8h, v16.8h, #1 - st4 {v1.8h, v2.8h, v3.8h, v4.8h}, [x0], #0x40 - st4 {v5.8h, v6.8h, v7.8h, v8.8h}, [x0], #0x40 - st4 {v9.8h, v10.8h, v11.8h, v12.8h}, [x0], #0x40 - st4 {v13.8h, v14.8h, v15.8h, v16.8h}, [x0], #0x40 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + mul V17.8H, V1.8H, V0.H[4] + mul V18.8H, V2.8H, V0.H[4] + sqrdmulh V1.8H, V1.8H, V0.H[3] + sqrdmulh V2.8H, V2.8H, V0.H[3] + sqrdmlsh V1.8H, V17.8H, V0.H[0] + sqrdmlsh V2.8H, V18.8H, V0.H[0] + sshr V1.8H, V1.8H, #1 + sshr V2.8H, V2.8H, #1 + mul V17.8H, V3.8H, V0.H[4] + mul V18.8H, V4.8H, V0.H[4] + sqrdmulh V3.8H, V3.8H, V0.H[3] + sqrdmulh V4.8H, V4.8H, V0.H[3] + sqrdmlsh V3.8H, V17.8H, V0.H[0] + sqrdmlsh V4.8H, V18.8H, V0.H[0] + sshr V3.8H, V3.8H, #1 + sshr V4.8H, V4.8H, #1 + mul V17.8H, V5.8H, V0.H[4] + mul V18.8H, V6.8H, V0.H[4] + sqrdmulh V5.8H, V5.8H, V0.H[3] + sqrdmulh V6.8H, V6.8H, V0.H[3] + sqrdmlsh V5.8H, V17.8H, V0.H[0] + sqrdmlsh V6.8H, V18.8H, V0.H[0] + sshr V5.8H, V5.8H, #1 + sshr V6.8H, V6.8H, #1 + mul V17.8H, V7.8H, V0.H[4] + mul V18.8H, V8.8H, V0.H[4] + sqrdmulh V7.8H, V7.8H, V0.H[3] + sqrdmulh V8.8H, V8.8H, V0.H[3] + sqrdmlsh V7.8H, V17.8H, V0.H[0] + sqrdmlsh V8.8H, V18.8H, V0.H[0] + sshr V7.8H, V7.8H, #1 + sshr V8.8H, V8.8H, #1 + mul V17.8H, V9.8H, V0.H[4] + mul V18.8H, V10.8H, V0.H[4] + sqrdmulh V9.8H, V9.8H, V0.H[3] + sqrdmulh V10.8H, V10.8H, V0.H[3] + sqrdmlsh V9.8H, V17.8H, V0.H[0] + sqrdmlsh V10.8H, V18.8H, V0.H[0] + sshr V9.8H, V9.8H, #1 + sshr V10.8H, V10.8H, #1 + mul V17.8H, V11.8H, V0.H[4] + mul V18.8H, V12.8H, V0.H[4] + sqrdmulh V11.8H, V11.8H, V0.H[3] + sqrdmulh V12.8H, V12.8H, V0.H[3] + sqrdmlsh V11.8H, V17.8H, V0.H[0] + sqrdmlsh V12.8H, V18.8H, V0.H[0] + sshr V11.8H, V11.8H, #1 + sshr V12.8H, V12.8H, #1 + mul V17.8H, V13.8H, V0.H[4] + mul V18.8H, V14.8H, V0.H[4] + sqrdmulh V13.8H, V13.8H, V0.H[3] + sqrdmulh V14.8H, V14.8H, V0.H[3] + sqrdmlsh V13.8H, V17.8H, V0.H[0] + sqrdmlsh V14.8H, V18.8H, V0.H[0] + sshr V13.8H, V13.8H, #1 + sshr V14.8H, V14.8H, #1 + mul V17.8H, V15.8H, V0.H[4] + mul V18.8H, V16.8H, V0.H[4] + sqrdmulh V15.8H, V15.8H, V0.H[3] + sqrdmulh V16.8H, V16.8H, V0.H[3] + sqrdmlsh V15.8H, V17.8H, V0.H[0] + sqrdmlsh V16.8H, V18.8H, V0.H[0] + sshr V15.8H, V15.8H, #1 + sshr V16.8H, V16.8H, #1 + st4 {V1.8H, V2.8H, V3.8H, V4.8H}, [x0], #0x40 + st4 {V5.8H, V6.8H, V7.8H, V8.8H}, [x0], #0x40 + st4 {V9.8H, V10.8H, V11.8H, V12.8H}, [x0], #0x40 + st4 {V13.8H, V14.8H, V15.8H, V16.8H}, [x0], #0x40 + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP ENDIF - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_to_msg_low DCW 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_to_msg_high DCW 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c0 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_to_msg_bits DCW 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080 @@ -7864,231 +7864,231 @@ L_mlkem_to_msg_bits mlkem_to_msg_neon PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x2, L_mlkem_to_msg_low add x2, x2, L_mlkem_to_msg_low adrp x3, L_mlkem_to_msg_high add x3, x3, L_mlkem_to_msg_high adrp x4, L_mlkem_to_msg_bits add x4, x4, L_mlkem_to_msg_bits - ldr q0, [x2] - ldr q1, [x3] - ldr q26, [x4] - ld1 {v2.8h, v3.8h, v4.8h, v5.8h}, [x1], #0x40 - ld1 {v6.8h, v7.8h, v8.8h, v9.8h}, [x1], #0x40 - cmge v10.8h, v2.8h, v0.8h - cmge v18.8h, v1.8h, v2.8h - cmge v11.8h, v3.8h, v0.8h - cmge v19.8h, v1.8h, v3.8h - cmge v12.8h, v4.8h, v0.8h - cmge v20.8h, v1.8h, v4.8h - cmge v13.8h, v5.8h, v0.8h - cmge v21.8h, v1.8h, v5.8h - cmge v14.8h, v6.8h, v0.8h - cmge v22.8h, v1.8h, v6.8h - cmge v15.8h, v7.8h, v0.8h - cmge v23.8h, v1.8h, v7.8h - cmge v16.8h, v8.8h, v0.8h - cmge v24.8h, v1.8h, v8.8h - cmge v17.8h, v9.8h, v0.8h - cmge v25.8h, v1.8h, v9.8h - and v18.16b, v18.16b, v10.16b - and v19.16b, v19.16b, v11.16b - and v20.16b, v20.16b, v12.16b - and v21.16b, v21.16b, v13.16b - and v22.16b, v22.16b, v14.16b - and v23.16b, v23.16b, v15.16b - and v24.16b, v24.16b, v16.16b - and v25.16b, v25.16b, v17.16b - and v18.16b, v18.16b, v26.16b - and v19.16b, v19.16b, v26.16b - and v20.16b, v20.16b, v26.16b - and v21.16b, v21.16b, v26.16b - and v22.16b, v22.16b, v26.16b - and v23.16b, v23.16b, v26.16b - and v24.16b, v24.16b, v26.16b - and v25.16b, v25.16b, v26.16b - addv h18, v18.8h - addv h19, v19.8h - addv h20, v20.8h - addv h21, v21.8h - addv h22, v22.8h - addv h23, v23.8h - addv h24, v24.8h - addv h25, v25.8h - ins v18.b[1], v19.b[0] - ins v18.b[2], v20.b[0] - ins v18.b[3], v21.b[0] - ins v18.b[4], v22.b[0] - ins v18.b[5], v23.b[0] - ins v18.b[6], v24.b[0] - ins v18.b[7], v25.b[0] - st1 {v18.8b}, [x0], #8 - ld1 {v2.8h, v3.8h, v4.8h, v5.8h}, [x1], #0x40 - ld1 {v6.8h, v7.8h, v8.8h, v9.8h}, [x1], #0x40 - cmge v10.8h, v2.8h, v0.8h - cmge v18.8h, v1.8h, v2.8h - cmge v11.8h, v3.8h, v0.8h - cmge v19.8h, v1.8h, v3.8h - cmge v12.8h, v4.8h, v0.8h - cmge v20.8h, v1.8h, v4.8h - cmge v13.8h, v5.8h, v0.8h - cmge v21.8h, v1.8h, v5.8h - cmge v14.8h, v6.8h, v0.8h - cmge v22.8h, v1.8h, v6.8h - cmge v15.8h, v7.8h, v0.8h - cmge v23.8h, v1.8h, v7.8h - cmge v16.8h, v8.8h, v0.8h - cmge v24.8h, v1.8h, v8.8h - cmge v17.8h, v9.8h, v0.8h - cmge v25.8h, v1.8h, v9.8h - and v18.16b, v18.16b, v10.16b - and v19.16b, v19.16b, v11.16b - and v20.16b, v20.16b, v12.16b - and v21.16b, v21.16b, v13.16b - and v22.16b, v22.16b, v14.16b - and v23.16b, v23.16b, v15.16b - and v24.16b, v24.16b, v16.16b - and v25.16b, v25.16b, v17.16b - and v18.16b, v18.16b, v26.16b - and v19.16b, v19.16b, v26.16b - and v20.16b, v20.16b, v26.16b - and v21.16b, v21.16b, v26.16b - and v22.16b, v22.16b, v26.16b - and v23.16b, v23.16b, v26.16b - and v24.16b, v24.16b, v26.16b - and v25.16b, v25.16b, v26.16b - addv h18, v18.8h - addv h19, v19.8h - addv h20, v20.8h - addv h21, v21.8h - addv h22, v22.8h - addv h23, v23.8h - addv h24, v24.8h - addv h25, v25.8h - ins v18.b[1], v19.b[0] - ins v18.b[2], v20.b[0] - ins v18.b[3], v21.b[0] - ins v18.b[4], v22.b[0] - ins v18.b[5], v23.b[0] - ins v18.b[6], v24.b[0] - ins v18.b[7], v25.b[0] - st1 {v18.8b}, [x0], #8 - ld1 {v2.8h, v3.8h, v4.8h, v5.8h}, [x1], #0x40 - ld1 {v6.8h, v7.8h, v8.8h, v9.8h}, [x1], #0x40 - cmge v10.8h, v2.8h, v0.8h - cmge v18.8h, v1.8h, v2.8h - cmge v11.8h, v3.8h, v0.8h - cmge v19.8h, v1.8h, v3.8h - cmge v12.8h, v4.8h, v0.8h - cmge v20.8h, v1.8h, v4.8h - cmge v13.8h, v5.8h, v0.8h - cmge v21.8h, v1.8h, v5.8h - cmge v14.8h, v6.8h, v0.8h - cmge v22.8h, v1.8h, v6.8h - cmge v15.8h, v7.8h, v0.8h - cmge v23.8h, v1.8h, v7.8h - cmge v16.8h, v8.8h, v0.8h - cmge v24.8h, v1.8h, v8.8h - cmge v17.8h, v9.8h, v0.8h - cmge v25.8h, v1.8h, v9.8h - and v18.16b, v18.16b, v10.16b - and v19.16b, v19.16b, v11.16b - and v20.16b, v20.16b, v12.16b - and v21.16b, v21.16b, v13.16b - and v22.16b, v22.16b, v14.16b - and v23.16b, v23.16b, v15.16b - and v24.16b, v24.16b, v16.16b - and v25.16b, v25.16b, v17.16b - and v18.16b, v18.16b, v26.16b - and v19.16b, v19.16b, v26.16b - and v20.16b, v20.16b, v26.16b - and v21.16b, v21.16b, v26.16b - and v22.16b, v22.16b, v26.16b - and v23.16b, v23.16b, v26.16b - and v24.16b, v24.16b, v26.16b - and v25.16b, v25.16b, v26.16b - addv h18, v18.8h - addv h19, v19.8h - addv h20, v20.8h - addv h21, v21.8h - addv h22, v22.8h - addv h23, v23.8h - addv h24, v24.8h - addv h25, v25.8h - ins v18.b[1], v19.b[0] - ins v18.b[2], v20.b[0] - ins v18.b[3], v21.b[0] - ins v18.b[4], v22.b[0] - ins v18.b[5], v23.b[0] - ins v18.b[6], v24.b[0] - ins v18.b[7], v25.b[0] - st1 {v18.8b}, [x0], #8 - ld1 {v2.8h, v3.8h, v4.8h, v5.8h}, [x1], #0x40 - ld1 {v6.8h, v7.8h, v8.8h, v9.8h}, [x1], #0x40 - cmge v10.8h, v2.8h, v0.8h - cmge v18.8h, v1.8h, v2.8h - cmge v11.8h, v3.8h, v0.8h - cmge v19.8h, v1.8h, v3.8h - cmge v12.8h, v4.8h, v0.8h - cmge v20.8h, v1.8h, v4.8h - cmge v13.8h, v5.8h, v0.8h - cmge v21.8h, v1.8h, v5.8h - cmge v14.8h, v6.8h, v0.8h - cmge v22.8h, v1.8h, v6.8h - cmge v15.8h, v7.8h, v0.8h - cmge v23.8h, v1.8h, v7.8h - cmge v16.8h, v8.8h, v0.8h - cmge v24.8h, v1.8h, v8.8h - cmge v17.8h, v9.8h, v0.8h - cmge v25.8h, v1.8h, v9.8h - and v18.16b, v18.16b, v10.16b - and v19.16b, v19.16b, v11.16b - and v20.16b, v20.16b, v12.16b - and v21.16b, v21.16b, v13.16b - and v22.16b, v22.16b, v14.16b - and v23.16b, v23.16b, v15.16b - and v24.16b, v24.16b, v16.16b - and v25.16b, v25.16b, v17.16b - and v18.16b, v18.16b, v26.16b - and v19.16b, v19.16b, v26.16b - and v20.16b, v20.16b, v26.16b - and v21.16b, v21.16b, v26.16b - and v22.16b, v22.16b, v26.16b - and v23.16b, v23.16b, v26.16b - and v24.16b, v24.16b, v26.16b - and v25.16b, v25.16b, v26.16b - addv h18, v18.8h - addv h19, v19.8h - addv h20, v20.8h - addv h21, v21.8h - addv h22, v22.8h - addv h23, v23.8h - addv h24, v24.8h - addv h25, v25.8h - ins v18.b[1], v19.b[0] - ins v18.b[2], v20.b[0] - ins v18.b[3], v21.b[0] - ins v18.b[4], v22.b[0] - ins v18.b[5], v23.b[0] - ins v18.b[6], v24.b[0] - ins v18.b[7], v25.b[0] - st1 {v18.8b}, [x0], #8 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + ldr Q0, [x2] + ldr Q1, [x3] + ldr Q26, [x4] + ld1 {V2.8H, V3.8H, V4.8H, V5.8H}, [x1], #0x40 + ld1 {V6.8H, V7.8H, V8.8H, V9.8H}, [x1], #0x40 + cmge V10.8H, V2.8H, V0.8H + cmge V18.8H, V1.8H, V2.8H + cmge V11.8H, V3.8H, V0.8H + cmge V19.8H, V1.8H, V3.8H + cmge V12.8H, V4.8H, V0.8H + cmge V20.8H, V1.8H, V4.8H + cmge V13.8H, V5.8H, V0.8H + cmge V21.8H, V1.8H, V5.8H + cmge V14.8H, V6.8H, V0.8H + cmge V22.8H, V1.8H, V6.8H + cmge V15.8H, V7.8H, V0.8H + cmge V23.8H, V1.8H, V7.8H + cmge V16.8H, V8.8H, V0.8H + cmge V24.8H, V1.8H, V8.8H + cmge V17.8H, V9.8H, V0.8H + cmge V25.8H, V1.8H, V9.8H + and V18.16B, V18.16B, V10.16B + and V19.16B, V19.16B, V11.16B + and V20.16B, V20.16B, V12.16B + and V21.16B, V21.16B, V13.16B + and V22.16B, V22.16B, V14.16B + and V23.16B, V23.16B, V15.16B + and V24.16B, V24.16B, V16.16B + and V25.16B, V25.16B, V17.16B + and V18.16B, V18.16B, V26.16B + and V19.16B, V19.16B, V26.16B + and V20.16B, V20.16B, V26.16B + and V21.16B, V21.16B, V26.16B + and V22.16B, V22.16B, V26.16B + and V23.16B, V23.16B, V26.16B + and V24.16B, V24.16B, V26.16B + and V25.16B, V25.16B, V26.16B + addv H18, V18.8H + addv H19, V19.8H + addv H20, V20.8H + addv H21, V21.8H + addv H22, V22.8H + addv H23, V23.8H + addv H24, V24.8H + addv H25, V25.8H + ins V18.B[1], V19.B[0] + ins V18.B[2], V20.B[0] + ins V18.B[3], V21.B[0] + ins V18.B[4], V22.B[0] + ins V18.B[5], V23.B[0] + ins V18.B[6], V24.B[0] + ins V18.B[7], V25.B[0] + st1 {V18.8B}, [x0], #8 + ld1 {V2.8H, V3.8H, V4.8H, V5.8H}, [x1], #0x40 + ld1 {V6.8H, V7.8H, V8.8H, V9.8H}, [x1], #0x40 + cmge V10.8H, V2.8H, V0.8H + cmge V18.8H, V1.8H, V2.8H + cmge V11.8H, V3.8H, V0.8H + cmge V19.8H, V1.8H, V3.8H + cmge V12.8H, V4.8H, V0.8H + cmge V20.8H, V1.8H, V4.8H + cmge V13.8H, V5.8H, V0.8H + cmge V21.8H, V1.8H, V5.8H + cmge V14.8H, V6.8H, V0.8H + cmge V22.8H, V1.8H, V6.8H + cmge V15.8H, V7.8H, V0.8H + cmge V23.8H, V1.8H, V7.8H + cmge V16.8H, V8.8H, V0.8H + cmge V24.8H, V1.8H, V8.8H + cmge V17.8H, V9.8H, V0.8H + cmge V25.8H, V1.8H, V9.8H + and V18.16B, V18.16B, V10.16B + and V19.16B, V19.16B, V11.16B + and V20.16B, V20.16B, V12.16B + and V21.16B, V21.16B, V13.16B + and V22.16B, V22.16B, V14.16B + and V23.16B, V23.16B, V15.16B + and V24.16B, V24.16B, V16.16B + and V25.16B, V25.16B, V17.16B + and V18.16B, V18.16B, V26.16B + and V19.16B, V19.16B, V26.16B + and V20.16B, V20.16B, V26.16B + and V21.16B, V21.16B, V26.16B + and V22.16B, V22.16B, V26.16B + and V23.16B, V23.16B, V26.16B + and V24.16B, V24.16B, V26.16B + and V25.16B, V25.16B, V26.16B + addv H18, V18.8H + addv H19, V19.8H + addv H20, V20.8H + addv H21, V21.8H + addv H22, V22.8H + addv H23, V23.8H + addv H24, V24.8H + addv H25, V25.8H + ins V18.B[1], V19.B[0] + ins V18.B[2], V20.B[0] + ins V18.B[3], V21.B[0] + ins V18.B[4], V22.B[0] + ins V18.B[5], V23.B[0] + ins V18.B[6], V24.B[0] + ins V18.B[7], V25.B[0] + st1 {V18.8B}, [x0], #8 + ld1 {V2.8H, V3.8H, V4.8H, V5.8H}, [x1], #0x40 + ld1 {V6.8H, V7.8H, V8.8H, V9.8H}, [x1], #0x40 + cmge V10.8H, V2.8H, V0.8H + cmge V18.8H, V1.8H, V2.8H + cmge V11.8H, V3.8H, V0.8H + cmge V19.8H, V1.8H, V3.8H + cmge V12.8H, V4.8H, V0.8H + cmge V20.8H, V1.8H, V4.8H + cmge V13.8H, V5.8H, V0.8H + cmge V21.8H, V1.8H, V5.8H + cmge V14.8H, V6.8H, V0.8H + cmge V22.8H, V1.8H, V6.8H + cmge V15.8H, V7.8H, V0.8H + cmge V23.8H, V1.8H, V7.8H + cmge V16.8H, V8.8H, V0.8H + cmge V24.8H, V1.8H, V8.8H + cmge V17.8H, V9.8H, V0.8H + cmge V25.8H, V1.8H, V9.8H + and V18.16B, V18.16B, V10.16B + and V19.16B, V19.16B, V11.16B + and V20.16B, V20.16B, V12.16B + and V21.16B, V21.16B, V13.16B + and V22.16B, V22.16B, V14.16B + and V23.16B, V23.16B, V15.16B + and V24.16B, V24.16B, V16.16B + and V25.16B, V25.16B, V17.16B + and V18.16B, V18.16B, V26.16B + and V19.16B, V19.16B, V26.16B + and V20.16B, V20.16B, V26.16B + and V21.16B, V21.16B, V26.16B + and V22.16B, V22.16B, V26.16B + and V23.16B, V23.16B, V26.16B + and V24.16B, V24.16B, V26.16B + and V25.16B, V25.16B, V26.16B + addv H18, V18.8H + addv H19, V19.8H + addv H20, V20.8H + addv H21, V21.8H + addv H22, V22.8H + addv H23, V23.8H + addv H24, V24.8H + addv H25, V25.8H + ins V18.B[1], V19.B[0] + ins V18.B[2], V20.B[0] + ins V18.B[3], V21.B[0] + ins V18.B[4], V22.B[0] + ins V18.B[5], V23.B[0] + ins V18.B[6], V24.B[0] + ins V18.B[7], V25.B[0] + st1 {V18.8B}, [x0], #8 + ld1 {V2.8H, V3.8H, V4.8H, V5.8H}, [x1], #0x40 + ld1 {V6.8H, V7.8H, V8.8H, V9.8H}, [x1], #0x40 + cmge V10.8H, V2.8H, V0.8H + cmge V18.8H, V1.8H, V2.8H + cmge V11.8H, V3.8H, V0.8H + cmge V19.8H, V1.8H, V3.8H + cmge V12.8H, V4.8H, V0.8H + cmge V20.8H, V1.8H, V4.8H + cmge V13.8H, V5.8H, V0.8H + cmge V21.8H, V1.8H, V5.8H + cmge V14.8H, V6.8H, V0.8H + cmge V22.8H, V1.8H, V6.8H + cmge V15.8H, V7.8H, V0.8H + cmge V23.8H, V1.8H, V7.8H + cmge V16.8H, V8.8H, V0.8H + cmge V24.8H, V1.8H, V8.8H + cmge V17.8H, V9.8H, V0.8H + cmge V25.8H, V1.8H, V9.8H + and V18.16B, V18.16B, V10.16B + and V19.16B, V19.16B, V11.16B + and V20.16B, V20.16B, V12.16B + and V21.16B, V21.16B, V13.16B + and V22.16B, V22.16B, V14.16B + and V23.16B, V23.16B, V15.16B + and V24.16B, V24.16B, V16.16B + and V25.16B, V25.16B, V17.16B + and V18.16B, V18.16B, V26.16B + and V19.16B, V19.16B, V26.16B + and V20.16B, V20.16B, V26.16B + and V21.16B, V21.16B, V26.16B + and V22.16B, V22.16B, V26.16B + and V23.16B, V23.16B, V26.16B + and V24.16B, V24.16B, V26.16B + and V25.16B, V25.16B, V26.16B + addv H18, V18.8H + addv H19, V19.8H + addv H20, V20.8H + addv H21, V21.8H + addv H22, V22.8H + addv H23, V23.8H + addv H24, V24.8H + addv H25, V25.8H + ins V18.B[1], V19.B[0] + ins V18.B[2], V20.B[0] + ins V18.B[3], V21.B[0] + ins V18.B[4], V22.B[0] + ins V18.B[5], V23.B[0] + ins V18.B[6], V24.B[0] + ins V18.B[7], V25.B[0] + st1 {V18.8B}, [x0], #8 + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_from_msg_q1half DCW 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681, 0x0681 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_from_msg_bits DCB 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 @@ -8099,153 +8099,153 @@ L_mlkem_from_msg_bits mlkem_from_msg_neon PROC stp x29, x30, [sp, #-48]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] adrp x2, L_mlkem_from_msg_q1half add x2, x2, L_mlkem_from_msg_q1half adrp x3, L_mlkem_from_msg_bits add x3, x3, L_mlkem_from_msg_bits - ld1 {v2.16b, v3.16b}, [x1] - ldr q1, [x2] - ldr q0, [x3] - dup v4.8b, v2.b[0] - dup v5.8b, v2.b[1] - dup v6.8b, v2.b[2] - dup v7.8b, v2.b[3] - cmtst v4.8b, v4.8b, v0.8b - cmtst v5.8b, v5.8b, v0.8b - cmtst v6.8b, v6.8b, v0.8b - cmtst v7.8b, v7.8b, v0.8b - zip1 v4.16b, v4.16b, v4.16b - zip1 v5.16b, v5.16b, v5.16b - zip1 v6.16b, v6.16b, v6.16b - zip1 v7.16b, v7.16b, v7.16b - and v4.16b, v4.16b, v1.16b - and v5.16b, v5.16b, v1.16b - and v6.16b, v6.16b, v1.16b - and v7.16b, v7.16b, v1.16b - st1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - dup v4.8b, v2.b[4] - dup v5.8b, v2.b[5] - dup v6.8b, v2.b[6] - dup v7.8b, v2.b[7] - cmtst v4.8b, v4.8b, v0.8b - cmtst v5.8b, v5.8b, v0.8b - cmtst v6.8b, v6.8b, v0.8b - cmtst v7.8b, v7.8b, v0.8b - zip1 v4.16b, v4.16b, v4.16b - zip1 v5.16b, v5.16b, v5.16b - zip1 v6.16b, v6.16b, v6.16b - zip1 v7.16b, v7.16b, v7.16b - and v4.16b, v4.16b, v1.16b - and v5.16b, v5.16b, v1.16b - and v6.16b, v6.16b, v1.16b - and v7.16b, v7.16b, v1.16b - st1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - dup v4.8b, v2.b[8] - dup v5.8b, v2.b[9] - dup v6.8b, v2.b[10] - dup v7.8b, v2.b[11] - cmtst v4.8b, v4.8b, v0.8b - cmtst v5.8b, v5.8b, v0.8b - cmtst v6.8b, v6.8b, v0.8b - cmtst v7.8b, v7.8b, v0.8b - zip1 v4.16b, v4.16b, v4.16b - zip1 v5.16b, v5.16b, v5.16b - zip1 v6.16b, v6.16b, v6.16b - zip1 v7.16b, v7.16b, v7.16b - and v4.16b, v4.16b, v1.16b - and v5.16b, v5.16b, v1.16b - and v6.16b, v6.16b, v1.16b - and v7.16b, v7.16b, v1.16b - st1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - dup v4.8b, v2.b[12] - dup v5.8b, v2.b[13] - dup v6.8b, v2.b[14] - dup v7.8b, v2.b[15] - cmtst v4.8b, v4.8b, v0.8b - cmtst v5.8b, v5.8b, v0.8b - cmtst v6.8b, v6.8b, v0.8b - cmtst v7.8b, v7.8b, v0.8b - zip1 v4.16b, v4.16b, v4.16b - zip1 v5.16b, v5.16b, v5.16b - zip1 v6.16b, v6.16b, v6.16b - zip1 v7.16b, v7.16b, v7.16b - and v4.16b, v4.16b, v1.16b - and v5.16b, v5.16b, v1.16b - and v6.16b, v6.16b, v1.16b - and v7.16b, v7.16b, v1.16b - st1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - dup v4.8b, v3.b[0] - dup v5.8b, v3.b[1] - dup v6.8b, v3.b[2] - dup v7.8b, v3.b[3] - cmtst v4.8b, v4.8b, v0.8b - cmtst v5.8b, v5.8b, v0.8b - cmtst v6.8b, v6.8b, v0.8b - cmtst v7.8b, v7.8b, v0.8b - zip1 v4.16b, v4.16b, v4.16b - zip1 v5.16b, v5.16b, v5.16b - zip1 v6.16b, v6.16b, v6.16b - zip1 v7.16b, v7.16b, v7.16b - and v4.16b, v4.16b, v1.16b - and v5.16b, v5.16b, v1.16b - and v6.16b, v6.16b, v1.16b - and v7.16b, v7.16b, v1.16b - st1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - dup v4.8b, v3.b[4] - dup v5.8b, v3.b[5] - dup v6.8b, v3.b[6] - dup v7.8b, v3.b[7] - cmtst v4.8b, v4.8b, v0.8b - cmtst v5.8b, v5.8b, v0.8b - cmtst v6.8b, v6.8b, v0.8b - cmtst v7.8b, v7.8b, v0.8b - zip1 v4.16b, v4.16b, v4.16b - zip1 v5.16b, v5.16b, v5.16b - zip1 v6.16b, v6.16b, v6.16b - zip1 v7.16b, v7.16b, v7.16b - and v4.16b, v4.16b, v1.16b - and v5.16b, v5.16b, v1.16b - and v6.16b, v6.16b, v1.16b - and v7.16b, v7.16b, v1.16b - st1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - dup v4.8b, v3.b[8] - dup v5.8b, v3.b[9] - dup v6.8b, v3.b[10] - dup v7.8b, v3.b[11] - cmtst v4.8b, v4.8b, v0.8b - cmtst v5.8b, v5.8b, v0.8b - cmtst v6.8b, v6.8b, v0.8b - cmtst v7.8b, v7.8b, v0.8b - zip1 v4.16b, v4.16b, v4.16b - zip1 v5.16b, v5.16b, v5.16b - zip1 v6.16b, v6.16b, v6.16b - zip1 v7.16b, v7.16b, v7.16b - and v4.16b, v4.16b, v1.16b - and v5.16b, v5.16b, v1.16b - and v6.16b, v6.16b, v1.16b - and v7.16b, v7.16b, v1.16b - st1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - dup v4.8b, v3.b[12] - dup v5.8b, v3.b[13] - dup v6.8b, v3.b[14] - dup v7.8b, v3.b[15] - cmtst v4.8b, v4.8b, v0.8b - cmtst v5.8b, v5.8b, v0.8b - cmtst v6.8b, v6.8b, v0.8b - cmtst v7.8b, v7.8b, v0.8b - zip1 v4.16b, v4.16b, v4.16b - zip1 v5.16b, v5.16b, v5.16b - zip1 v6.16b, v6.16b, v6.16b - zip1 v7.16b, v7.16b, v7.16b - and v4.16b, v4.16b, v1.16b - and v5.16b, v5.16b, v1.16b - and v6.16b, v6.16b, v1.16b - and v7.16b, v7.16b, v1.16b - st1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x0], #0x40 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] + ld1 {V2.16B, V3.16B}, [x1] + ldr Q1, [x2] + ldr Q0, [x3] + dup V4.8B, V2.B[0] + dup V5.8B, V2.B[1] + dup V6.8B, V2.B[2] + dup V7.8B, V2.B[3] + cmtst V4.8B, V4.8B, V0.8B + cmtst V5.8B, V5.8B, V0.8B + cmtst V6.8B, V6.8B, V0.8B + cmtst V7.8B, V7.8B, V0.8B + zip1 V4.16B, V4.16B, V4.16B + zip1 V5.16B, V5.16B, V5.16B + zip1 V6.16B, V6.16B, V6.16B + zip1 V7.16B, V7.16B, V7.16B + and V4.16B, V4.16B, V1.16B + and V5.16B, V5.16B, V1.16B + and V6.16B, V6.16B, V1.16B + and V7.16B, V7.16B, V1.16B + st1 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + dup V4.8B, V2.B[4] + dup V5.8B, V2.B[5] + dup V6.8B, V2.B[6] + dup V7.8B, V2.B[7] + cmtst V4.8B, V4.8B, V0.8B + cmtst V5.8B, V5.8B, V0.8B + cmtst V6.8B, V6.8B, V0.8B + cmtst V7.8B, V7.8B, V0.8B + zip1 V4.16B, V4.16B, V4.16B + zip1 V5.16B, V5.16B, V5.16B + zip1 V6.16B, V6.16B, V6.16B + zip1 V7.16B, V7.16B, V7.16B + and V4.16B, V4.16B, V1.16B + and V5.16B, V5.16B, V1.16B + and V6.16B, V6.16B, V1.16B + and V7.16B, V7.16B, V1.16B + st1 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + dup V4.8B, V2.B[8] + dup V5.8B, V2.B[9] + dup V6.8B, V2.B[10] + dup V7.8B, V2.B[11] + cmtst V4.8B, V4.8B, V0.8B + cmtst V5.8B, V5.8B, V0.8B + cmtst V6.8B, V6.8B, V0.8B + cmtst V7.8B, V7.8B, V0.8B + zip1 V4.16B, V4.16B, V4.16B + zip1 V5.16B, V5.16B, V5.16B + zip1 V6.16B, V6.16B, V6.16B + zip1 V7.16B, V7.16B, V7.16B + and V4.16B, V4.16B, V1.16B + and V5.16B, V5.16B, V1.16B + and V6.16B, V6.16B, V1.16B + and V7.16B, V7.16B, V1.16B + st1 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + dup V4.8B, V2.B[12] + dup V5.8B, V2.B[13] + dup V6.8B, V2.B[14] + dup V7.8B, V2.B[15] + cmtst V4.8B, V4.8B, V0.8B + cmtst V5.8B, V5.8B, V0.8B + cmtst V6.8B, V6.8B, V0.8B + cmtst V7.8B, V7.8B, V0.8B + zip1 V4.16B, V4.16B, V4.16B + zip1 V5.16B, V5.16B, V5.16B + zip1 V6.16B, V6.16B, V6.16B + zip1 V7.16B, V7.16B, V7.16B + and V4.16B, V4.16B, V1.16B + and V5.16B, V5.16B, V1.16B + and V6.16B, V6.16B, V1.16B + and V7.16B, V7.16B, V1.16B + st1 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + dup V4.8B, V3.B[0] + dup V5.8B, V3.B[1] + dup V6.8B, V3.B[2] + dup V7.8B, V3.B[3] + cmtst V4.8B, V4.8B, V0.8B + cmtst V5.8B, V5.8B, V0.8B + cmtst V6.8B, V6.8B, V0.8B + cmtst V7.8B, V7.8B, V0.8B + zip1 V4.16B, V4.16B, V4.16B + zip1 V5.16B, V5.16B, V5.16B + zip1 V6.16B, V6.16B, V6.16B + zip1 V7.16B, V7.16B, V7.16B + and V4.16B, V4.16B, V1.16B + and V5.16B, V5.16B, V1.16B + and V6.16B, V6.16B, V1.16B + and V7.16B, V7.16B, V1.16B + st1 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + dup V4.8B, V3.B[4] + dup V5.8B, V3.B[5] + dup V6.8B, V3.B[6] + dup V7.8B, V3.B[7] + cmtst V4.8B, V4.8B, V0.8B + cmtst V5.8B, V5.8B, V0.8B + cmtst V6.8B, V6.8B, V0.8B + cmtst V7.8B, V7.8B, V0.8B + zip1 V4.16B, V4.16B, V4.16B + zip1 V5.16B, V5.16B, V5.16B + zip1 V6.16B, V6.16B, V6.16B + zip1 V7.16B, V7.16B, V7.16B + and V4.16B, V4.16B, V1.16B + and V5.16B, V5.16B, V1.16B + and V6.16B, V6.16B, V1.16B + and V7.16B, V7.16B, V1.16B + st1 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + dup V4.8B, V3.B[8] + dup V5.8B, V3.B[9] + dup V6.8B, V3.B[10] + dup V7.8B, V3.B[11] + cmtst V4.8B, V4.8B, V0.8B + cmtst V5.8B, V5.8B, V0.8B + cmtst V6.8B, V6.8B, V0.8B + cmtst V7.8B, V7.8B, V0.8B + zip1 V4.16B, V4.16B, V4.16B + zip1 V5.16B, V5.16B, V5.16B + zip1 V6.16B, V6.16B, V6.16B + zip1 V7.16B, V7.16B, V7.16B + and V4.16B, V4.16B, V1.16B + and V5.16B, V5.16B, V1.16B + and V6.16B, V6.16B, V1.16B + and V7.16B, V7.16B, V1.16B + st1 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + dup V4.8B, V3.B[12] + dup V5.8B, V3.B[13] + dup V6.8B, V3.B[14] + dup V7.8B, V3.B[15] + cmtst V4.8B, V4.8B, V0.8B + cmtst V5.8B, V5.8B, V0.8B + cmtst V6.8B, V6.8B, V0.8B + cmtst V7.8B, V7.8B, V0.8B + zip1 V4.16B, V4.16B, V4.16B + zip1 V5.16B, V5.16B, V5.16B + zip1 V6.16B, V6.16B, V6.16B + zip1 V7.16B, V7.16B, V7.16B + and V4.16B, V4.16B, V1.16B + and V5.16B, V5.16B, V1.16B + and V6.16B, V6.16B, V1.16B + and V7.16B, V7.16B, V1.16B + st1 {V4.8H, V5.8H, V6.8H, V7.8H}, [x0], #0x40 + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] ldp x29, x30, [sp], #48 ret ENDP @@ -8255,277 +8255,277 @@ mlkem_from_msg_neon PROC mlkem_cmp_neon PROC stp x29, x30, [sp, #-48]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v8.16b, v0.16b, v4.16b - eor v9.16b, v1.16b, v5.16b - eor v10.16b, v2.16b, v6.16b - eor v11.16b, v3.16b, v7.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V8.16B, V0.16B, V4.16B + eor V9.16B, V1.16B, V5.16B + eor V10.16B, V2.16B, V6.16B + eor V11.16B, V3.16B, V7.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B subs w2, w2, #0x300 beq L_mlkem_aarch64_cmp_neon_done - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B subs w2, w2, #0x140 beq L_mlkem_aarch64_cmp_neon_done - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld4 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #0x40 - ld4 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - eor v2.16b, v2.16b, v6.16b - eor v3.16b, v3.16b, v7.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b - orr v10.16b, v10.16b, v2.16b - orr v11.16b, v11.16b, v3.16b - ld2 {v0.16b, v1.16b}, [x0] - ld2 {v4.16b, v5.16b}, [x1] - eor v0.16b, v0.16b, v4.16b - eor v1.16b, v1.16b, v5.16b - orr v8.16b, v8.16b, v0.16b - orr v9.16b, v9.16b, v1.16b + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld4 {V0.16B, V1.16B, V2.16B, V3.16B}, [x0], #0x40 + ld4 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + eor V2.16B, V2.16B, V6.16B + eor V3.16B, V3.16B, V7.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B + orr V10.16B, V10.16B, V2.16B + orr V11.16B, V11.16B, V3.16B + ld2 {V0.16B, V1.16B}, [x0] + ld2 {V4.16B, V5.16B}, [x1] + eor V0.16B, V0.16B, V4.16B + eor V1.16B, V1.16B, V5.16B + orr V8.16B, V8.16B, V0.16B + orr V9.16B, V9.16B, V1.16B L_mlkem_aarch64_cmp_neon_done - orr v8.16b, v8.16b, v9.16b - orr v10.16b, v10.16b, v11.16b - orr v8.16b, v8.16b, v10.16b - ext v9.16b, v8.16b, v8.16b, #8 - orr v8.16b, v8.16b, v9.16b - mov x0, v8.d[0] + orr V8.16B, V8.16B, V9.16B + orr V10.16B, V10.16B, V11.16B + orr V8.16B, V8.16B, V10.16B + ext8 V9.16B, V8.16B, V8.16B, #8 + orr V8.16B, V8.16B, V9.16B + mov x0, V8.D[0] subs x0, x0, xzr csetm w0, ne - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] ldp x29, x30, [sp], #48 ret ENDP - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_rej_uniform_mask DCW 0x0fff, 0x0fff, 0x0fff, 0x0fff, 0x0fff, 0x0fff, 0x0fff, 0x0fff - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_rej_uniform_bits DCW 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_mlkem_rej_uniform_indices DCB 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff @@ -9046,9 +9046,9 @@ L_mlkem_rej_uniform_indices mlkem_rej_uniform_neon PROC stp x29, x30, [sp, #-64]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] adrp x4, L_mlkem_rej_uniform_mask add x4, x4, L_mlkem_rej_uniform_mask adrp x5, L_mlkem_aarch64_q @@ -9057,58 +9057,58 @@ mlkem_rej_uniform_neon PROC add x6, x6, L_mlkem_rej_uniform_bits adrp x7, L_mlkem_rej_uniform_indices add x7, x7, L_mlkem_rej_uniform_indices - eor v1.16b, v1.16b, v1.16b - eor v12.16b, v12.16b, v12.16b - eor v13.16b, v13.16b, v13.16b + eor V1.16B, V1.16B, V1.16B + eor V12.16B, V12.16B, V12.16B + eor V13.16B, V13.16B, V13.16B eor x12, x12, x12 - eor v10.16b, v10.16b, v10.16b - eor v11.16b, v11.16b, v11.16b + eor V10.16B, V10.16B, V10.16B + eor V11.16B, V11.16B, V11.16B mov x13, #0xd01 - ldr q0, [x4] - ldr q3, [x5] - ldr q2, [x6] + ldr Q0, [x4] + ldr Q3, [x5] + ldr Q2, [x6] subs wzr, w1, #0 beq L_mlkem_rej_uniform_done subs wzr, w1, #16 blt L_mlkem_rej_uniform_loop_4 L_mlkem_rej_uniform_loop_16 - ld3 {v4.8b, v5.8b, v6.8b}, [x2], #24 - zip1 v4.16b, v4.16b, v1.16b - zip1 v5.16b, v5.16b, v1.16b - zip1 v6.16b, v6.16b, v1.16b - shl v7.8h, v5.8h, #8 - ushr v8.8h, v5.8h, #4 - shl v6.8h, v6.8h, #4 - orr v4.16b, v4.16b, v7.16b - orr v5.16b, v8.16b, v6.16b - and v7.16b, v4.16b, v0.16b - and v8.16b, v5.16b, v0.16b - zip1 v4.8h, v7.8h, v8.8h - zip2 v5.8h, v7.8h, v8.8h - cmgt v7.8h, v3.8h, v4.8h - cmgt v8.8h, v3.8h, v5.8h - ushr v12.8h, v7.8h, #15 - ushr v13.8h, v8.8h, #15 - addv h12, v12.8h - addv h13, v13.8h - mov x10, v12.d[0] - mov x11, v13.d[0] - and v10.16b, v7.16b, v2.16b - and v11.16b, v8.16b, v2.16b - addv h10, v10.8h - addv h11, v11.8h - mov w8, v10.s[0] - mov w9, v11.s[0] + ld3 {V4.8B, V5.8B, V6.8B}, [x2], #24 + zip1 V4.16B, V4.16B, V1.16B + zip1 V5.16B, V5.16B, V1.16B + zip1 V6.16B, V6.16B, V1.16B + shl V7.8H, V5.8H, #8 + ushr V8.8H, V5.8H, #4 + shl V6.8H, V6.8H, #4 + orr V4.16B, V4.16B, V7.16B + orr V5.16B, V8.16B, V6.16B + and V7.16B, V4.16B, V0.16B + and V8.16B, V5.16B, V0.16B + zip1 V4.8H, V7.8H, V8.8H + zip2 V5.8H, V7.8H, V8.8H + cmgt V7.8H, V3.8H, V4.8H + cmgt V8.8H, V3.8H, V5.8H + ushr V12.8H, V7.8H, #15 + ushr V13.8H, V8.8H, #15 + addv H12, V12.8H + addv H13, V13.8H + mov x10, V12.D[0] + mov x11, V13.D[0] + and V10.16B, V7.16B, V2.16B + and V11.16B, V8.16B, V2.16B + addv H10, V10.8H + addv H11, V11.8H + mov w8, V10.S[0] + mov w9, V11.S[0] lsl w8, w8, #4 lsl w9, w9, #4 - ldr q10, [x7, x8] - ldr q11, [x7, x9] - tbl v7.16b, {v4.16b}, v10.16b - tbl v8.16b, {v5.16b}, v11.16b - str q7, [x0] + ldr Q10, [x7, x8] + ldr Q11, [x7, x9] + tbl V7.16B, {V4.16B}, V10.16B + tbl V8.16B, {V5.16B}, V11.16B + str Q7, [x0] add x0, x0, x10, lsl 1 add x12, x12, x10 - str q8, [x0] + str Q8, [x0] add x0, x0, x11, lsl 1 add x12, x12, x11 subs w3, w3, #24 @@ -9195,13 +9195,13 @@ L_mlkem_rej_uniform_loop_lt_4 b L_mlkem_rej_uniform_loop_lt_4 L_mlkem_rej_uniform_done mov x0, x12 - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] ldp x29, x30, [sp], #0x40 ret ENDP - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 16 L_sha3_aarch64_r DCQ 0x0000000000000001, 0x0000000000008082 @@ -9229,28 +9229,28 @@ mlkem_sha3_blocksx3_neon PROC stp x24, x25, [x29, #120] stp x26, x27, [x29, #136] str x28, [x29, #152] - stp d8, d9, [x29, #160] - stp d10, d11, [x29, #176] - stp d12, d13, [x29, #192] - stp d14, d15, [x29, #208] + stp D8, D9, [x29, #160] + stp D10, D11, [x29, #176] + stp D12, D13, [x29, #192] + stp D14, D15, [x29, #208] adrp x27, L_sha3_aarch64_r add x27, x27, L_sha3_aarch64_r str x0, [x29, #40] - ld4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - ld4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - ld4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - ld4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - ld4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - ld4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - ld1 {v24.d}[0], [x0] + ld4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + ld4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + ld4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + ld4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + ld4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + ld4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + ld1 {V24.D}[0], [x0] add x0, x0, #8 - ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32 - ld4 {v4.d, v5.d, v6.d, v7.d}[1], [x0], #32 - ld4 {v8.d, v9.d, v10.d, v11.d}[1], [x0], #32 - ld4 {v12.d, v13.d, v14.d, v15.d}[1], [x0], #32 - ld4 {v16.d, v17.d, v18.d, v19.d}[1], [x0], #32 - ld4 {v20.d, v21.d, v22.d, v23.d}[1], [x0], #32 - ld1 {v24.d}[1], [x0] + ld4 {V0.D, V1.D, V2.D, V3.D}[1], [x0], #32 + ld4 {V4.D, V5.D, V6.D, V7.D}[1], [x0], #32 + ld4 {V8.D, V9.D, V10.D, V11.D}[1], [x0], #32 + ld4 {V12.D, V13.D, V14.D, V15.D}[1], [x0], #32 + ld4 {V16.D, V17.D, V18.D, V19.D}[1], [x0], #32 + ld4 {V20.D, V21.D, V22.D, V23.D}[1], [x0], #32 + ld1 {V24.D}[1], [x0] add x0, x0, #8 ldp x1, x2, [x0] ldp x3, x4, [x0, #16] @@ -9270,154 +9270,154 @@ mlkem_sha3_blocksx3_neon PROC L_SHA3_transform_blocksx3_neon_begin stp x27, x28, [x29, #48] ; Col Mix - eor3 v31.16b, v0.16b, v5.16b, v10.16b + eor3 V31.16B, V0.16B, V5.16B, V10.16B eor x0, x5, x10 - eor3 v27.16b, v1.16b, v6.16b, v11.16b + eor3 V27.16B, V1.16B, V6.16B, V11.16B eor x30, x1, x6 - eor3 v28.16b, v2.16b, v7.16b, v12.16b + eor3 V28.16B, V2.16B, V7.16B, V12.16B eor x28, x3, x8 - eor3 v29.16b, v3.16b, v8.16b, v13.16b + eor3 V29.16B, V3.16B, V8.16B, V13.16B eor x0, x0, x15 - eor3 v30.16b, v4.16b, v9.16b, v14.16b + eor3 V30.16B, V4.16B, V9.16B, V14.16B eor x30, x30, x11 - eor3 v31.16b, v31.16b, v15.16b, v20.16b + eor3 V31.16B, V31.16B, V15.16B, V20.16B eor x28, x28, x13 - eor3 v27.16b, v27.16b, v16.16b, v21.16b + eor3 V27.16B, V27.16B, V16.16B, V21.16B eor x0, x0, x21 - eor3 v28.16b, v28.16b, v17.16b, v22.16b + eor3 V28.16B, V28.16B, V17.16B, V22.16B eor x30, x30, x16 - eor3 v29.16b, v29.16b, v18.16b, v23.16b + eor3 V29.16B, V29.16B, V18.16B, V23.16B eor x28, x28, x19 - eor3 v30.16b, v30.16b, v19.16b, v24.16b + eor3 V30.16B, V30.16B, V19.16B, V24.16B eor x0, x0, x26 - rax1 v25.2d, v30.2d, v27.2d + rax1 V25.2D, V30.2D, V27.2D eor x30, x30, x22 - rax1 v26.2d, v31.2d, v28.2d + rax1 V26.2D, V31.2D, V28.2D eor x28, x28, x24 - rax1 v27.2d, v27.2d, v29.2d + rax1 V27.2D, V27.2D, V29.2D str x0, [x29, #32] - rax1 v28.2d, v28.2d, v30.2d + rax1 V28.2D, V28.2D, V30.2D str x28, [x29, #24] - rax1 v29.2d, v29.2d, v31.2d + rax1 V29.2D, V29.2D, V31.2D eor x27, x2, x7 - eor v0.16b, v0.16b, v25.16b - xar v30.2d, v1.2d, v26.2d, #63 + eor V0.16B, V0.16B, V25.16B + xar V30.2D, V1.2D, V26.2D, #63 eor x28, x4, x9 - xar v1.2d, v6.2d, v26.2d, #20 + xar V1.2D, V6.2D, V26.2D, #20 eor x27, x27, x12 - xar v6.2d, v9.2d, v29.2d, #44 + xar V6.2D, V9.2D, V29.2D, #44 eor x28, x28, x14 - xar v9.2d, v22.2d, v27.2d, #3 + xar V9.2D, V22.2D, V27.2D, #3 eor x27, x27, x17 - xar v22.2d, v14.2d, v29.2d, #25 + xar V22.2D, V14.2D, V29.2D, #25 eor x28, x28, x20 - xar v14.2d, v20.2d, v25.2d, #46 + xar V14.2D, V20.2D, V25.2D, #46 eor x27, x27, x23 - xar v20.2d, v2.2d, v27.2d, #2 + xar V20.2D, V2.2D, V27.2D, #2 eor x28, x28, x25 - xar v2.2d, v12.2d, v27.2d, #21 + xar V2.2D, V12.2D, V27.2D, #21 eor x0, x0, x27, ror 63 - xar v12.2d, v13.2d, v28.2d, #39 + xar V12.2D, V13.2D, V28.2D, #39 eor x27, x27, x28, ror 63 - xar v13.2d, v19.2d, v29.2d, #56 + xar V13.2D, V19.2D, V29.2D, #56 eor x1, x1, x0 - xar v19.2d, v23.2d, v28.2d, #8 + xar V19.2D, V23.2D, V28.2D, #8 eor x6, x6, x0 - xar v23.2d, v15.2d, v25.2d, #23 + xar V23.2D, V15.2D, V25.2D, #23 eor x11, x11, x0 - xar v15.2d, v4.2d, v29.2d, #37 + xar V15.2D, V4.2D, V29.2D, #37 eor x16, x16, x0 - xar v4.2d, v24.2d, v29.2d, #50 + xar V4.2D, V24.2D, V29.2D, #50 eor x22, x22, x0 - xar v24.2d, v21.2d, v26.2d, #62 + xar V24.2D, V21.2D, V26.2D, #62 eor x3, x3, x27 - xar v21.2d, v8.2d, v28.2d, #9 + xar V21.2D, V8.2D, V28.2D, #9 eor x8, x8, x27 - xar v8.2d, v16.2d, v26.2d, #19 + xar V8.2D, V16.2D, V26.2D, #19 eor x13, x13, x27 - xar v16.2d, v5.2d, v25.2d, #28 + xar V16.2D, V5.2D, V25.2D, #28 eor x19, x19, x27 - xar v5.2d, v3.2d, v28.2d, #36 + xar V5.2D, V3.2D, V28.2D, #36 eor x24, x24, x27 - xar v3.2d, v18.2d, v28.2d, #43 + xar V3.2D, V18.2D, V28.2D, #43 ldr x0, [x29, #32] - xar v18.2d, v17.2d, v27.2d, #49 + xar V18.2D, V17.2D, V27.2D, #49 ldr x27, [x29, #24] - xar v17.2d, v11.2d, v26.2d, #54 + xar V17.2D, V11.2D, V26.2D, #54 eor x28, x28, x30, ror 63 - xar v11.2d, v7.2d, v27.2d, #58 + xar V11.2D, V7.2D, V27.2D, #58 eor x30, x30, x27, ror 63 - xar v7.2d, v10.2d, v25.2d, #61 + xar V7.2D, V10.2D, V25.2D, #61 eor x27, x27, x0, ror 63 ; Row Mix - mov v25.16b, v0.16b + mov V25.16B, V0.16B eor x5, x5, x28 - mov v26.16b, v1.16b + mov V26.16B, V1.16B eor x10, x10, x28 - bcax v0.16b, v25.16b, v2.16b, v26.16b + bcax V0.16B, V25.16B, V2.16B, V26.16B eor x15, x15, x28 - bcax v1.16b, v26.16b, v3.16b, v2.16b + bcax V1.16B, V26.16B, V3.16B, V2.16B eor x21, x21, x28 - bcax v2.16b, v2.16b, v4.16b, v3.16b + bcax V2.16B, V2.16B, V4.16B, V3.16B eor x26, x26, x28 - bcax v3.16b, v3.16b, v25.16b, v4.16b + bcax V3.16B, V3.16B, V25.16B, V4.16B eor x2, x2, x30 - bcax v4.16b, v4.16b, v26.16b, v25.16b + bcax V4.16B, V4.16B, V26.16B, V25.16B eor x7, x7, x30 - mov v25.16b, v5.16b + mov V25.16B, V5.16B eor x12, x12, x30 - mov v26.16b, v6.16b + mov V26.16B, V6.16B eor x17, x17, x30 - bcax v5.16b, v25.16b, v7.16b, v26.16b + bcax V5.16B, V25.16B, V7.16B, V26.16B eor x23, x23, x30 - bcax v6.16b, v26.16b, v8.16b, v7.16b + bcax V6.16B, V26.16B, V8.16B, V7.16B eor x4, x4, x27 - bcax v7.16b, v7.16b, v9.16b, v8.16b + bcax V7.16B, V7.16B, V9.16B, V8.16B eor x9, x9, x27 - bcax v8.16b, v8.16b, v25.16b, v9.16b + bcax V8.16B, V8.16B, V25.16B, V9.16B eor x14, x14, x27 - bcax v9.16b, v9.16b, v26.16b, v25.16b + bcax V9.16B, V9.16B, V26.16B, V25.16B eor x20, x20, x27 - mov v26.16b, v11.16b + mov V26.16B, V11.16B eor x25, x25, x27 ; Swap Rotate Base - bcax v10.16b, v30.16b, v12.16b, v26.16b + bcax V10.16B, V30.16B, V12.16B, V26.16B ror x0, x2, #63 - bcax v11.16b, v26.16b, v13.16b, v12.16b + bcax V11.16B, V26.16B, V13.16B, V12.16B ror x2, x7, #20 - bcax v12.16b, v12.16b, v14.16b, v13.16b + bcax V12.16B, V12.16B, V14.16B, V13.16B ror x7, x10, #44 - bcax v13.16b, v13.16b, v30.16b, v14.16b + bcax V13.16B, V13.16B, V30.16B, V14.16B ror x10, x24, #3 - bcax v14.16b, v14.16b, v26.16b, v30.16b + bcax V14.16B, V14.16B, V26.16B, V30.16B ror x24, x15, #25 - mov v25.16b, v15.16b + mov V25.16B, V15.16B ror x15, x22, #46 - mov v26.16b, v16.16b + mov V26.16B, V16.16B ror x22, x3, #2 - bcax v15.16b, v25.16b, v17.16b, v26.16b + bcax V15.16B, V25.16B, V17.16B, V26.16B ror x3, x13, #21 - bcax v16.16b, v26.16b, v18.16b, v17.16b + bcax V16.16B, V26.16B, V18.16B, V17.16B ror x13, x14, #39 - bcax v17.16b, v17.16b, v19.16b, v18.16b + bcax V17.16B, V17.16B, V19.16B, V18.16B ror x14, x21, #56 - bcax v18.16b, v18.16b, v25.16b, v19.16b + bcax V18.16B, V18.16B, V25.16B, V19.16B ror x21, x25, #8 - bcax v19.16b, v19.16b, v26.16b, v25.16b + bcax V19.16B, V19.16B, V26.16B, V25.16B ror x25, x16, #23 - mov v25.16b, v20.16b + mov V25.16B, V20.16B ror x16, x5, #37 - mov v26.16b, v21.16b + mov V26.16B, V21.16B ror x5, x26, #50 - bcax v20.16b, v25.16b, v22.16b, v26.16b + bcax V20.16B, V25.16B, V22.16B, V26.16B ror x26, x23, #62 - bcax v21.16b, v26.16b, v23.16b, v22.16b + bcax V21.16B, V26.16B, V23.16B, V22.16B ror x23, x9, #9 - bcax v22.16b, v22.16b, v24.16b, v23.16b + bcax V22.16B, V22.16B, V24.16B, V23.16B ror x9, x17, #19 - bcax v23.16b, v23.16b, v25.16b, v24.16b + bcax V23.16B, V23.16B, V25.16B, V24.16B ror x17, x6, #28 - bcax v24.16b, v24.16b, v26.16b, v25.16b + bcax V24.16B, V24.16B, V26.16B, V25.16B ror x6, x4, #36 ror x4, x20, #43 ror x20, x19, #49 @@ -9479,27 +9479,27 @@ L_SHA3_transform_blocksx3_neon_begin ldp x27, x28, [x29, #48] ldr x0, [x27], #8 subs x28, x28, #1 - mov v30.d[0], x0 - mov v30.d[1], x0 + mov V30.D[0], x0 + mov V30.D[1], x0 eor x1, x1, x0 - eor v0.16b, v0.16b, v30.16b + eor V0.16B, V0.16B, V30.16B bne L_SHA3_transform_blocksx3_neon_begin ldr x0, [x29, #40] - st4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - st1 {v24.d}[0], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + st1 {V24.D}[0], [x0] add x0, x0, #8 - st4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[1], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[1], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[1], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[1], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[1], [x0], #32 - st1 {v24.d}[1], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[1], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[1], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[1], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[1], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[1], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[1], [x0], #32 + st1 {V24.D}[1], [x0] add x0, x0, #8 stp x1, x2, [x0] stp x3, x4, [x0, #16] @@ -9520,10 +9520,10 @@ L_SHA3_transform_blocksx3_neon_begin ldp x24, x25, [x29, #120] ldp x26, x27, [x29, #136] ldr x28, [x29, #152] - ldp d8, d9, [x29, #160] - ldp d10, d11, [x29, #176] - ldp d12, d13, [x29, #192] - ldp d14, d15, [x29, #208] + ldp D8, D9, [x29, #160] + ldp D10, D11, [x29, #176] + ldp D12, D13, [x29, #192] + ldp D14, D15, [x29, #208] ldp x29, x30, [sp], #0xe0 ret ENDP @@ -9539,217 +9539,217 @@ mlkem_shake128_blocksx3_seed_neon PROC stp x24, x25, [x29, #120] stp x26, x27, [x29, #136] str x28, [x29, #152] - stp d8, d9, [x29, #160] - stp d10, d11, [x29, #176] - stp d12, d13, [x29, #192] - stp d14, d15, [x29, #208] + stp D8, D9, [x29, #160] + stp D10, D11, [x29, #176] + stp D12, D13, [x29, #192] + stp D14, D15, [x29, #208] adrp x28, L_sha3_aarch64_r add x28, x28, L_sha3_aarch64_r str x0, [x29, #40] add x0, x0, #32 - ld1 {v4.d}[0], [x0] + ld1 {V4.D}[0], [x0] ldp x2, x3, [x1], #16 add x0, x0, #0xc8 - ld1 {v4.d}[1], [x0] + ld1 {V4.D}[1], [x0] ldp x4, x5, [x1], #16 ldr x6, [x0, #200] - eor v5.16b, v5.16b, v5.16b + eor V5.16B, V5.16B, V5.16B eor x7, x7, x7 - eor v6.16b, v6.16b, v6.16b + eor V6.16B, V6.16B, V6.16B eor x8, x8, x8 - eor v7.16b, v7.16b, v7.16b + eor V7.16B, V7.16B, V7.16B eor x9, x9, x9 - eor v8.16b, v8.16b, v8.16b + eor V8.16B, V8.16B, V8.16B eor x10, x10, x10 - eor v9.16b, v9.16b, v9.16b + eor V9.16B, V9.16B, V9.16B eor x11, x11, x11 - eor v10.16b, v10.16b, v10.16b + eor V10.16B, V10.16B, V10.16B eor x12, x12, x12 - eor v11.16b, v11.16b, v11.16b + eor V11.16B, V11.16B, V11.16B eor x13, x13, x13 - eor v12.16b, v12.16b, v12.16b + eor V12.16B, V12.16B, V12.16B eor x14, x14, x14 - eor v13.16b, v13.16b, v13.16b + eor V13.16B, V13.16B, V13.16B eor x15, x15, x15 - eor v14.16b, v14.16b, v14.16b + eor V14.16B, V14.16B, V14.16B eor x16, x16, x16 - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B eor x17, x17, x17 - eor v16.16b, v16.16b, v16.16b + eor V16.16B, V16.16B, V16.16B eor x19, x19, x19 - eor v17.16b, v17.16b, v17.16b + eor V17.16B, V17.16B, V17.16B eor x20, x20, x20 - eor v18.16b, v18.16b, v18.16b + eor V18.16B, V18.16B, V18.16B eor x21, x21, x21 - eor v19.16b, v19.16b, v19.16b + eor V19.16B, V19.16B, V19.16B eor x22, x22, x22 movz x23, #0x8000, lsl 48 - eor v21.16b, v21.16b, v21.16b + eor V21.16B, V21.16B, V21.16B eor x24, x24, x24 - eor v22.16b, v22.16b, v22.16b + eor V22.16B, V22.16B, V22.16B eor x25, x25, x25 - eor v23.16b, v23.16b, v23.16b + eor V23.16B, V23.16B, V23.16B eor x26, x26, x26 - eor v24.16b, v24.16b, v24.16b + eor V24.16B, V24.16B, V24.16B eor x27, x27, x27 - dup v0.2d, x2 - dup v1.2d, x3 - dup v2.2d, x4 - dup v3.2d, x5 - dup v20.2d, x23 + dup V0.2D, x2 + dup V1.2D, x3 + dup V2.2D, x4 + dup V3.2D, x5 + dup V20.2D, x23 mov x1, #24 ; Start of 24 rounds L_SHA3_shake128_blocksx3_seed_neon_begin stp x28, x1, [x29, #48] ; Col Mix - eor3 v31.16b, v0.16b, v5.16b, v10.16b + eor3 V31.16B, V0.16B, V5.16B, V10.16B eor x0, x6, x11 - eor3 v27.16b, v1.16b, v6.16b, v11.16b + eor3 V27.16B, V1.16B, V6.16B, V11.16B eor x30, x2, x7 - eor3 v28.16b, v2.16b, v7.16b, v12.16b + eor3 V28.16B, V2.16B, V7.16B, V12.16B eor x28, x4, x9 - eor3 v29.16b, v3.16b, v8.16b, v13.16b + eor3 V29.16B, V3.16B, V8.16B, V13.16B eor x0, x0, x16 - eor3 v30.16b, v4.16b, v9.16b, v14.16b + eor3 V30.16B, V4.16B, V9.16B, V14.16B eor x30, x30, x12 - eor3 v31.16b, v31.16b, v15.16b, v20.16b + eor3 V31.16B, V31.16B, V15.16B, V20.16B eor x28, x28, x14 - eor3 v27.16b, v27.16b, v16.16b, v21.16b + eor3 V27.16B, V27.16B, V16.16B, V21.16B eor x0, x0, x22 - eor3 v28.16b, v28.16b, v17.16b, v22.16b + eor3 V28.16B, V28.16B, V17.16B, V22.16B eor x30, x30, x17 - eor3 v29.16b, v29.16b, v18.16b, v23.16b + eor3 V29.16B, V29.16B, V18.16B, V23.16B eor x28, x28, x20 - eor3 v30.16b, v30.16b, v19.16b, v24.16b + eor3 V30.16B, V30.16B, V19.16B, V24.16B eor x0, x0, x27 - rax1 v25.2d, v30.2d, v27.2d + rax1 V25.2D, V30.2D, V27.2D eor x30, x30, x23 - rax1 v26.2d, v31.2d, v28.2d + rax1 V26.2D, V31.2D, V28.2D eor x28, x28, x25 - rax1 v27.2d, v27.2d, v29.2d + rax1 V27.2D, V27.2D, V29.2D str x0, [x29, #32] - rax1 v28.2d, v28.2d, v30.2d + rax1 V28.2D, V28.2D, V30.2D str x28, [x29, #24] - rax1 v29.2d, v29.2d, v31.2d + rax1 V29.2D, V29.2D, V31.2D eor x1, x3, x8 - eor v0.16b, v0.16b, v25.16b - xar v30.2d, v1.2d, v26.2d, #63 + eor V0.16B, V0.16B, V25.16B + xar V30.2D, V1.2D, V26.2D, #63 eor x28, x5, x10 - xar v1.2d, v6.2d, v26.2d, #20 + xar V1.2D, V6.2D, V26.2D, #20 eor x1, x1, x13 - xar v6.2d, v9.2d, v29.2d, #44 + xar V6.2D, V9.2D, V29.2D, #44 eor x28, x28, x15 - xar v9.2d, v22.2d, v27.2d, #3 + xar V9.2D, V22.2D, V27.2D, #3 eor x1, x1, x19 - xar v22.2d, v14.2d, v29.2d, #25 + xar V22.2D, V14.2D, V29.2D, #25 eor x28, x28, x21 - xar v14.2d, v20.2d, v25.2d, #46 + xar V14.2D, V20.2D, V25.2D, #46 eor x1, x1, x24 - xar v20.2d, v2.2d, v27.2d, #2 + xar V20.2D, V2.2D, V27.2D, #2 eor x28, x28, x26 - xar v2.2d, v12.2d, v27.2d, #21 + xar V2.2D, V12.2D, V27.2D, #21 eor x0, x0, x1, ror 63 - xar v12.2d, v13.2d, v28.2d, #39 + xar V12.2D, V13.2D, V28.2D, #39 eor x1, x1, x28, ror 63 - xar v13.2d, v19.2d, v29.2d, #56 + xar V13.2D, V19.2D, V29.2D, #56 eor x2, x2, x0 - xar v19.2d, v23.2d, v28.2d, #8 + xar V19.2D, V23.2D, V28.2D, #8 eor x7, x7, x0 - xar v23.2d, v15.2d, v25.2d, #23 + xar V23.2D, V15.2D, V25.2D, #23 eor x12, x12, x0 - xar v15.2d, v4.2d, v29.2d, #37 + xar V15.2D, V4.2D, V29.2D, #37 eor x17, x17, x0 - xar v4.2d, v24.2d, v29.2d, #50 + xar V4.2D, V24.2D, V29.2D, #50 eor x23, x23, x0 - xar v24.2d, v21.2d, v26.2d, #62 + xar V24.2D, V21.2D, V26.2D, #62 eor x4, x4, x1 - xar v21.2d, v8.2d, v28.2d, #9 + xar V21.2D, V8.2D, V28.2D, #9 eor x9, x9, x1 - xar v8.2d, v16.2d, v26.2d, #19 + xar V8.2D, V16.2D, V26.2D, #19 eor x14, x14, x1 - xar v16.2d, v5.2d, v25.2d, #28 + xar V16.2D, V5.2D, V25.2D, #28 eor x20, x20, x1 - xar v5.2d, v3.2d, v28.2d, #36 + xar V5.2D, V3.2D, V28.2D, #36 eor x25, x25, x1 - xar v3.2d, v18.2d, v28.2d, #43 + xar V3.2D, V18.2D, V28.2D, #43 ldr x0, [x29, #32] - xar v18.2d, v17.2d, v27.2d, #49 + xar V18.2D, V17.2D, V27.2D, #49 ldr x1, [x29, #24] - xar v17.2d, v11.2d, v26.2d, #54 + xar V17.2D, V11.2D, V26.2D, #54 eor x28, x28, x30, ror 63 - xar v11.2d, v7.2d, v27.2d, #58 + xar V11.2D, V7.2D, V27.2D, #58 eor x30, x30, x1, ror 63 - xar v7.2d, v10.2d, v25.2d, #61 + xar V7.2D, V10.2D, V25.2D, #61 eor x1, x1, x0, ror 63 ; Row Mix - mov v25.16b, v0.16b + mov V25.16B, V0.16B eor x6, x6, x28 - mov v26.16b, v1.16b + mov V26.16B, V1.16B eor x11, x11, x28 - bcax v0.16b, v25.16b, v2.16b, v26.16b + bcax V0.16B, V25.16B, V2.16B, V26.16B eor x16, x16, x28 - bcax v1.16b, v26.16b, v3.16b, v2.16b + bcax V1.16B, V26.16B, V3.16B, V2.16B eor x22, x22, x28 - bcax v2.16b, v2.16b, v4.16b, v3.16b + bcax V2.16B, V2.16B, V4.16B, V3.16B eor x27, x27, x28 - bcax v3.16b, v3.16b, v25.16b, v4.16b + bcax V3.16B, V3.16B, V25.16B, V4.16B eor x3, x3, x30 - bcax v4.16b, v4.16b, v26.16b, v25.16b + bcax V4.16B, V4.16B, V26.16B, V25.16B eor x8, x8, x30 - mov v25.16b, v5.16b + mov V25.16B, V5.16B eor x13, x13, x30 - mov v26.16b, v6.16b + mov V26.16B, V6.16B eor x19, x19, x30 - bcax v5.16b, v25.16b, v7.16b, v26.16b + bcax V5.16B, V25.16B, V7.16B, V26.16B eor x24, x24, x30 - bcax v6.16b, v26.16b, v8.16b, v7.16b + bcax V6.16B, V26.16B, V8.16B, V7.16B eor x5, x5, x1 - bcax v7.16b, v7.16b, v9.16b, v8.16b + bcax V7.16B, V7.16B, V9.16B, V8.16B eor x10, x10, x1 - bcax v8.16b, v8.16b, v25.16b, v9.16b + bcax V8.16B, V8.16B, V25.16B, V9.16B eor x15, x15, x1 - bcax v9.16b, v9.16b, v26.16b, v25.16b + bcax V9.16B, V9.16B, V26.16B, V25.16B eor x21, x21, x1 - mov v26.16b, v11.16b + mov V26.16B, V11.16B eor x26, x26, x1 ; Swap Rotate Base - bcax v10.16b, v30.16b, v12.16b, v26.16b + bcax V10.16B, V30.16B, V12.16B, V26.16B ror x0, x3, #63 - bcax v11.16b, v26.16b, v13.16b, v12.16b + bcax V11.16B, V26.16B, V13.16B, V12.16B ror x3, x8, #20 - bcax v12.16b, v12.16b, v14.16b, v13.16b + bcax V12.16B, V12.16B, V14.16B, V13.16B ror x8, x11, #44 - bcax v13.16b, v13.16b, v30.16b, v14.16b + bcax V13.16B, V13.16B, V30.16B, V14.16B ror x11, x25, #3 - bcax v14.16b, v14.16b, v26.16b, v30.16b + bcax V14.16B, V14.16B, V26.16B, V30.16B ror x25, x16, #25 - mov v25.16b, v15.16b + mov V25.16B, V15.16B ror x16, x23, #46 - mov v26.16b, v16.16b + mov V26.16B, V16.16B ror x23, x4, #2 - bcax v15.16b, v25.16b, v17.16b, v26.16b + bcax V15.16B, V25.16B, V17.16B, V26.16B ror x4, x14, #21 - bcax v16.16b, v26.16b, v18.16b, v17.16b + bcax V16.16B, V26.16B, V18.16B, V17.16B ror x14, x15, #39 - bcax v17.16b, v17.16b, v19.16b, v18.16b + bcax V17.16B, V17.16B, V19.16B, V18.16B ror x15, x22, #56 - bcax v18.16b, v18.16b, v25.16b, v19.16b + bcax V18.16B, V18.16B, V25.16B, V19.16B ror x22, x26, #8 - bcax v19.16b, v19.16b, v26.16b, v25.16b + bcax V19.16B, V19.16B, V26.16B, V25.16B ror x26, x17, #23 - mov v25.16b, v20.16b + mov V25.16B, V20.16B ror x17, x6, #37 - mov v26.16b, v21.16b + mov V26.16B, V21.16B ror x6, x27, #50 - bcax v20.16b, v25.16b, v22.16b, v26.16b + bcax V20.16B, V25.16B, V22.16B, V26.16B ror x27, x24, #62 - bcax v21.16b, v26.16b, v23.16b, v22.16b + bcax V21.16B, V26.16B, V23.16B, V22.16B ror x24, x10, #9 - bcax v22.16b, v22.16b, v24.16b, v23.16b + bcax V22.16B, V22.16B, V24.16B, V23.16B ror x10, x19, #19 - bcax v23.16b, v23.16b, v25.16b, v24.16b + bcax V23.16B, V23.16B, V25.16B, V24.16B ror x19, x7, #28 - bcax v24.16b, v24.16b, v26.16b, v25.16b + bcax V24.16B, V24.16B, V26.16B, V25.16B ror x7, x5, #36 ror x5, x21, #43 ror x21, x20, #49 @@ -9811,27 +9811,27 @@ L_SHA3_shake128_blocksx3_seed_neon_begin ldp x28, x1, [x29, #48] ldr x0, [x28], #8 subs x1, x1, #1 - mov v30.d[0], x0 - mov v30.d[1], x0 + mov V30.D[0], x0 + mov V30.D[1], x0 eor x2, x2, x0 - eor v0.16b, v0.16b, v30.16b + eor V0.16B, V0.16B, V30.16B bne L_SHA3_shake128_blocksx3_seed_neon_begin ldr x0, [x29, #40] - st4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - st1 {v24.d}[0], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + st1 {V24.D}[0], [x0] add x0, x0, #8 - st4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[1], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[1], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[1], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[1], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[1], [x0], #32 - st1 {v24.d}[1], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[1], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[1], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[1], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[1], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[1], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[1], [x0], #32 + st1 {V24.D}[1], [x0] add x0, x0, #8 stp x2, x3, [x0] stp x4, x5, [x0, #16] @@ -9852,10 +9852,10 @@ L_SHA3_shake128_blocksx3_seed_neon_begin ldp x24, x25, [x29, #120] ldp x26, x27, [x29, #136] ldr x28, [x29, #152] - ldp d8, d9, [x29, #160] - ldp d10, d11, [x29, #176] - ldp d12, d13, [x29, #192] - ldp d14, d15, [x29, #208] + ldp D8, D9, [x29, #160] + ldp D10, D11, [x29, #176] + ldp D12, D13, [x29, #192] + ldp D14, D15, [x29, #208] ldp x29, x30, [sp], #0xe0 ret ENDP @@ -9871,217 +9871,217 @@ mlkem_shake256_blocksx3_seed_neon PROC stp x24, x25, [x29, #120] stp x26, x27, [x29, #136] str x28, [x29, #152] - stp d8, d9, [x29, #160] - stp d10, d11, [x29, #176] - stp d12, d13, [x29, #192] - stp d14, d15, [x29, #208] + stp D8, D9, [x29, #160] + stp D10, D11, [x29, #176] + stp D12, D13, [x29, #192] + stp D14, D15, [x29, #208] adrp x28, L_sha3_aarch64_r add x28, x28, L_sha3_aarch64_r str x0, [x29, #40] add x0, x0, #32 - ld1 {v4.d}[0], [x0] + ld1 {V4.D}[0], [x0] ldp x2, x3, [x1], #16 add x0, x0, #0xc8 - ld1 {v4.d}[1], [x0] + ld1 {V4.D}[1], [x0] ldp x4, x5, [x1], #16 ldr x6, [x0, #200] - eor v5.16b, v5.16b, v5.16b + eor V5.16B, V5.16B, V5.16B eor x7, x7, x7 - eor v6.16b, v6.16b, v6.16b + eor V6.16B, V6.16B, V6.16B eor x8, x8, x8 - eor v7.16b, v7.16b, v7.16b + eor V7.16B, V7.16B, V7.16B eor x9, x9, x9 - eor v8.16b, v8.16b, v8.16b + eor V8.16B, V8.16B, V8.16B eor x10, x10, x10 - eor v9.16b, v9.16b, v9.16b + eor V9.16B, V9.16B, V9.16B eor x11, x11, x11 - eor v10.16b, v10.16b, v10.16b + eor V10.16B, V10.16B, V10.16B eor x12, x12, x12 - eor v11.16b, v11.16b, v11.16b + eor V11.16B, V11.16B, V11.16B eor x13, x13, x13 - eor v12.16b, v12.16b, v12.16b + eor V12.16B, V12.16B, V12.16B eor x14, x14, x14 - eor v13.16b, v13.16b, v13.16b + eor V13.16B, V13.16B, V13.16B eor x15, x15, x15 - eor v14.16b, v14.16b, v14.16b + eor V14.16B, V14.16B, V14.16B eor x16, x16, x16 - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B eor x17, x17, x17 movz x19, #0x8000, lsl 48 - eor v17.16b, v17.16b, v17.16b + eor V17.16B, V17.16B, V17.16B eor x20, x20, x20 - eor v18.16b, v18.16b, v18.16b + eor V18.16B, V18.16B, V18.16B eor x21, x21, x21 - eor v19.16b, v19.16b, v19.16b + eor V19.16B, V19.16B, V19.16B eor x22, x22, x22 - eor v20.16b, v20.16b, v20.16b + eor V20.16B, V20.16B, V20.16B eor x23, x23, x23 - eor v21.16b, v21.16b, v21.16b + eor V21.16B, V21.16B, V21.16B eor x24, x24, x24 - eor v22.16b, v22.16b, v22.16b + eor V22.16B, V22.16B, V22.16B eor x25, x25, x25 - eor v23.16b, v23.16b, v23.16b + eor V23.16B, V23.16B, V23.16B eor x26, x26, x26 - eor v24.16b, v24.16b, v24.16b + eor V24.16B, V24.16B, V24.16B eor x27, x27, x27 - dup v0.2d, x2 - dup v1.2d, x3 - dup v2.2d, x4 - dup v3.2d, x5 - dup v16.2d, x19 + dup V0.2D, x2 + dup V1.2D, x3 + dup V2.2D, x4 + dup V3.2D, x5 + dup V16.2D, x19 mov x1, #24 ; Start of 24 rounds L_SHA3_shake256_blocksx3_seed_neon_begin stp x28, x1, [x29, #48] ; Col Mix - eor3 v31.16b, v0.16b, v5.16b, v10.16b + eor3 V31.16B, V0.16B, V5.16B, V10.16B eor x0, x6, x11 - eor3 v27.16b, v1.16b, v6.16b, v11.16b + eor3 V27.16B, V1.16B, V6.16B, V11.16B eor x30, x2, x7 - eor3 v28.16b, v2.16b, v7.16b, v12.16b + eor3 V28.16B, V2.16B, V7.16B, V12.16B eor x28, x4, x9 - eor3 v29.16b, v3.16b, v8.16b, v13.16b + eor3 V29.16B, V3.16B, V8.16B, V13.16B eor x0, x0, x16 - eor3 v30.16b, v4.16b, v9.16b, v14.16b + eor3 V30.16B, V4.16B, V9.16B, V14.16B eor x30, x30, x12 - eor3 v31.16b, v31.16b, v15.16b, v20.16b + eor3 V31.16B, V31.16B, V15.16B, V20.16B eor x28, x28, x14 - eor3 v27.16b, v27.16b, v16.16b, v21.16b + eor3 V27.16B, V27.16B, V16.16B, V21.16B eor x0, x0, x22 - eor3 v28.16b, v28.16b, v17.16b, v22.16b + eor3 V28.16B, V28.16B, V17.16B, V22.16B eor x30, x30, x17 - eor3 v29.16b, v29.16b, v18.16b, v23.16b + eor3 V29.16B, V29.16B, V18.16B, V23.16B eor x28, x28, x20 - eor3 v30.16b, v30.16b, v19.16b, v24.16b + eor3 V30.16B, V30.16B, V19.16B, V24.16B eor x0, x0, x27 - rax1 v25.2d, v30.2d, v27.2d + rax1 V25.2D, V30.2D, V27.2D eor x30, x30, x23 - rax1 v26.2d, v31.2d, v28.2d + rax1 V26.2D, V31.2D, V28.2D eor x28, x28, x25 - rax1 v27.2d, v27.2d, v29.2d + rax1 V27.2D, V27.2D, V29.2D str x0, [x29, #32] - rax1 v28.2d, v28.2d, v30.2d + rax1 V28.2D, V28.2D, V30.2D str x28, [x29, #24] - rax1 v29.2d, v29.2d, v31.2d + rax1 V29.2D, V29.2D, V31.2D eor x1, x3, x8 - eor v0.16b, v0.16b, v25.16b - xar v30.2d, v1.2d, v26.2d, #63 + eor V0.16B, V0.16B, V25.16B + xar V30.2D, V1.2D, V26.2D, #63 eor x28, x5, x10 - xar v1.2d, v6.2d, v26.2d, #20 + xar V1.2D, V6.2D, V26.2D, #20 eor x1, x1, x13 - xar v6.2d, v9.2d, v29.2d, #44 + xar V6.2D, V9.2D, V29.2D, #44 eor x28, x28, x15 - xar v9.2d, v22.2d, v27.2d, #3 + xar V9.2D, V22.2D, V27.2D, #3 eor x1, x1, x19 - xar v22.2d, v14.2d, v29.2d, #25 + xar V22.2D, V14.2D, V29.2D, #25 eor x28, x28, x21 - xar v14.2d, v20.2d, v25.2d, #46 + xar V14.2D, V20.2D, V25.2D, #46 eor x1, x1, x24 - xar v20.2d, v2.2d, v27.2d, #2 + xar V20.2D, V2.2D, V27.2D, #2 eor x28, x28, x26 - xar v2.2d, v12.2d, v27.2d, #21 + xar V2.2D, V12.2D, V27.2D, #21 eor x0, x0, x1, ror 63 - xar v12.2d, v13.2d, v28.2d, #39 + xar V12.2D, V13.2D, V28.2D, #39 eor x1, x1, x28, ror 63 - xar v13.2d, v19.2d, v29.2d, #56 + xar V13.2D, V19.2D, V29.2D, #56 eor x2, x2, x0 - xar v19.2d, v23.2d, v28.2d, #8 + xar V19.2D, V23.2D, V28.2D, #8 eor x7, x7, x0 - xar v23.2d, v15.2d, v25.2d, #23 + xar V23.2D, V15.2D, V25.2D, #23 eor x12, x12, x0 - xar v15.2d, v4.2d, v29.2d, #37 + xar V15.2D, V4.2D, V29.2D, #37 eor x17, x17, x0 - xar v4.2d, v24.2d, v29.2d, #50 + xar V4.2D, V24.2D, V29.2D, #50 eor x23, x23, x0 - xar v24.2d, v21.2d, v26.2d, #62 + xar V24.2D, V21.2D, V26.2D, #62 eor x4, x4, x1 - xar v21.2d, v8.2d, v28.2d, #9 + xar V21.2D, V8.2D, V28.2D, #9 eor x9, x9, x1 - xar v8.2d, v16.2d, v26.2d, #19 + xar V8.2D, V16.2D, V26.2D, #19 eor x14, x14, x1 - xar v16.2d, v5.2d, v25.2d, #28 + xar V16.2D, V5.2D, V25.2D, #28 eor x20, x20, x1 - xar v5.2d, v3.2d, v28.2d, #36 + xar V5.2D, V3.2D, V28.2D, #36 eor x25, x25, x1 - xar v3.2d, v18.2d, v28.2d, #43 + xar V3.2D, V18.2D, V28.2D, #43 ldr x0, [x29, #32] - xar v18.2d, v17.2d, v27.2d, #49 + xar V18.2D, V17.2D, V27.2D, #49 ldr x1, [x29, #24] - xar v17.2d, v11.2d, v26.2d, #54 + xar V17.2D, V11.2D, V26.2D, #54 eor x28, x28, x30, ror 63 - xar v11.2d, v7.2d, v27.2d, #58 + xar V11.2D, V7.2D, V27.2D, #58 eor x30, x30, x1, ror 63 - xar v7.2d, v10.2d, v25.2d, #61 + xar V7.2D, V10.2D, V25.2D, #61 eor x1, x1, x0, ror 63 ; Row Mix - mov v25.16b, v0.16b + mov V25.16B, V0.16B eor x6, x6, x28 - mov v26.16b, v1.16b + mov V26.16B, V1.16B eor x11, x11, x28 - bcax v0.16b, v25.16b, v2.16b, v26.16b + bcax V0.16B, V25.16B, V2.16B, V26.16B eor x16, x16, x28 - bcax v1.16b, v26.16b, v3.16b, v2.16b + bcax V1.16B, V26.16B, V3.16B, V2.16B eor x22, x22, x28 - bcax v2.16b, v2.16b, v4.16b, v3.16b + bcax V2.16B, V2.16B, V4.16B, V3.16B eor x27, x27, x28 - bcax v3.16b, v3.16b, v25.16b, v4.16b + bcax V3.16B, V3.16B, V25.16B, V4.16B eor x3, x3, x30 - bcax v4.16b, v4.16b, v26.16b, v25.16b + bcax V4.16B, V4.16B, V26.16B, V25.16B eor x8, x8, x30 - mov v25.16b, v5.16b + mov V25.16B, V5.16B eor x13, x13, x30 - mov v26.16b, v6.16b + mov V26.16B, V6.16B eor x19, x19, x30 - bcax v5.16b, v25.16b, v7.16b, v26.16b + bcax V5.16B, V25.16B, V7.16B, V26.16B eor x24, x24, x30 - bcax v6.16b, v26.16b, v8.16b, v7.16b + bcax V6.16B, V26.16B, V8.16B, V7.16B eor x5, x5, x1 - bcax v7.16b, v7.16b, v9.16b, v8.16b + bcax V7.16B, V7.16B, V9.16B, V8.16B eor x10, x10, x1 - bcax v8.16b, v8.16b, v25.16b, v9.16b + bcax V8.16B, V8.16B, V25.16B, V9.16B eor x15, x15, x1 - bcax v9.16b, v9.16b, v26.16b, v25.16b + bcax V9.16B, V9.16B, V26.16B, V25.16B eor x21, x21, x1 - mov v26.16b, v11.16b + mov V26.16B, V11.16B eor x26, x26, x1 ; Swap Rotate Base - bcax v10.16b, v30.16b, v12.16b, v26.16b + bcax V10.16B, V30.16B, V12.16B, V26.16B ror x0, x3, #63 - bcax v11.16b, v26.16b, v13.16b, v12.16b + bcax V11.16B, V26.16B, V13.16B, V12.16B ror x3, x8, #20 - bcax v12.16b, v12.16b, v14.16b, v13.16b + bcax V12.16B, V12.16B, V14.16B, V13.16B ror x8, x11, #44 - bcax v13.16b, v13.16b, v30.16b, v14.16b + bcax V13.16B, V13.16B, V30.16B, V14.16B ror x11, x25, #3 - bcax v14.16b, v14.16b, v26.16b, v30.16b + bcax V14.16B, V14.16B, V26.16B, V30.16B ror x25, x16, #25 - mov v25.16b, v15.16b + mov V25.16B, V15.16B ror x16, x23, #46 - mov v26.16b, v16.16b + mov V26.16B, V16.16B ror x23, x4, #2 - bcax v15.16b, v25.16b, v17.16b, v26.16b + bcax V15.16B, V25.16B, V17.16B, V26.16B ror x4, x14, #21 - bcax v16.16b, v26.16b, v18.16b, v17.16b + bcax V16.16B, V26.16B, V18.16B, V17.16B ror x14, x15, #39 - bcax v17.16b, v17.16b, v19.16b, v18.16b + bcax V17.16B, V17.16B, V19.16B, V18.16B ror x15, x22, #56 - bcax v18.16b, v18.16b, v25.16b, v19.16b + bcax V18.16B, V18.16B, V25.16B, V19.16B ror x22, x26, #8 - bcax v19.16b, v19.16b, v26.16b, v25.16b + bcax V19.16B, V19.16B, V26.16B, V25.16B ror x26, x17, #23 - mov v25.16b, v20.16b + mov V25.16B, V20.16B ror x17, x6, #37 - mov v26.16b, v21.16b + mov V26.16B, V21.16B ror x6, x27, #50 - bcax v20.16b, v25.16b, v22.16b, v26.16b + bcax V20.16B, V25.16B, V22.16B, V26.16B ror x27, x24, #62 - bcax v21.16b, v26.16b, v23.16b, v22.16b + bcax V21.16B, V26.16B, V23.16B, V22.16B ror x24, x10, #9 - bcax v22.16b, v22.16b, v24.16b, v23.16b + bcax V22.16B, V22.16B, V24.16B, V23.16B ror x10, x19, #19 - bcax v23.16b, v23.16b, v25.16b, v24.16b + bcax V23.16B, V23.16B, V25.16B, V24.16B ror x19, x7, #28 - bcax v24.16b, v24.16b, v26.16b, v25.16b + bcax V24.16B, V24.16B, V26.16B, V25.16B ror x7, x5, #36 ror x5, x21, #43 ror x21, x20, #49 @@ -10143,27 +10143,27 @@ L_SHA3_shake256_blocksx3_seed_neon_begin ldp x28, x1, [x29, #48] ldr x0, [x28], #8 subs x1, x1, #1 - mov v30.d[0], x0 - mov v30.d[1], x0 + mov V30.D[0], x0 + mov V30.D[1], x0 eor x2, x2, x0 - eor v0.16b, v0.16b, v30.16b + eor V0.16B, V0.16B, V30.16B bne L_SHA3_shake256_blocksx3_seed_neon_begin ldr x0, [x29, #40] - st4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - st1 {v24.d}[0], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + st1 {V24.D}[0], [x0] add x0, x0, #8 - st4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[1], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[1], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[1], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[1], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[1], [x0], #32 - st1 {v24.d}[1], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[1], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[1], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[1], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[1], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[1], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[1], [x0], #32 + st1 {V24.D}[1], [x0] add x0, x0, #8 stp x2, x3, [x0] stp x4, x5, [x0, #16] @@ -10184,10 +10184,10 @@ L_SHA3_shake256_blocksx3_seed_neon_begin ldp x24, x25, [x29, #120] ldp x26, x27, [x29, #136] ldr x28, [x29, #152] - ldp d8, d9, [x29, #160] - ldp d10, d11, [x29, #176] - ldp d12, d13, [x29, #192] - ldp d14, d15, [x29, #208] + ldp D8, D9, [x29, #160] + ldp D10, D11, [x29, #176] + ldp D12, D13, [x29, #192] + ldp D14, D15, [x29, #208] ldp x29, x30, [sp], #0xe0 ret ENDP @@ -10204,28 +10204,28 @@ mlkem_sha3_blocksx3_neon PROC stp x24, x25, [x29, #120] stp x26, x27, [x29, #136] str x28, [x29, #152] - stp d8, d9, [x29, #160] - stp d10, d11, [x29, #176] - stp d12, d13, [x29, #192] - stp d14, d15, [x29, #208] + stp D8, D9, [x29, #160] + stp D10, D11, [x29, #176] + stp D12, D13, [x29, #192] + stp D14, D15, [x29, #208] adrp x27, L_sha3_aarch64_r add x27, x27, L_sha3_aarch64_r str x0, [x29, #40] - ld4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - ld4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - ld4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - ld4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - ld4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - ld4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - ld1 {v24.d}[0], [x0] + ld4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + ld4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + ld4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + ld4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + ld4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + ld4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + ld1 {V24.D}[0], [x0] add x0, x0, #8 - ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32 - ld4 {v4.d, v5.d, v6.d, v7.d}[1], [x0], #32 - ld4 {v8.d, v9.d, v10.d, v11.d}[1], [x0], #32 - ld4 {v12.d, v13.d, v14.d, v15.d}[1], [x0], #32 - ld4 {v16.d, v17.d, v18.d, v19.d}[1], [x0], #32 - ld4 {v20.d, v21.d, v22.d, v23.d}[1], [x0], #32 - ld1 {v24.d}[1], [x0] + ld4 {V0.D, V1.D, V2.D, V3.D}[1], [x0], #32 + ld4 {V4.D, V5.D, V6.D, V7.D}[1], [x0], #32 + ld4 {V8.D, V9.D, V10.D, V11.D}[1], [x0], #32 + ld4 {V12.D, V13.D, V14.D, V15.D}[1], [x0], #32 + ld4 {V16.D, V17.D, V18.D, V19.D}[1], [x0], #32 + ld4 {V20.D, V21.D, V22.D, V23.D}[1], [x0], #32 + ld1 {V24.D}[1], [x0] add x0, x0, #8 ldp x1, x2, [x0] ldp x3, x4, [x0, #16] @@ -10245,321 +10245,321 @@ mlkem_sha3_blocksx3_neon PROC L_SHA3_transform_blocksx3_neon_begin stp x27, x28, [x29, #48] ; Col Mix NEON - eor v30.16b, v4.16b, v9.16b + eor V30.16B, V4.16B, V9.16B eor x0, x5, x10 - eor v27.16b, v1.16b, v6.16b + eor V27.16B, V1.16B, V6.16B eor x30, x1, x6 - eor v30.16b, v30.16b, v14.16b + eor V30.16B, V30.16B, V14.16B eor x28, x3, x8 - eor v27.16b, v27.16b, v11.16b + eor V27.16B, V27.16B, V11.16B eor x0, x0, x15 - eor v30.16b, v30.16b, v19.16b + eor V30.16B, V30.16B, V19.16B eor x30, x30, x11 - eor v27.16b, v27.16b, v16.16b + eor V27.16B, V27.16B, V16.16B eor x28, x28, x13 - eor v30.16b, v30.16b, v24.16b + eor V30.16B, V30.16B, V24.16B eor x0, x0, x21 - eor v27.16b, v27.16b, v21.16b + eor V27.16B, V27.16B, V21.16B eor x30, x30, x16 - ushr v25.2d, v27.2d, #63 + ushr V25.2D, V27.2D, #63 eor x28, x28, x19 - sli v25.2d, v27.2d, #1 + sli V25.2D, V27.2D, #1 eor x0, x0, x26 - eor v25.16b, v25.16b, v30.16b + eor V25.16B, V25.16B, V30.16B eor x30, x30, x22 - eor v31.16b, v0.16b, v5.16b + eor V31.16B, V0.16B, V5.16B eor x28, x28, x24 - eor v28.16b, v2.16b, v7.16b + eor V28.16B, V2.16B, V7.16B str x0, [x29, #32] - eor v31.16b, v31.16b, v10.16b + eor V31.16B, V31.16B, V10.16B str x28, [x29, #24] - eor v28.16b, v28.16b, v12.16b + eor V28.16B, V28.16B, V12.16B eor x27, x2, x7 - eor v31.16b, v31.16b, v15.16b + eor V31.16B, V31.16B, V15.16B eor x28, x4, x9 - eor v28.16b, v28.16b, v17.16b + eor V28.16B, V28.16B, V17.16B eor x27, x27, x12 - eor v31.16b, v31.16b, v20.16b + eor V31.16B, V31.16B, V20.16B eor x28, x28, x14 - eor v28.16b, v28.16b, v22.16b + eor V28.16B, V28.16B, V22.16B eor x27, x27, x17 - ushr v29.2d, v30.2d, #63 + ushr V29.2D, V30.2D, #63 eor x28, x28, x20 - ushr v26.2d, v28.2d, #63 + ushr V26.2D, V28.2D, #63 eor x27, x27, x23 - sli v29.2d, v30.2d, #1 + sli V29.2D, V30.2D, #1 eor x28, x28, x25 - sli v26.2d, v28.2d, #1 + sli V26.2D, V28.2D, #1 eor x0, x0, x27, ror 63 - eor v28.16b, v28.16b, v29.16b + eor V28.16B, V28.16B, V29.16B eor x27, x27, x28, ror 63 - eor v29.16b, v3.16b, v8.16b + eor V29.16B, V3.16B, V8.16B eor x1, x1, x0 - eor v26.16b, v26.16b, v31.16b + eor V26.16B, V26.16B, V31.16B eor x6, x6, x0 - eor v29.16b, v29.16b, v13.16b + eor V29.16B, V29.16B, V13.16B eor x11, x11, x0 - eor v29.16b, v29.16b, v18.16b + eor V29.16B, V29.16B, V18.16B eor x16, x16, x0 - eor v29.16b, v29.16b, v23.16b + eor V29.16B, V29.16B, V23.16B eor x22, x22, x0 - ushr v30.2d, v29.2d, #63 + ushr V30.2D, V29.2D, #63 eor x3, x3, x27 - sli v30.2d, v29.2d, #1 + sli V30.2D, V29.2D, #1 eor x8, x8, x27 - eor v27.16b, v27.16b, v30.16b + eor V27.16B, V27.16B, V30.16B eor x13, x13, x27 - ushr v30.2d, v31.2d, #63 + ushr V30.2D, V31.2D, #63 eor x19, x19, x27 - sli v30.2d, v31.2d, #1 + sli V30.2D, V31.2D, #1 eor x24, x24, x27 - eor v29.16b, v29.16b, v30.16b + eor V29.16B, V29.16B, V30.16B ldr x0, [x29, #32] ; Swap Rotate NEON - eor v0.16b, v0.16b, v25.16b - eor v31.16b, v1.16b, v26.16b + eor V0.16B, V0.16B, V25.16B + eor V31.16B, V1.16B, V26.16B ldr x27, [x29, #24] - eor v6.16b, v6.16b, v26.16b + eor V6.16B, V6.16B, V26.16B eor x28, x28, x30, ror 63 - ushr v30.2d, v31.2d, #63 + ushr V30.2D, V31.2D, #63 eor x30, x30, x27, ror 63 - ushr v1.2d, v6.2d, #20 + ushr V1.2D, V6.2D, #20 eor x27, x27, x0, ror 63 - sli v30.2d, v31.2d, #1 + sli V30.2D, V31.2D, #1 eor x5, x5, x28 - sli v1.2d, v6.2d, #44 + sli V1.2D, V6.2D, #44 eor x10, x10, x28 - eor v31.16b, v9.16b, v29.16b + eor V31.16B, V9.16B, V29.16B eor x15, x15, x28 - eor v22.16b, v22.16b, v27.16b + eor V22.16B, V22.16B, V27.16B eor x21, x21, x28 - ushr v6.2d, v31.2d, #44 + ushr V6.2D, V31.2D, #44 eor x26, x26, x28 - ushr v9.2d, v22.2d, #3 + ushr V9.2D, V22.2D, #3 eor x2, x2, x30 - sli v6.2d, v31.2d, #20 + sli V6.2D, V31.2D, #20 eor x7, x7, x30 - sli v9.2d, v22.2d, #61 + sli V9.2D, V22.2D, #61 eor x12, x12, x30 - eor v31.16b, v14.16b, v29.16b + eor V31.16B, V14.16B, V29.16B eor x17, x17, x30 - eor v20.16b, v20.16b, v25.16b + eor V20.16B, V20.16B, V25.16B eor x23, x23, x30 - ushr v22.2d, v31.2d, #25 + ushr V22.2D, V31.2D, #25 eor x4, x4, x27 - ushr v14.2d, v20.2d, #46 + ushr V14.2D, V20.2D, #46 eor x9, x9, x27 - sli v22.2d, v31.2d, #39 + sli V22.2D, V31.2D, #39 eor x14, x14, x27 - sli v14.2d, v20.2d, #18 + sli V14.2D, V20.2D, #18 eor x20, x20, x27 - eor v31.16b, v2.16b, v27.16b + eor V31.16B, V2.16B, V27.16B eor x25, x25, x27 ; Swap Rotate Base - eor v12.16b, v12.16b, v27.16b + eor V12.16B, V12.16B, V27.16B ror x0, x2, #63 - ushr v20.2d, v31.2d, #2 + ushr V20.2D, V31.2D, #2 ror x2, x7, #20 - ushr v2.2d, v12.2d, #21 + ushr V2.2D, V12.2D, #21 ror x7, x10, #44 - sli v20.2d, v31.2d, #62 + sli V20.2D, V31.2D, #62 ror x10, x24, #3 - sli v2.2d, v12.2d, #43 + sli V2.2D, V12.2D, #43 ror x24, x15, #25 - eor v31.16b, v13.16b, v28.16b + eor V31.16B, V13.16B, V28.16B ror x15, x22, #46 - eor v19.16b, v19.16b, v29.16b + eor V19.16B, V19.16B, V29.16B ror x22, x3, #2 - ushr v12.2d, v31.2d, #39 + ushr V12.2D, V31.2D, #39 ror x3, x13, #21 - ushr v13.2d, v19.2d, #56 + ushr V13.2D, V19.2D, #56 ror x13, x14, #39 - sli v12.2d, v31.2d, #25 + sli V12.2D, V31.2D, #25 ror x14, x21, #56 - sli v13.2d, v19.2d, #8 + sli V13.2D, V19.2D, #8 ror x21, x25, #8 - eor v31.16b, v23.16b, v28.16b + eor V31.16B, V23.16B, V28.16B ror x25, x16, #23 - eor v15.16b, v15.16b, v25.16b + eor V15.16B, V15.16B, V25.16B ror x16, x5, #37 - ushr v19.2d, v31.2d, #8 + ushr V19.2D, V31.2D, #8 ror x5, x26, #50 - ushr v23.2d, v15.2d, #23 + ushr V23.2D, V15.2D, #23 ror x26, x23, #62 - sli v19.2d, v31.2d, #56 + sli V19.2D, V31.2D, #56 ror x23, x9, #9 - sli v23.2d, v15.2d, #41 + sli V23.2D, V15.2D, #41 ror x9, x17, #19 - eor v31.16b, v4.16b, v29.16b + eor V31.16B, V4.16B, V29.16B ror x17, x6, #28 - eor v24.16b, v24.16b, v29.16b + eor V24.16B, V24.16B, V29.16B ror x6, x4, #36 - ushr v15.2d, v31.2d, #37 + ushr V15.2D, V31.2D, #37 ror x4, x20, #43 - ushr v4.2d, v24.2d, #50 + ushr V4.2D, V24.2D, #50 ror x20, x19, #49 - sli v15.2d, v31.2d, #27 + sli V15.2D, V31.2D, #27 ror x19, x12, #54 - sli v4.2d, v24.2d, #14 + sli V4.2D, V24.2D, #14 ror x12, x8, #58 - eor v31.16b, v21.16b, v26.16b + eor V31.16B, V21.16B, V26.16B ror x8, x11, #61 ; Row Mix Base - eor v8.16b, v8.16b, v28.16b + eor V8.16B, V8.16B, V28.16B bic x11, x3, x2 - ushr v24.2d, v31.2d, #62 + ushr V24.2D, V31.2D, #62 bic x27, x4, x3 - ushr v21.2d, v8.2d, #9 + ushr V21.2D, V8.2D, #9 bic x28, x1, x5 - sli v24.2d, v31.2d, #2 + sli V24.2D, V31.2D, #2 bic x30, x2, x1 - sli v21.2d, v8.2d, #55 + sli V21.2D, V8.2D, #55 eor x1, x1, x11 - eor v31.16b, v16.16b, v26.16b + eor V31.16B, V16.16B, V26.16B eor x2, x2, x27 - eor v5.16b, v5.16b, v25.16b + eor V5.16B, V5.16B, V25.16B bic x11, x5, x4 - ushr v8.2d, v31.2d, #19 + ushr V8.2D, V31.2D, #19 eor x4, x4, x28 - ushr v16.2d, v5.2d, #28 + ushr V16.2D, V5.2D, #28 eor x3, x3, x11 - sli v8.2d, v31.2d, #45 + sli V8.2D, V31.2D, #45 eor x5, x5, x30 - sli v16.2d, v5.2d, #36 + sli V16.2D, V5.2D, #36 bic x11, x8, x7 - eor v31.16b, v3.16b, v28.16b + eor V31.16B, V3.16B, V28.16B bic x27, x9, x8 - eor v18.16b, v18.16b, v28.16b + eor V18.16B, V18.16B, V28.16B bic x28, x6, x10 - ushr v5.2d, v31.2d, #36 + ushr V5.2D, V31.2D, #36 bic x30, x7, x6 - ushr v3.2d, v18.2d, #43 + ushr V3.2D, V18.2D, #43 eor x6, x6, x11 - sli v5.2d, v31.2d, #28 + sli V5.2D, V31.2D, #28 eor x7, x7, x27 - sli v3.2d, v18.2d, #21 + sli V3.2D, V18.2D, #21 bic x11, x10, x9 - eor v31.16b, v17.16b, v27.16b + eor V31.16B, V17.16B, V27.16B eor x9, x9, x28 - eor v11.16b, v11.16b, v26.16b + eor V11.16B, V11.16B, V26.16B eor x8, x8, x11 - ushr v18.2d, v31.2d, #49 + ushr V18.2D, V31.2D, #49 eor x10, x10, x30 - ushr v17.2d, v11.2d, #54 + ushr V17.2D, V11.2D, #54 bic x11, x13, x12 - sli v18.2d, v31.2d, #15 + sli V18.2D, V31.2D, #15 bic x27, x14, x13 - sli v17.2d, v11.2d, #10 + sli V17.2D, V11.2D, #10 bic x28, x0, x15 - eor v31.16b, v7.16b, v27.16b + eor V31.16B, V7.16B, V27.16B bic x30, x12, x0 - eor v10.16b, v10.16b, v25.16b + eor V10.16B, V10.16B, V25.16B eor x11, x0, x11 - ushr v11.2d, v31.2d, #58 + ushr V11.2D, V31.2D, #58 eor x12, x12, x27 - ushr v7.2d, v10.2d, #61 + ushr V7.2D, V10.2D, #61 bic x0, x15, x14 - sli v11.2d, v31.2d, #6 + sli V11.2D, V31.2D, #6 eor x14, x14, x28 - sli v7.2d, v10.2d, #3 + sli V7.2D, V10.2D, #3 eor x13, x13, x0 ; Row Mix NEON - bic v25.16b, v2.16b, v1.16b + bic V25.16B, V2.16B, V1.16B eor x15, x15, x30 - bic v26.16b, v3.16b, v2.16b + bic V26.16B, V3.16B, V2.16B bic x0, x19, x17 - bic v27.16b, v4.16b, v3.16b + bic V27.16B, V4.16B, V3.16B bic x27, x20, x19 - bic v28.16b, v0.16b, v4.16b + bic V28.16B, V0.16B, V4.16B bic x28, x16, x21 - bic v29.16b, v1.16b, v0.16b + bic V29.16B, V1.16B, V0.16B bic x30, x17, x16 - eor v0.16b, v0.16b, v25.16b + eor V0.16B, V0.16B, V25.16B eor x16, x16, x0 - eor v1.16b, v1.16b, v26.16b + eor V1.16B, V1.16B, V26.16B eor x17, x17, x27 - eor v2.16b, v2.16b, v27.16b + eor V2.16B, V2.16B, V27.16B bic x0, x21, x20 - eor v3.16b, v3.16b, v28.16b + eor V3.16B, V3.16B, V28.16B eor x20, x20, x28 - eor v4.16b, v4.16b, v29.16b + eor V4.16B, V4.16B, V29.16B eor x19, x19, x0 - bic v25.16b, v7.16b, v6.16b + bic V25.16B, V7.16B, V6.16B eor x21, x21, x30 - bic v26.16b, v8.16b, v7.16b + bic V26.16B, V8.16B, V7.16B bic x0, x24, x23 - bic v27.16b, v9.16b, v8.16b + bic V27.16B, V9.16B, V8.16B bic x27, x25, x24 - bic v28.16b, v5.16b, v9.16b + bic V28.16B, V5.16B, V9.16B bic x28, x22, x26 - bic v29.16b, v6.16b, v5.16b + bic V29.16B, V6.16B, V5.16B bic x30, x23, x22 - eor v5.16b, v5.16b, v25.16b + eor V5.16B, V5.16B, V25.16B eor x22, x22, x0 - eor v6.16b, v6.16b, v26.16b + eor V6.16B, V6.16B, V26.16B eor x23, x23, x27 - eor v7.16b, v7.16b, v27.16b + eor V7.16B, V7.16B, V27.16B bic x0, x26, x25 - eor v8.16b, v8.16b, v28.16b + eor V8.16B, V8.16B, V28.16B eor x25, x25, x28 - eor v9.16b, v9.16b, v29.16b + eor V9.16B, V9.16B, V29.16B eor x24, x24, x0 - bic v25.16b, v12.16b, v11.16b + bic V25.16B, V12.16B, V11.16B eor x26, x26, x30 - bic v26.16b, v13.16b, v12.16b - bic v27.16b, v14.16b, v13.16b - bic v28.16b, v30.16b, v14.16b - bic v29.16b, v11.16b, v30.16b - eor v10.16b, v30.16b, v25.16b - eor v11.16b, v11.16b, v26.16b - eor v12.16b, v12.16b, v27.16b - eor v13.16b, v13.16b, v28.16b - eor v14.16b, v14.16b, v29.16b - bic v25.16b, v17.16b, v16.16b - bic v26.16b, v18.16b, v17.16b - bic v27.16b, v19.16b, v18.16b - bic v28.16b, v15.16b, v19.16b - bic v29.16b, v16.16b, v15.16b - eor v15.16b, v15.16b, v25.16b - eor v16.16b, v16.16b, v26.16b - eor v17.16b, v17.16b, v27.16b - eor v18.16b, v18.16b, v28.16b - eor v19.16b, v19.16b, v29.16b - bic v25.16b, v22.16b, v21.16b - bic v26.16b, v23.16b, v22.16b - bic v27.16b, v24.16b, v23.16b - bic v28.16b, v20.16b, v24.16b - bic v29.16b, v21.16b, v20.16b - eor v20.16b, v20.16b, v25.16b - eor v21.16b, v21.16b, v26.16b - eor v22.16b, v22.16b, v27.16b - eor v23.16b, v23.16b, v28.16b - eor v24.16b, v24.16b, v29.16b + bic V26.16B, V13.16B, V12.16B + bic V27.16B, V14.16B, V13.16B + bic V28.16B, V30.16B, V14.16B + bic V29.16B, V11.16B, V30.16B + eor V10.16B, V30.16B, V25.16B + eor V11.16B, V11.16B, V26.16B + eor V12.16B, V12.16B, V27.16B + eor V13.16B, V13.16B, V28.16B + eor V14.16B, V14.16B, V29.16B + bic V25.16B, V17.16B, V16.16B + bic V26.16B, V18.16B, V17.16B + bic V27.16B, V19.16B, V18.16B + bic V28.16B, V15.16B, V19.16B + bic V29.16B, V16.16B, V15.16B + eor V15.16B, V15.16B, V25.16B + eor V16.16B, V16.16B, V26.16B + eor V17.16B, V17.16B, V27.16B + eor V18.16B, V18.16B, V28.16B + eor V19.16B, V19.16B, V29.16B + bic V25.16B, V22.16B, V21.16B + bic V26.16B, V23.16B, V22.16B + bic V27.16B, V24.16B, V23.16B + bic V28.16B, V20.16B, V24.16B + bic V29.16B, V21.16B, V20.16B + eor V20.16B, V20.16B, V25.16B + eor V21.16B, V21.16B, V26.16B + eor V22.16B, V22.16B, V27.16B + eor V23.16B, V23.16B, V28.16B + eor V24.16B, V24.16B, V29.16B ; Done transforming ldp x27, x28, [x29, #48] ldr x0, [x27], #8 subs x28, x28, #1 - mov v30.d[0], x0 - mov v30.d[1], x0 + mov V30.D[0], x0 + mov V30.D[1], x0 eor x1, x1, x0 - eor v0.16b, v0.16b, v30.16b + eor V0.16B, V0.16B, V30.16B bne L_SHA3_transform_blocksx3_neon_begin ldr x0, [x29, #40] - st4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - st1 {v24.d}[0], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + st1 {V24.D}[0], [x0] add x0, x0, #8 - st4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[1], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[1], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[1], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[1], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[1], [x0], #32 - st1 {v24.d}[1], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[1], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[1], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[1], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[1], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[1], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[1], [x0], #32 + st1 {V24.D}[1], [x0] add x0, x0, #8 stp x1, x2, [x0] stp x3, x4, [x0, #16] @@ -10580,10 +10580,10 @@ L_SHA3_transform_blocksx3_neon_begin ldp x24, x25, [x29, #120] ldp x26, x27, [x29, #136] ldr x28, [x29, #152] - ldp d8, d9, [x29, #160] - ldp d10, d11, [x29, #176] - ldp d12, d13, [x29, #192] - ldp d14, d15, [x29, #208] + ldp D8, D9, [x29, #160] + ldp D10, D11, [x29, #176] + ldp D12, D13, [x29, #192] + ldp D14, D15, [x29, #208] ldp x29, x30, [sp], #0xe0 ret ENDP @@ -10599,384 +10599,384 @@ mlkem_shake128_blocksx3_seed_neon PROC stp x24, x25, [x29, #120] stp x26, x27, [x29, #136] str x28, [x29, #152] - stp d8, d9, [x29, #160] - stp d10, d11, [x29, #176] - stp d12, d13, [x29, #192] - stp d14, d15, [x29, #208] + stp D8, D9, [x29, #160] + stp D10, D11, [x29, #176] + stp D12, D13, [x29, #192] + stp D14, D15, [x29, #208] adrp x28, L_sha3_aarch64_r add x28, x28, L_sha3_aarch64_r str x0, [x29, #40] add x0, x0, #32 - ld1 {v4.d}[0], [x0] + ld1 {V4.D}[0], [x0] ldp x2, x3, [x1], #16 add x0, x0, #0xc8 - ld1 {v4.d}[1], [x0] + ld1 {V4.D}[1], [x0] ldp x4, x5, [x1], #16 ldr x6, [x0, #200] - eor v5.16b, v5.16b, v5.16b + eor V5.16B, V5.16B, V5.16B eor x7, x7, x7 - eor v6.16b, v6.16b, v6.16b + eor V6.16B, V6.16B, V6.16B eor x8, x8, x8 - eor v7.16b, v7.16b, v7.16b + eor V7.16B, V7.16B, V7.16B eor x9, x9, x9 - eor v8.16b, v8.16b, v8.16b + eor V8.16B, V8.16B, V8.16B eor x10, x10, x10 - eor v9.16b, v9.16b, v9.16b + eor V9.16B, V9.16B, V9.16B eor x11, x11, x11 - eor v10.16b, v10.16b, v10.16b + eor V10.16B, V10.16B, V10.16B eor x12, x12, x12 - eor v11.16b, v11.16b, v11.16b + eor V11.16B, V11.16B, V11.16B eor x13, x13, x13 - eor v12.16b, v12.16b, v12.16b + eor V12.16B, V12.16B, V12.16B eor x14, x14, x14 - eor v13.16b, v13.16b, v13.16b + eor V13.16B, V13.16B, V13.16B eor x15, x15, x15 - eor v14.16b, v14.16b, v14.16b + eor V14.16B, V14.16B, V14.16B eor x16, x16, x16 - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B eor x17, x17, x17 - eor v16.16b, v16.16b, v16.16b + eor V16.16B, V16.16B, V16.16B eor x19, x19, x19 - eor v17.16b, v17.16b, v17.16b + eor V17.16B, V17.16B, V17.16B eor x20, x20, x20 - eor v18.16b, v18.16b, v18.16b + eor V18.16B, V18.16B, V18.16B eor x21, x21, x21 - eor v19.16b, v19.16b, v19.16b + eor V19.16B, V19.16B, V19.16B eor x22, x22, x22 movz x23, #0x8000, lsl 48 - eor v21.16b, v21.16b, v21.16b + eor V21.16B, V21.16B, V21.16B eor x24, x24, x24 - eor v22.16b, v22.16b, v22.16b + eor V22.16B, V22.16B, V22.16B eor x25, x25, x25 - eor v23.16b, v23.16b, v23.16b + eor V23.16B, V23.16B, V23.16B eor x26, x26, x26 - eor v24.16b, v24.16b, v24.16b + eor V24.16B, V24.16B, V24.16B eor x27, x27, x27 - dup v0.2d, x2 - dup v1.2d, x3 - dup v2.2d, x4 - dup v3.2d, x5 - dup v20.2d, x23 + dup V0.2D, x2 + dup V1.2D, x3 + dup V2.2D, x4 + dup V3.2D, x5 + dup V20.2D, x23 mov x1, #24 ; Start of 24 rounds L_SHA3_shake128_blocksx3_seed_neon_begin stp x28, x1, [x29, #48] ; Col Mix NEON - eor v30.16b, v4.16b, v9.16b + eor V30.16B, V4.16B, V9.16B eor x0, x6, x11 - eor v27.16b, v1.16b, v6.16b + eor V27.16B, V1.16B, V6.16B eor x30, x2, x7 - eor v30.16b, v30.16b, v14.16b + eor V30.16B, V30.16B, V14.16B eor x28, x4, x9 - eor v27.16b, v27.16b, v11.16b + eor V27.16B, V27.16B, V11.16B eor x0, x0, x16 - eor v30.16b, v30.16b, v19.16b + eor V30.16B, V30.16B, V19.16B eor x30, x30, x12 - eor v27.16b, v27.16b, v16.16b + eor V27.16B, V27.16B, V16.16B eor x28, x28, x14 - eor v30.16b, v30.16b, v24.16b + eor V30.16B, V30.16B, V24.16B eor x0, x0, x22 - eor v27.16b, v27.16b, v21.16b + eor V27.16B, V27.16B, V21.16B eor x30, x30, x17 - ushr v25.2d, v27.2d, #63 + ushr V25.2D, V27.2D, #63 eor x28, x28, x20 - sli v25.2d, v27.2d, #1 + sli V25.2D, V27.2D, #1 eor x0, x0, x27 - eor v25.16b, v25.16b, v30.16b + eor V25.16B, V25.16B, V30.16B eor x30, x30, x23 - eor v31.16b, v0.16b, v5.16b + eor V31.16B, V0.16B, V5.16B eor x28, x28, x25 - eor v28.16b, v2.16b, v7.16b + eor V28.16B, V2.16B, V7.16B str x0, [x29, #32] - eor v31.16b, v31.16b, v10.16b + eor V31.16B, V31.16B, V10.16B str x28, [x29, #24] - eor v28.16b, v28.16b, v12.16b + eor V28.16B, V28.16B, V12.16B eor x1, x3, x8 - eor v31.16b, v31.16b, v15.16b + eor V31.16B, V31.16B, V15.16B eor x28, x5, x10 - eor v28.16b, v28.16b, v17.16b + eor V28.16B, V28.16B, V17.16B eor x1, x1, x13 - eor v31.16b, v31.16b, v20.16b + eor V31.16B, V31.16B, V20.16B eor x28, x28, x15 - eor v28.16b, v28.16b, v22.16b + eor V28.16B, V28.16B, V22.16B eor x1, x1, x19 - ushr v29.2d, v30.2d, #63 + ushr V29.2D, V30.2D, #63 eor x28, x28, x21 - ushr v26.2d, v28.2d, #63 + ushr V26.2D, V28.2D, #63 eor x1, x1, x24 - sli v29.2d, v30.2d, #1 + sli V29.2D, V30.2D, #1 eor x28, x28, x26 - sli v26.2d, v28.2d, #1 + sli V26.2D, V28.2D, #1 eor x0, x0, x1, ror 63 - eor v28.16b, v28.16b, v29.16b + eor V28.16B, V28.16B, V29.16B eor x1, x1, x28, ror 63 - eor v29.16b, v3.16b, v8.16b + eor V29.16B, V3.16B, V8.16B eor x2, x2, x0 - eor v26.16b, v26.16b, v31.16b + eor V26.16B, V26.16B, V31.16B eor x7, x7, x0 - eor v29.16b, v29.16b, v13.16b + eor V29.16B, V29.16B, V13.16B eor x12, x12, x0 - eor v29.16b, v29.16b, v18.16b + eor V29.16B, V29.16B, V18.16B eor x17, x17, x0 - eor v29.16b, v29.16b, v23.16b + eor V29.16B, V29.16B, V23.16B eor x23, x23, x0 - ushr v30.2d, v29.2d, #63 + ushr V30.2D, V29.2D, #63 eor x4, x4, x1 - sli v30.2d, v29.2d, #1 + sli V30.2D, V29.2D, #1 eor x9, x9, x1 - eor v27.16b, v27.16b, v30.16b + eor V27.16B, V27.16B, V30.16B eor x14, x14, x1 - ushr v30.2d, v31.2d, #63 + ushr V30.2D, V31.2D, #63 eor x20, x20, x1 - sli v30.2d, v31.2d, #1 + sli V30.2D, V31.2D, #1 eor x25, x25, x1 - eor v29.16b, v29.16b, v30.16b + eor V29.16B, V29.16B, V30.16B ldr x0, [x29, #32] ; Swap Rotate NEON - eor v0.16b, v0.16b, v25.16b - eor v31.16b, v1.16b, v26.16b + eor V0.16B, V0.16B, V25.16B + eor V31.16B, V1.16B, V26.16B ldr x1, [x29, #24] - eor v6.16b, v6.16b, v26.16b + eor V6.16B, V6.16B, V26.16B eor x28, x28, x30, ror 63 - ushr v30.2d, v31.2d, #63 + ushr V30.2D, V31.2D, #63 eor x30, x30, x1, ror 63 - ushr v1.2d, v6.2d, #20 + ushr V1.2D, V6.2D, #20 eor x1, x1, x0, ror 63 - sli v30.2d, v31.2d, #1 + sli V30.2D, V31.2D, #1 eor x6, x6, x28 - sli v1.2d, v6.2d, #44 + sli V1.2D, V6.2D, #44 eor x11, x11, x28 - eor v31.16b, v9.16b, v29.16b + eor V31.16B, V9.16B, V29.16B eor x16, x16, x28 - eor v22.16b, v22.16b, v27.16b + eor V22.16B, V22.16B, V27.16B eor x22, x22, x28 - ushr v6.2d, v31.2d, #44 + ushr V6.2D, V31.2D, #44 eor x27, x27, x28 - ushr v9.2d, v22.2d, #3 + ushr V9.2D, V22.2D, #3 eor x3, x3, x30 - sli v6.2d, v31.2d, #20 + sli V6.2D, V31.2D, #20 eor x8, x8, x30 - sli v9.2d, v22.2d, #61 + sli V9.2D, V22.2D, #61 eor x13, x13, x30 - eor v31.16b, v14.16b, v29.16b + eor V31.16B, V14.16B, V29.16B eor x19, x19, x30 - eor v20.16b, v20.16b, v25.16b + eor V20.16B, V20.16B, V25.16B eor x24, x24, x30 - ushr v22.2d, v31.2d, #25 + ushr V22.2D, V31.2D, #25 eor x5, x5, x1 - ushr v14.2d, v20.2d, #46 + ushr V14.2D, V20.2D, #46 eor x10, x10, x1 - sli v22.2d, v31.2d, #39 + sli V22.2D, V31.2D, #39 eor x15, x15, x1 - sli v14.2d, v20.2d, #18 + sli V14.2D, V20.2D, #18 eor x21, x21, x1 - eor v31.16b, v2.16b, v27.16b + eor V31.16B, V2.16B, V27.16B eor x26, x26, x1 ; Swap Rotate Base - eor v12.16b, v12.16b, v27.16b + eor V12.16B, V12.16B, V27.16B ror x0, x3, #63 - ushr v20.2d, v31.2d, #2 + ushr V20.2D, V31.2D, #2 ror x3, x8, #20 - ushr v2.2d, v12.2d, #21 + ushr V2.2D, V12.2D, #21 ror x8, x11, #44 - sli v20.2d, v31.2d, #62 + sli V20.2D, V31.2D, #62 ror x11, x25, #3 - sli v2.2d, v12.2d, #43 + sli V2.2D, V12.2D, #43 ror x25, x16, #25 - eor v31.16b, v13.16b, v28.16b + eor V31.16B, V13.16B, V28.16B ror x16, x23, #46 - eor v19.16b, v19.16b, v29.16b + eor V19.16B, V19.16B, V29.16B ror x23, x4, #2 - ushr v12.2d, v31.2d, #39 + ushr V12.2D, V31.2D, #39 ror x4, x14, #21 - ushr v13.2d, v19.2d, #56 + ushr V13.2D, V19.2D, #56 ror x14, x15, #39 - sli v12.2d, v31.2d, #25 + sli V12.2D, V31.2D, #25 ror x15, x22, #56 - sli v13.2d, v19.2d, #8 + sli V13.2D, V19.2D, #8 ror x22, x26, #8 - eor v31.16b, v23.16b, v28.16b + eor V31.16B, V23.16B, V28.16B ror x26, x17, #23 - eor v15.16b, v15.16b, v25.16b + eor V15.16B, V15.16B, V25.16B ror x17, x6, #37 - ushr v19.2d, v31.2d, #8 + ushr V19.2D, V31.2D, #8 ror x6, x27, #50 - ushr v23.2d, v15.2d, #23 + ushr V23.2D, V15.2D, #23 ror x27, x24, #62 - sli v19.2d, v31.2d, #56 + sli V19.2D, V31.2D, #56 ror x24, x10, #9 - sli v23.2d, v15.2d, #41 + sli V23.2D, V15.2D, #41 ror x10, x19, #19 - eor v31.16b, v4.16b, v29.16b + eor V31.16B, V4.16B, V29.16B ror x19, x7, #28 - eor v24.16b, v24.16b, v29.16b + eor V24.16B, V24.16B, V29.16B ror x7, x5, #36 - ushr v15.2d, v31.2d, #37 + ushr V15.2D, V31.2D, #37 ror x5, x21, #43 - ushr v4.2d, v24.2d, #50 + ushr V4.2D, V24.2D, #50 ror x21, x20, #49 - sli v15.2d, v31.2d, #27 + sli V15.2D, V31.2D, #27 ror x20, x13, #54 - sli v4.2d, v24.2d, #14 + sli V4.2D, V24.2D, #14 ror x13, x9, #58 - eor v31.16b, v21.16b, v26.16b + eor V31.16B, V21.16B, V26.16B ror x9, x12, #61 ; Row Mix Base - eor v8.16b, v8.16b, v28.16b + eor V8.16B, V8.16B, V28.16B bic x12, x4, x3 - ushr v24.2d, v31.2d, #62 + ushr V24.2D, V31.2D, #62 bic x1, x5, x4 - ushr v21.2d, v8.2d, #9 + ushr V21.2D, V8.2D, #9 bic x28, x2, x6 - sli v24.2d, v31.2d, #2 + sli V24.2D, V31.2D, #2 bic x30, x3, x2 - sli v21.2d, v8.2d, #55 + sli V21.2D, V8.2D, #55 eor x2, x2, x12 - eor v31.16b, v16.16b, v26.16b + eor V31.16B, V16.16B, V26.16B eor x3, x3, x1 - eor v5.16b, v5.16b, v25.16b + eor V5.16B, V5.16B, V25.16B bic x12, x6, x5 - ushr v8.2d, v31.2d, #19 + ushr V8.2D, V31.2D, #19 eor x5, x5, x28 - ushr v16.2d, v5.2d, #28 + ushr V16.2D, V5.2D, #28 eor x4, x4, x12 - sli v8.2d, v31.2d, #45 + sli V8.2D, V31.2D, #45 eor x6, x6, x30 - sli v16.2d, v5.2d, #36 + sli V16.2D, V5.2D, #36 bic x12, x9, x8 - eor v31.16b, v3.16b, v28.16b + eor V31.16B, V3.16B, V28.16B bic x1, x10, x9 - eor v18.16b, v18.16b, v28.16b + eor V18.16B, V18.16B, V28.16B bic x28, x7, x11 - ushr v5.2d, v31.2d, #36 + ushr V5.2D, V31.2D, #36 bic x30, x8, x7 - ushr v3.2d, v18.2d, #43 + ushr V3.2D, V18.2D, #43 eor x7, x7, x12 - sli v5.2d, v31.2d, #28 + sli V5.2D, V31.2D, #28 eor x8, x8, x1 - sli v3.2d, v18.2d, #21 + sli V3.2D, V18.2D, #21 bic x12, x11, x10 - eor v31.16b, v17.16b, v27.16b + eor V31.16B, V17.16B, V27.16B eor x10, x10, x28 - eor v11.16b, v11.16b, v26.16b + eor V11.16B, V11.16B, V26.16B eor x9, x9, x12 - ushr v18.2d, v31.2d, #49 + ushr V18.2D, V31.2D, #49 eor x11, x11, x30 - ushr v17.2d, v11.2d, #54 + ushr V17.2D, V11.2D, #54 bic x12, x14, x13 - sli v18.2d, v31.2d, #15 + sli V18.2D, V31.2D, #15 bic x1, x15, x14 - sli v17.2d, v11.2d, #10 + sli V17.2D, V11.2D, #10 bic x28, x0, x16 - eor v31.16b, v7.16b, v27.16b + eor V31.16B, V7.16B, V27.16B bic x30, x13, x0 - eor v10.16b, v10.16b, v25.16b + eor V10.16B, V10.16B, V25.16B eor x12, x0, x12 - ushr v11.2d, v31.2d, #58 + ushr V11.2D, V31.2D, #58 eor x13, x13, x1 - ushr v7.2d, v10.2d, #61 + ushr V7.2D, V10.2D, #61 bic x0, x16, x15 - sli v11.2d, v31.2d, #6 + sli V11.2D, V31.2D, #6 eor x15, x15, x28 - sli v7.2d, v10.2d, #3 + sli V7.2D, V10.2D, #3 eor x14, x14, x0 ; Row Mix NEON - bic v25.16b, v2.16b, v1.16b + bic V25.16B, V2.16B, V1.16B eor x16, x16, x30 - bic v26.16b, v3.16b, v2.16b + bic V26.16B, V3.16B, V2.16B bic x0, x20, x19 - bic v27.16b, v4.16b, v3.16b + bic V27.16B, V4.16B, V3.16B bic x1, x21, x20 - bic v28.16b, v0.16b, v4.16b + bic V28.16B, V0.16B, V4.16B bic x28, x17, x22 - bic v29.16b, v1.16b, v0.16b + bic V29.16B, V1.16B, V0.16B bic x30, x19, x17 - eor v0.16b, v0.16b, v25.16b + eor V0.16B, V0.16B, V25.16B eor x17, x17, x0 - eor v1.16b, v1.16b, v26.16b + eor V1.16B, V1.16B, V26.16B eor x19, x19, x1 - eor v2.16b, v2.16b, v27.16b + eor V2.16B, V2.16B, V27.16B bic x0, x22, x21 - eor v3.16b, v3.16b, v28.16b + eor V3.16B, V3.16B, V28.16B eor x21, x21, x28 - eor v4.16b, v4.16b, v29.16b + eor V4.16B, V4.16B, V29.16B eor x20, x20, x0 - bic v25.16b, v7.16b, v6.16b + bic V25.16B, V7.16B, V6.16B eor x22, x22, x30 - bic v26.16b, v8.16b, v7.16b + bic V26.16B, V8.16B, V7.16B bic x0, x25, x24 - bic v27.16b, v9.16b, v8.16b + bic V27.16B, V9.16B, V8.16B bic x1, x26, x25 - bic v28.16b, v5.16b, v9.16b + bic V28.16B, V5.16B, V9.16B bic x28, x23, x27 - bic v29.16b, v6.16b, v5.16b + bic V29.16B, V6.16B, V5.16B bic x30, x24, x23 - eor v5.16b, v5.16b, v25.16b + eor V5.16B, V5.16B, V25.16B eor x23, x23, x0 - eor v6.16b, v6.16b, v26.16b + eor V6.16B, V6.16B, V26.16B eor x24, x24, x1 - eor v7.16b, v7.16b, v27.16b + eor V7.16B, V7.16B, V27.16B bic x0, x27, x26 - eor v8.16b, v8.16b, v28.16b + eor V8.16B, V8.16B, V28.16B eor x26, x26, x28 - eor v9.16b, v9.16b, v29.16b + eor V9.16B, V9.16B, V29.16B eor x25, x25, x0 - bic v25.16b, v12.16b, v11.16b + bic V25.16B, V12.16B, V11.16B eor x27, x27, x30 - bic v26.16b, v13.16b, v12.16b - bic v27.16b, v14.16b, v13.16b - bic v28.16b, v30.16b, v14.16b - bic v29.16b, v11.16b, v30.16b - eor v10.16b, v30.16b, v25.16b - eor v11.16b, v11.16b, v26.16b - eor v12.16b, v12.16b, v27.16b - eor v13.16b, v13.16b, v28.16b - eor v14.16b, v14.16b, v29.16b - bic v25.16b, v17.16b, v16.16b - bic v26.16b, v18.16b, v17.16b - bic v27.16b, v19.16b, v18.16b - bic v28.16b, v15.16b, v19.16b - bic v29.16b, v16.16b, v15.16b - eor v15.16b, v15.16b, v25.16b - eor v16.16b, v16.16b, v26.16b - eor v17.16b, v17.16b, v27.16b - eor v18.16b, v18.16b, v28.16b - eor v19.16b, v19.16b, v29.16b - bic v25.16b, v22.16b, v21.16b - bic v26.16b, v23.16b, v22.16b - bic v27.16b, v24.16b, v23.16b - bic v28.16b, v20.16b, v24.16b - bic v29.16b, v21.16b, v20.16b - eor v20.16b, v20.16b, v25.16b - eor v21.16b, v21.16b, v26.16b - eor v22.16b, v22.16b, v27.16b - eor v23.16b, v23.16b, v28.16b - eor v24.16b, v24.16b, v29.16b + bic V26.16B, V13.16B, V12.16B + bic V27.16B, V14.16B, V13.16B + bic V28.16B, V30.16B, V14.16B + bic V29.16B, V11.16B, V30.16B + eor V10.16B, V30.16B, V25.16B + eor V11.16B, V11.16B, V26.16B + eor V12.16B, V12.16B, V27.16B + eor V13.16B, V13.16B, V28.16B + eor V14.16B, V14.16B, V29.16B + bic V25.16B, V17.16B, V16.16B + bic V26.16B, V18.16B, V17.16B + bic V27.16B, V19.16B, V18.16B + bic V28.16B, V15.16B, V19.16B + bic V29.16B, V16.16B, V15.16B + eor V15.16B, V15.16B, V25.16B + eor V16.16B, V16.16B, V26.16B + eor V17.16B, V17.16B, V27.16B + eor V18.16B, V18.16B, V28.16B + eor V19.16B, V19.16B, V29.16B + bic V25.16B, V22.16B, V21.16B + bic V26.16B, V23.16B, V22.16B + bic V27.16B, V24.16B, V23.16B + bic V28.16B, V20.16B, V24.16B + bic V29.16B, V21.16B, V20.16B + eor V20.16B, V20.16B, V25.16B + eor V21.16B, V21.16B, V26.16B + eor V22.16B, V22.16B, V27.16B + eor V23.16B, V23.16B, V28.16B + eor V24.16B, V24.16B, V29.16B ; Done transforming ldp x28, x1, [x29, #48] ldr x0, [x28], #8 subs x1, x1, #1 - mov v30.d[0], x0 - mov v30.d[1], x0 + mov V30.D[0], x0 + mov V30.D[1], x0 eor x2, x2, x0 - eor v0.16b, v0.16b, v30.16b + eor V0.16B, V0.16B, V30.16B bne L_SHA3_shake128_blocksx3_seed_neon_begin ldr x0, [x29, #40] - st4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - st1 {v24.d}[0], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + st1 {V24.D}[0], [x0] add x0, x0, #8 - st4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[1], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[1], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[1], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[1], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[1], [x0], #32 - st1 {v24.d}[1], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[1], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[1], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[1], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[1], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[1], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[1], [x0], #32 + st1 {V24.D}[1], [x0] add x0, x0, #8 stp x2, x3, [x0] stp x4, x5, [x0, #16] @@ -10997,10 +10997,10 @@ L_SHA3_shake128_blocksx3_seed_neon_begin ldp x24, x25, [x29, #120] ldp x26, x27, [x29, #136] ldr x28, [x29, #152] - ldp d8, d9, [x29, #160] - ldp d10, d11, [x29, #176] - ldp d12, d13, [x29, #192] - ldp d14, d15, [x29, #208] + ldp D8, D9, [x29, #160] + ldp D10, D11, [x29, #176] + ldp D12, D13, [x29, #192] + ldp D14, D15, [x29, #208] ldp x29, x30, [sp], #0xe0 ret ENDP @@ -11016,384 +11016,384 @@ mlkem_shake256_blocksx3_seed_neon PROC stp x24, x25, [x29, #120] stp x26, x27, [x29, #136] str x28, [x29, #152] - stp d8, d9, [x29, #160] - stp d10, d11, [x29, #176] - stp d12, d13, [x29, #192] - stp d14, d15, [x29, #208] + stp D8, D9, [x29, #160] + stp D10, D11, [x29, #176] + stp D12, D13, [x29, #192] + stp D14, D15, [x29, #208] adrp x28, L_sha3_aarch64_r add x28, x28, L_sha3_aarch64_r str x0, [x29, #40] add x0, x0, #32 - ld1 {v4.d}[0], [x0] + ld1 {V4.D}[0], [x0] ldp x2, x3, [x1], #16 add x0, x0, #0xc8 - ld1 {v4.d}[1], [x0] + ld1 {V4.D}[1], [x0] ldp x4, x5, [x1], #16 ldr x6, [x0, #200] - eor v5.16b, v5.16b, v5.16b + eor V5.16B, V5.16B, V5.16B eor x7, x7, x7 - eor v6.16b, v6.16b, v6.16b + eor V6.16B, V6.16B, V6.16B eor x8, x8, x8 - eor v7.16b, v7.16b, v7.16b + eor V7.16B, V7.16B, V7.16B eor x9, x9, x9 - eor v8.16b, v8.16b, v8.16b + eor V8.16B, V8.16B, V8.16B eor x10, x10, x10 - eor v9.16b, v9.16b, v9.16b + eor V9.16B, V9.16B, V9.16B eor x11, x11, x11 - eor v10.16b, v10.16b, v10.16b + eor V10.16B, V10.16B, V10.16B eor x12, x12, x12 - eor v11.16b, v11.16b, v11.16b + eor V11.16B, V11.16B, V11.16B eor x13, x13, x13 - eor v12.16b, v12.16b, v12.16b + eor V12.16B, V12.16B, V12.16B eor x14, x14, x14 - eor v13.16b, v13.16b, v13.16b + eor V13.16B, V13.16B, V13.16B eor x15, x15, x15 - eor v14.16b, v14.16b, v14.16b + eor V14.16B, V14.16B, V14.16B eor x16, x16, x16 - eor v15.16b, v15.16b, v15.16b + eor V15.16B, V15.16B, V15.16B eor x17, x17, x17 movz x19, #0x8000, lsl 48 - eor v17.16b, v17.16b, v17.16b + eor V17.16B, V17.16B, V17.16B eor x20, x20, x20 - eor v18.16b, v18.16b, v18.16b + eor V18.16B, V18.16B, V18.16B eor x21, x21, x21 - eor v19.16b, v19.16b, v19.16b + eor V19.16B, V19.16B, V19.16B eor x22, x22, x22 - eor v20.16b, v20.16b, v20.16b + eor V20.16B, V20.16B, V20.16B eor x23, x23, x23 - eor v21.16b, v21.16b, v21.16b + eor V21.16B, V21.16B, V21.16B eor x24, x24, x24 - eor v22.16b, v22.16b, v22.16b + eor V22.16B, V22.16B, V22.16B eor x25, x25, x25 - eor v23.16b, v23.16b, v23.16b + eor V23.16B, V23.16B, V23.16B eor x26, x26, x26 - eor v24.16b, v24.16b, v24.16b + eor V24.16B, V24.16B, V24.16B eor x27, x27, x27 - dup v0.2d, x2 - dup v1.2d, x3 - dup v2.2d, x4 - dup v3.2d, x5 - dup v16.2d, x19 + dup V0.2D, x2 + dup V1.2D, x3 + dup V2.2D, x4 + dup V3.2D, x5 + dup V16.2D, x19 mov x1, #24 ; Start of 24 rounds L_SHA3_shake256_blocksx3_seed_neon_begin stp x28, x1, [x29, #48] ; Col Mix NEON - eor v30.16b, v4.16b, v9.16b + eor V30.16B, V4.16B, V9.16B eor x0, x6, x11 - eor v27.16b, v1.16b, v6.16b + eor V27.16B, V1.16B, V6.16B eor x30, x2, x7 - eor v30.16b, v30.16b, v14.16b + eor V30.16B, V30.16B, V14.16B eor x28, x4, x9 - eor v27.16b, v27.16b, v11.16b + eor V27.16B, V27.16B, V11.16B eor x0, x0, x16 - eor v30.16b, v30.16b, v19.16b + eor V30.16B, V30.16B, V19.16B eor x30, x30, x12 - eor v27.16b, v27.16b, v16.16b + eor V27.16B, V27.16B, V16.16B eor x28, x28, x14 - eor v30.16b, v30.16b, v24.16b + eor V30.16B, V30.16B, V24.16B eor x0, x0, x22 - eor v27.16b, v27.16b, v21.16b + eor V27.16B, V27.16B, V21.16B eor x30, x30, x17 - ushr v25.2d, v27.2d, #63 + ushr V25.2D, V27.2D, #63 eor x28, x28, x20 - sli v25.2d, v27.2d, #1 + sli V25.2D, V27.2D, #1 eor x0, x0, x27 - eor v25.16b, v25.16b, v30.16b + eor V25.16B, V25.16B, V30.16B eor x30, x30, x23 - eor v31.16b, v0.16b, v5.16b + eor V31.16B, V0.16B, V5.16B eor x28, x28, x25 - eor v28.16b, v2.16b, v7.16b + eor V28.16B, V2.16B, V7.16B str x0, [x29, #32] - eor v31.16b, v31.16b, v10.16b + eor V31.16B, V31.16B, V10.16B str x28, [x29, #24] - eor v28.16b, v28.16b, v12.16b + eor V28.16B, V28.16B, V12.16B eor x1, x3, x8 - eor v31.16b, v31.16b, v15.16b + eor V31.16B, V31.16B, V15.16B eor x28, x5, x10 - eor v28.16b, v28.16b, v17.16b + eor V28.16B, V28.16B, V17.16B eor x1, x1, x13 - eor v31.16b, v31.16b, v20.16b + eor V31.16B, V31.16B, V20.16B eor x28, x28, x15 - eor v28.16b, v28.16b, v22.16b + eor V28.16B, V28.16B, V22.16B eor x1, x1, x19 - ushr v29.2d, v30.2d, #63 + ushr V29.2D, V30.2D, #63 eor x28, x28, x21 - ushr v26.2d, v28.2d, #63 + ushr V26.2D, V28.2D, #63 eor x1, x1, x24 - sli v29.2d, v30.2d, #1 + sli V29.2D, V30.2D, #1 eor x28, x28, x26 - sli v26.2d, v28.2d, #1 + sli V26.2D, V28.2D, #1 eor x0, x0, x1, ror 63 - eor v28.16b, v28.16b, v29.16b + eor V28.16B, V28.16B, V29.16B eor x1, x1, x28, ror 63 - eor v29.16b, v3.16b, v8.16b + eor V29.16B, V3.16B, V8.16B eor x2, x2, x0 - eor v26.16b, v26.16b, v31.16b + eor V26.16B, V26.16B, V31.16B eor x7, x7, x0 - eor v29.16b, v29.16b, v13.16b + eor V29.16B, V29.16B, V13.16B eor x12, x12, x0 - eor v29.16b, v29.16b, v18.16b + eor V29.16B, V29.16B, V18.16B eor x17, x17, x0 - eor v29.16b, v29.16b, v23.16b + eor V29.16B, V29.16B, V23.16B eor x23, x23, x0 - ushr v30.2d, v29.2d, #63 + ushr V30.2D, V29.2D, #63 eor x4, x4, x1 - sli v30.2d, v29.2d, #1 + sli V30.2D, V29.2D, #1 eor x9, x9, x1 - eor v27.16b, v27.16b, v30.16b + eor V27.16B, V27.16B, V30.16B eor x14, x14, x1 - ushr v30.2d, v31.2d, #63 + ushr V30.2D, V31.2D, #63 eor x20, x20, x1 - sli v30.2d, v31.2d, #1 + sli V30.2D, V31.2D, #1 eor x25, x25, x1 - eor v29.16b, v29.16b, v30.16b + eor V29.16B, V29.16B, V30.16B ldr x0, [x29, #32] ; Swap Rotate NEON - eor v0.16b, v0.16b, v25.16b - eor v31.16b, v1.16b, v26.16b + eor V0.16B, V0.16B, V25.16B + eor V31.16B, V1.16B, V26.16B ldr x1, [x29, #24] - eor v6.16b, v6.16b, v26.16b + eor V6.16B, V6.16B, V26.16B eor x28, x28, x30, ror 63 - ushr v30.2d, v31.2d, #63 + ushr V30.2D, V31.2D, #63 eor x30, x30, x1, ror 63 - ushr v1.2d, v6.2d, #20 + ushr V1.2D, V6.2D, #20 eor x1, x1, x0, ror 63 - sli v30.2d, v31.2d, #1 + sli V30.2D, V31.2D, #1 eor x6, x6, x28 - sli v1.2d, v6.2d, #44 + sli V1.2D, V6.2D, #44 eor x11, x11, x28 - eor v31.16b, v9.16b, v29.16b + eor V31.16B, V9.16B, V29.16B eor x16, x16, x28 - eor v22.16b, v22.16b, v27.16b + eor V22.16B, V22.16B, V27.16B eor x22, x22, x28 - ushr v6.2d, v31.2d, #44 + ushr V6.2D, V31.2D, #44 eor x27, x27, x28 - ushr v9.2d, v22.2d, #3 + ushr V9.2D, V22.2D, #3 eor x3, x3, x30 - sli v6.2d, v31.2d, #20 + sli V6.2D, V31.2D, #20 eor x8, x8, x30 - sli v9.2d, v22.2d, #61 + sli V9.2D, V22.2D, #61 eor x13, x13, x30 - eor v31.16b, v14.16b, v29.16b + eor V31.16B, V14.16B, V29.16B eor x19, x19, x30 - eor v20.16b, v20.16b, v25.16b + eor V20.16B, V20.16B, V25.16B eor x24, x24, x30 - ushr v22.2d, v31.2d, #25 + ushr V22.2D, V31.2D, #25 eor x5, x5, x1 - ushr v14.2d, v20.2d, #46 + ushr V14.2D, V20.2D, #46 eor x10, x10, x1 - sli v22.2d, v31.2d, #39 + sli V22.2D, V31.2D, #39 eor x15, x15, x1 - sli v14.2d, v20.2d, #18 + sli V14.2D, V20.2D, #18 eor x21, x21, x1 - eor v31.16b, v2.16b, v27.16b + eor V31.16B, V2.16B, V27.16B eor x26, x26, x1 ; Swap Rotate Base - eor v12.16b, v12.16b, v27.16b + eor V12.16B, V12.16B, V27.16B ror x0, x3, #63 - ushr v20.2d, v31.2d, #2 + ushr V20.2D, V31.2D, #2 ror x3, x8, #20 - ushr v2.2d, v12.2d, #21 + ushr V2.2D, V12.2D, #21 ror x8, x11, #44 - sli v20.2d, v31.2d, #62 + sli V20.2D, V31.2D, #62 ror x11, x25, #3 - sli v2.2d, v12.2d, #43 + sli V2.2D, V12.2D, #43 ror x25, x16, #25 - eor v31.16b, v13.16b, v28.16b + eor V31.16B, V13.16B, V28.16B ror x16, x23, #46 - eor v19.16b, v19.16b, v29.16b + eor V19.16B, V19.16B, V29.16B ror x23, x4, #2 - ushr v12.2d, v31.2d, #39 + ushr V12.2D, V31.2D, #39 ror x4, x14, #21 - ushr v13.2d, v19.2d, #56 + ushr V13.2D, V19.2D, #56 ror x14, x15, #39 - sli v12.2d, v31.2d, #25 + sli V12.2D, V31.2D, #25 ror x15, x22, #56 - sli v13.2d, v19.2d, #8 + sli V13.2D, V19.2D, #8 ror x22, x26, #8 - eor v31.16b, v23.16b, v28.16b + eor V31.16B, V23.16B, V28.16B ror x26, x17, #23 - eor v15.16b, v15.16b, v25.16b + eor V15.16B, V15.16B, V25.16B ror x17, x6, #37 - ushr v19.2d, v31.2d, #8 + ushr V19.2D, V31.2D, #8 ror x6, x27, #50 - ushr v23.2d, v15.2d, #23 + ushr V23.2D, V15.2D, #23 ror x27, x24, #62 - sli v19.2d, v31.2d, #56 + sli V19.2D, V31.2D, #56 ror x24, x10, #9 - sli v23.2d, v15.2d, #41 + sli V23.2D, V15.2D, #41 ror x10, x19, #19 - eor v31.16b, v4.16b, v29.16b + eor V31.16B, V4.16B, V29.16B ror x19, x7, #28 - eor v24.16b, v24.16b, v29.16b + eor V24.16B, V24.16B, V29.16B ror x7, x5, #36 - ushr v15.2d, v31.2d, #37 + ushr V15.2D, V31.2D, #37 ror x5, x21, #43 - ushr v4.2d, v24.2d, #50 + ushr V4.2D, V24.2D, #50 ror x21, x20, #49 - sli v15.2d, v31.2d, #27 + sli V15.2D, V31.2D, #27 ror x20, x13, #54 - sli v4.2d, v24.2d, #14 + sli V4.2D, V24.2D, #14 ror x13, x9, #58 - eor v31.16b, v21.16b, v26.16b + eor V31.16B, V21.16B, V26.16B ror x9, x12, #61 ; Row Mix Base - eor v8.16b, v8.16b, v28.16b + eor V8.16B, V8.16B, V28.16B bic x12, x4, x3 - ushr v24.2d, v31.2d, #62 + ushr V24.2D, V31.2D, #62 bic x1, x5, x4 - ushr v21.2d, v8.2d, #9 + ushr V21.2D, V8.2D, #9 bic x28, x2, x6 - sli v24.2d, v31.2d, #2 + sli V24.2D, V31.2D, #2 bic x30, x3, x2 - sli v21.2d, v8.2d, #55 + sli V21.2D, V8.2D, #55 eor x2, x2, x12 - eor v31.16b, v16.16b, v26.16b + eor V31.16B, V16.16B, V26.16B eor x3, x3, x1 - eor v5.16b, v5.16b, v25.16b + eor V5.16B, V5.16B, V25.16B bic x12, x6, x5 - ushr v8.2d, v31.2d, #19 + ushr V8.2D, V31.2D, #19 eor x5, x5, x28 - ushr v16.2d, v5.2d, #28 + ushr V16.2D, V5.2D, #28 eor x4, x4, x12 - sli v8.2d, v31.2d, #45 + sli V8.2D, V31.2D, #45 eor x6, x6, x30 - sli v16.2d, v5.2d, #36 + sli V16.2D, V5.2D, #36 bic x12, x9, x8 - eor v31.16b, v3.16b, v28.16b + eor V31.16B, V3.16B, V28.16B bic x1, x10, x9 - eor v18.16b, v18.16b, v28.16b + eor V18.16B, V18.16B, V28.16B bic x28, x7, x11 - ushr v5.2d, v31.2d, #36 + ushr V5.2D, V31.2D, #36 bic x30, x8, x7 - ushr v3.2d, v18.2d, #43 + ushr V3.2D, V18.2D, #43 eor x7, x7, x12 - sli v5.2d, v31.2d, #28 + sli V5.2D, V31.2D, #28 eor x8, x8, x1 - sli v3.2d, v18.2d, #21 + sli V3.2D, V18.2D, #21 bic x12, x11, x10 - eor v31.16b, v17.16b, v27.16b + eor V31.16B, V17.16B, V27.16B eor x10, x10, x28 - eor v11.16b, v11.16b, v26.16b + eor V11.16B, V11.16B, V26.16B eor x9, x9, x12 - ushr v18.2d, v31.2d, #49 + ushr V18.2D, V31.2D, #49 eor x11, x11, x30 - ushr v17.2d, v11.2d, #54 + ushr V17.2D, V11.2D, #54 bic x12, x14, x13 - sli v18.2d, v31.2d, #15 + sli V18.2D, V31.2D, #15 bic x1, x15, x14 - sli v17.2d, v11.2d, #10 + sli V17.2D, V11.2D, #10 bic x28, x0, x16 - eor v31.16b, v7.16b, v27.16b + eor V31.16B, V7.16B, V27.16B bic x30, x13, x0 - eor v10.16b, v10.16b, v25.16b + eor V10.16B, V10.16B, V25.16B eor x12, x0, x12 - ushr v11.2d, v31.2d, #58 + ushr V11.2D, V31.2D, #58 eor x13, x13, x1 - ushr v7.2d, v10.2d, #61 + ushr V7.2D, V10.2D, #61 bic x0, x16, x15 - sli v11.2d, v31.2d, #6 + sli V11.2D, V31.2D, #6 eor x15, x15, x28 - sli v7.2d, v10.2d, #3 + sli V7.2D, V10.2D, #3 eor x14, x14, x0 ; Row Mix NEON - bic v25.16b, v2.16b, v1.16b + bic V25.16B, V2.16B, V1.16B eor x16, x16, x30 - bic v26.16b, v3.16b, v2.16b + bic V26.16B, V3.16B, V2.16B bic x0, x20, x19 - bic v27.16b, v4.16b, v3.16b + bic V27.16B, V4.16B, V3.16B bic x1, x21, x20 - bic v28.16b, v0.16b, v4.16b + bic V28.16B, V0.16B, V4.16B bic x28, x17, x22 - bic v29.16b, v1.16b, v0.16b + bic V29.16B, V1.16B, V0.16B bic x30, x19, x17 - eor v0.16b, v0.16b, v25.16b + eor V0.16B, V0.16B, V25.16B eor x17, x17, x0 - eor v1.16b, v1.16b, v26.16b + eor V1.16B, V1.16B, V26.16B eor x19, x19, x1 - eor v2.16b, v2.16b, v27.16b + eor V2.16B, V2.16B, V27.16B bic x0, x22, x21 - eor v3.16b, v3.16b, v28.16b + eor V3.16B, V3.16B, V28.16B eor x21, x21, x28 - eor v4.16b, v4.16b, v29.16b + eor V4.16B, V4.16B, V29.16B eor x20, x20, x0 - bic v25.16b, v7.16b, v6.16b + bic V25.16B, V7.16B, V6.16B eor x22, x22, x30 - bic v26.16b, v8.16b, v7.16b + bic V26.16B, V8.16B, V7.16B bic x0, x25, x24 - bic v27.16b, v9.16b, v8.16b + bic V27.16B, V9.16B, V8.16B bic x1, x26, x25 - bic v28.16b, v5.16b, v9.16b + bic V28.16B, V5.16B, V9.16B bic x28, x23, x27 - bic v29.16b, v6.16b, v5.16b + bic V29.16B, V6.16B, V5.16B bic x30, x24, x23 - eor v5.16b, v5.16b, v25.16b + eor V5.16B, V5.16B, V25.16B eor x23, x23, x0 - eor v6.16b, v6.16b, v26.16b + eor V6.16B, V6.16B, V26.16B eor x24, x24, x1 - eor v7.16b, v7.16b, v27.16b + eor V7.16B, V7.16B, V27.16B bic x0, x27, x26 - eor v8.16b, v8.16b, v28.16b + eor V8.16B, V8.16B, V28.16B eor x26, x26, x28 - eor v9.16b, v9.16b, v29.16b + eor V9.16B, V9.16B, V29.16B eor x25, x25, x0 - bic v25.16b, v12.16b, v11.16b + bic V25.16B, V12.16B, V11.16B eor x27, x27, x30 - bic v26.16b, v13.16b, v12.16b - bic v27.16b, v14.16b, v13.16b - bic v28.16b, v30.16b, v14.16b - bic v29.16b, v11.16b, v30.16b - eor v10.16b, v30.16b, v25.16b - eor v11.16b, v11.16b, v26.16b - eor v12.16b, v12.16b, v27.16b - eor v13.16b, v13.16b, v28.16b - eor v14.16b, v14.16b, v29.16b - bic v25.16b, v17.16b, v16.16b - bic v26.16b, v18.16b, v17.16b - bic v27.16b, v19.16b, v18.16b - bic v28.16b, v15.16b, v19.16b - bic v29.16b, v16.16b, v15.16b - eor v15.16b, v15.16b, v25.16b - eor v16.16b, v16.16b, v26.16b - eor v17.16b, v17.16b, v27.16b - eor v18.16b, v18.16b, v28.16b - eor v19.16b, v19.16b, v29.16b - bic v25.16b, v22.16b, v21.16b - bic v26.16b, v23.16b, v22.16b - bic v27.16b, v24.16b, v23.16b - bic v28.16b, v20.16b, v24.16b - bic v29.16b, v21.16b, v20.16b - eor v20.16b, v20.16b, v25.16b - eor v21.16b, v21.16b, v26.16b - eor v22.16b, v22.16b, v27.16b - eor v23.16b, v23.16b, v28.16b - eor v24.16b, v24.16b, v29.16b + bic V26.16B, V13.16B, V12.16B + bic V27.16B, V14.16B, V13.16B + bic V28.16B, V30.16B, V14.16B + bic V29.16B, V11.16B, V30.16B + eor V10.16B, V30.16B, V25.16B + eor V11.16B, V11.16B, V26.16B + eor V12.16B, V12.16B, V27.16B + eor V13.16B, V13.16B, V28.16B + eor V14.16B, V14.16B, V29.16B + bic V25.16B, V17.16B, V16.16B + bic V26.16B, V18.16B, V17.16B + bic V27.16B, V19.16B, V18.16B + bic V28.16B, V15.16B, V19.16B + bic V29.16B, V16.16B, V15.16B + eor V15.16B, V15.16B, V25.16B + eor V16.16B, V16.16B, V26.16B + eor V17.16B, V17.16B, V27.16B + eor V18.16B, V18.16B, V28.16B + eor V19.16B, V19.16B, V29.16B + bic V25.16B, V22.16B, V21.16B + bic V26.16B, V23.16B, V22.16B + bic V27.16B, V24.16B, V23.16B + bic V28.16B, V20.16B, V24.16B + bic V29.16B, V21.16B, V20.16B + eor V20.16B, V20.16B, V25.16B + eor V21.16B, V21.16B, V26.16B + eor V22.16B, V22.16B, V27.16B + eor V23.16B, V23.16B, V28.16B + eor V24.16B, V24.16B, V29.16B ; Done transforming ldp x28, x1, [x29, #48] ldr x0, [x28], #8 subs x1, x1, #1 - mov v30.d[0], x0 - mov v30.d[1], x0 + mov V30.D[0], x0 + mov V30.D[1], x0 eor x2, x2, x0 - eor v0.16b, v0.16b, v30.16b + eor V0.16B, V0.16B, V30.16B bne L_SHA3_shake256_blocksx3_seed_neon_begin ldr x0, [x29, #40] - st4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - st1 {v24.d}[0], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + st1 {V24.D}[0], [x0] add x0, x0, #8 - st4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[1], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[1], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[1], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[1], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[1], [x0], #32 - st1 {v24.d}[1], [x0] + st4 {V0.D, V1.D, V2.D, V3.D}[1], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[1], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[1], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[1], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[1], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[1], [x0], #32 + st1 {V24.D}[1], [x0] add x0, x0, #8 stp x2, x3, [x0] stp x4, x5, [x0, #16] @@ -11414,10 +11414,10 @@ L_SHA3_shake256_blocksx3_seed_neon_begin ldp x24, x25, [x29, #120] ldp x26, x27, [x29, #136] ldr x28, [x29, #152] - ldp d8, d9, [x29, #160] - ldp d10, d11, [x29, #176] - ldp d12, d13, [x29, #192] - ldp d14, d15, [x29, #208] + ldp D8, D9, [x29, #160] + ldp D10, D11, [x29, #176] + ldp D12, D13, [x29, #192] + ldp D14, D15, [x29, #208] ldp x29, x30, [sp], #0xe0 ret ENDP diff --git a/wolfcrypt/src/port/arm/armv8-poly1305-asm.asm b/wolfcrypt/src/port/arm/armv8-poly1305-asm.asm index 61940944b3..4ee10c516e 100644 --- a/wolfcrypt/src/port/arm/armv8-poly1305-asm.asm +++ b/wolfcrypt/src/port/arm/armv8-poly1305-asm.asm @@ -106,221 +106,221 @@ poly1305_arm64_blocks PROC stp x29, x30, [sp, #-96]! add x29, sp, #0 str x17, [x29, #24] - stp d8, d9, [x29, #32] - stp d10, d11, [x29, #48] - stp d12, d13, [x29, #64] - stp d14, d15, [x29, #80] + stp D8, D9, [x29, #32] + stp D10, D11, [x29, #48] + stp D12, D13, [x29, #64] + stp D14, D15, [x29, #80] cmp x2, #0x40 blt L_poly1305_arm64_blocks_done ; Set mask (0x3ffffff), hi bit and 5 into vector registers - movi v25.16b, #0xff - movi v27.4s, #1, lsl 24 - ushr v25.4s, v25.4s, #6 - movi v24.4s, #5 - uxtl v26.2d, v25.2s + movi V25.16B, #0xff + movi V27.4S, #1, lsl 24 + ushr V25.4S, V25.4S, #6 + movi V24.4S, #5 + ushll V26.2D, V25.2S, #0 add x14, x0, #16 - ld4 {v15.4s, v16.4s, v17.4s, v18.4s}, [x14], #0x40 - ld1 {v19.4s}, [x14] + ld4 {V15.4S, V16.4S, V17.4S, V18.4S}, [x14], #0x40 + ld1 {V19.4S}, [x14] add x14, x0, #0x60 - movi v0.4s, #0 - movi v1.4s, #0 - movi v2.4s, #0 - movi v3.4s, #0 - movi v4.4s, #0 - ld4 {v0.s, v1.s, v2.s, v3.s}[0], [x14], #16 - ld1 {v4.s}[0], [x14] - mul v20.4s, v16.4s, v24.4s - mul v21.4s, v17.4s, v24.4s - mul v22.4s, v18.4s, v24.4s - mul v23.4s, v19.4s, v24.4s + movi V0.4S, #0 + movi V1.4S, #0 + movi V2.4S, #0 + movi V3.4S, #0 + movi V4.4S, #0 + ld4 {V0.S, V1.S, V2.S, V3.S}[0], [x14], #16 + ld1 {V4.S}[0], [x14] + mul V20.4S, V16.4S, V24.4S + mul V21.4S, V17.4S, V24.4S + mul V22.4S, V18.4S, V24.4S + mul V23.4S, V19.4S, V24.4S L_poly1305_arm64_blocks_loop_64 ; Load message of 64 bytes - setting hi bit for not finished - ld4 {v5.4s, v6.4s, v7.4s, v8.4s}, [x1], #0x40 + ld4 {V5.4S, V6.4S, V7.4S, V8.4S}, [x1], #0x40 sub x2, x2, #0x40 - ushr v9.4s, v8.4s, #8 - shl v8.4s, v8.4s, #18 - orr v9.16b, v9.16b, v27.16b - sri v8.4s, v7.4s, #14 - shl v7.4s, v7.4s, #12 - and v8.16b, v8.16b, v25.16b - sri v7.4s, v6.4s, #20 - shl v6.4s, v6.4s, #6 - and v7.16b, v7.16b, v25.16b - sri v6.4s, v5.4s, #26 - and v5.16b, v5.16b, v25.16b - and v6.16b, v6.16b, v25.16b - umull2 v10.2d, v5.4s, v15.4s - umull2 v11.2d, v5.4s, v16.4s - umull2 v12.2d, v5.4s, v17.4s - umull2 v13.2d, v5.4s, v18.4s - umull2 v14.2d, v5.4s, v19.4s - umlal2 v10.2d, v6.4s, v23.4s - umlal2 v11.2d, v6.4s, v15.4s - umlal2 v12.2d, v6.4s, v16.4s - umlal2 v13.2d, v6.4s, v17.4s - umlal2 v14.2d, v6.4s, v18.4s - umlal2 v10.2d, v7.4s, v22.4s - umlal2 v11.2d, v7.4s, v23.4s - umlal2 v12.2d, v7.4s, v15.4s - umlal2 v13.2d, v7.4s, v16.4s - umlal2 v14.2d, v7.4s, v17.4s - umlal2 v10.2d, v8.4s, v21.4s - umlal2 v11.2d, v8.4s, v22.4s - umlal2 v12.2d, v8.4s, v23.4s - umlal2 v13.2d, v8.4s, v15.4s - umlal2 v14.2d, v8.4s, v16.4s - umlal2 v10.2d, v9.4s, v20.4s - umlal2 v11.2d, v9.4s, v21.4s - umlal2 v12.2d, v9.4s, v22.4s - umlal2 v13.2d, v9.4s, v23.4s - umlal2 v14.2d, v9.4s, v15.4s - add v5.4s, v5.4s, v0.4s - add v6.4s, v6.4s, v1.4s - add v7.4s, v7.4s, v2.4s - add v8.4s, v8.4s, v3.4s - add v9.4s, v9.4s, v4.4s - umlal v10.2d, v5.2s, v15.2s - umlal v11.2d, v5.2s, v16.2s - umlal v12.2d, v5.2s, v17.2s - umlal v13.2d, v5.2s, v18.2s - umlal v14.2d, v5.2s, v19.2s - umlal v10.2d, v6.2s, v23.2s - umlal v11.2d, v6.2s, v15.2s - umlal v12.2d, v6.2s, v16.2s - umlal v13.2d, v6.2s, v17.2s - umlal v14.2d, v6.2s, v18.2s - umlal v10.2d, v7.2s, v22.2s - umlal v11.2d, v7.2s, v23.2s - umlal v12.2d, v7.2s, v15.2s - umlal v13.2d, v7.2s, v16.2s - umlal v14.2d, v7.2s, v17.2s - umlal v10.2d, v8.2s, v21.2s - umlal v11.2d, v8.2s, v22.2s - umlal v12.2d, v8.2s, v23.2s - umlal v13.2d, v8.2s, v15.2s - umlal v14.2d, v8.2s, v16.2s - umlal v10.2d, v9.2s, v20.2s - umlal v11.2d, v9.2s, v21.2s - umlal v12.2d, v9.2s, v22.2s - umlal v13.2d, v9.2s, v23.2s - umlal v14.2d, v9.2s, v15.2s - addp d10, v10.2d - addp d11, v11.2d - addp d12, v12.2d - addp d13, v13.2d - addp d14, v14.2d + ushr V9.4S, V8.4S, #8 + shl V8.4S, V8.4S, #18 + orr V9.16B, V9.16B, V27.16B + sri V8.4S, V7.4S, #14 + shl V7.4S, V7.4S, #12 + and V8.16B, V8.16B, V25.16B + sri V7.4S, V6.4S, #20 + shl V6.4S, V6.4S, #6 + and V7.16B, V7.16B, V25.16B + sri V6.4S, V5.4S, #26 + and V5.16B, V5.16B, V25.16B + and V6.16B, V6.16B, V25.16B + umull2 V10.2D, V5.4S, V15.4S + umull2 V11.2D, V5.4S, V16.4S + umull2 V12.2D, V5.4S, V17.4S + umull2 V13.2D, V5.4S, V18.4S + umull2 V14.2D, V5.4S, V19.4S + umlal2 V10.2D, V6.4S, V23.4S + umlal2 V11.2D, V6.4S, V15.4S + umlal2 V12.2D, V6.4S, V16.4S + umlal2 V13.2D, V6.4S, V17.4S + umlal2 V14.2D, V6.4S, V18.4S + umlal2 V10.2D, V7.4S, V22.4S + umlal2 V11.2D, V7.4S, V23.4S + umlal2 V12.2D, V7.4S, V15.4S + umlal2 V13.2D, V7.4S, V16.4S + umlal2 V14.2D, V7.4S, V17.4S + umlal2 V10.2D, V8.4S, V21.4S + umlal2 V11.2D, V8.4S, V22.4S + umlal2 V12.2D, V8.4S, V23.4S + umlal2 V13.2D, V8.4S, V15.4S + umlal2 V14.2D, V8.4S, V16.4S + umlal2 V10.2D, V9.4S, V20.4S + umlal2 V11.2D, V9.4S, V21.4S + umlal2 V12.2D, V9.4S, V22.4S + umlal2 V13.2D, V9.4S, V23.4S + umlal2 V14.2D, V9.4S, V15.4S + add V5.4S, V5.4S, V0.4S + add V6.4S, V6.4S, V1.4S + add V7.4S, V7.4S, V2.4S + add V8.4S, V8.4S, V3.4S + add V9.4S, V9.4S, V4.4S + umlal V10.2D, V5.2S, V15.2S + umlal V11.2D, V5.2S, V16.2S + umlal V12.2D, V5.2S, V17.2S + umlal V13.2D, V5.2S, V18.2S + umlal V14.2D, V5.2S, V19.2S + umlal V10.2D, V6.2S, V23.2S + umlal V11.2D, V6.2S, V15.2S + umlal V12.2D, V6.2S, V16.2S + umlal V13.2D, V6.2S, V17.2S + umlal V14.2D, V6.2S, V18.2S + umlal V10.2D, V7.2S, V22.2S + umlal V11.2D, V7.2S, V23.2S + umlal V12.2D, V7.2S, V15.2S + umlal V13.2D, V7.2S, V16.2S + umlal V14.2D, V7.2S, V17.2S + umlal V10.2D, V8.2S, V21.2S + umlal V11.2D, V8.2S, V22.2S + umlal V12.2D, V8.2S, V23.2S + umlal V13.2D, V8.2S, V15.2S + umlal V14.2D, V8.2S, V16.2S + umlal V10.2D, V9.2S, V20.2S + umlal V11.2D, V9.2S, V21.2S + umlal V12.2D, V9.2S, V22.2S + umlal V13.2D, V9.2S, V23.2S + umlal V14.2D, V9.2S, V15.2S + addp D10, V10.2D + addp D11, V11.2D + addp D12, V12.2D + addp D13, V13.2D + addp D14, V14.2D ; Redistribute and handle overflow - usra v11.2d, v10.2d, #26 - and v10.16b, v10.16b, v26.16b - usra v14.2d, v13.2d, #26 - and v3.16b, v13.16b, v26.16b - ushr v2.2d, v14.2d, #26 - usra v12.2d, v11.2d, #26 - shl v0.2d, v2.2d, #2 - and v1.16b, v11.16b, v26.16b - add v0.2d, v0.2d, v2.2d - and v4.16b, v14.16b, v26.16b - add v10.2d, v10.2d, v0.2d - usra v3.2d, v12.2d, #26 - and v2.16b, v12.16b, v26.16b - usra v1.2d, v10.2d, #26 - and v0.16b, v10.16b, v26.16b - usra v4.2d, v3.2d, #26 - and v3.16b, v3.16b, v26.16b + usra V11.2D, V10.2D, #26 + and V10.16B, V10.16B, V26.16B + usra V14.2D, V13.2D, #26 + and V3.16B, V13.16B, V26.16B + ushr V2.2D, V14.2D, #26 + usra V12.2D, V11.2D, #26 + shl V0.2D, V2.2D, #2 + and V1.16B, V11.16B, V26.16B + add V0.2D, V0.2D, V2.2D + and V4.16B, V14.16B, V26.16B + add V10.2D, V10.2D, V0.2D + usra V3.2D, V12.2D, #26 + and V2.16B, V12.16B, V26.16B + usra V1.2D, V10.2D, #26 + and V0.16B, V10.16B, V26.16B + usra V4.2D, V3.2D, #26 + and V3.16B, V3.16B, V26.16B cmp x2, #0x40 bge L_poly1305_arm64_blocks_loop_64 cmp x2, #16 ble L_poly1305_arm64_blocks_done_32 ; Start 32 - ld4 {v5.2s, v6.2s, v7.2s, v8.2s}, [x1], #32 + ld4 {V5.2S, V6.2S, V7.2S, V8.2S}, [x1], #32 sub x2, x2, #32 - mov v15.d[0], v15.d[1] - mov v16.d[0], v16.d[1] - mov v17.d[0], v17.d[1] - mov v18.d[0], v18.d[1] - mov v19.d[0], v19.d[1] - mov v20.d[0], v20.d[1] - mov v21.d[0], v21.d[1] - mov v22.d[0], v22.d[1] - mov v23.d[0], v23.d[1] - ushr v9.2s, v8.2s, #8 - shl v8.2s, v8.2s, #18 - orr v9.8b, v9.8b, v27.8b - sri v8.2s, v7.2s, #14 - shl v7.2s, v7.2s, #12 - and v8.8b, v8.8b, v25.8b - sri v7.2s, v6.2s, #20 - shl v6.2s, v6.2s, #6 - and v7.8b, v7.8b, v25.8b - sri v6.2s, v5.2s, #26 - and v5.8b, v5.8b, v25.8b - and v6.8b, v6.8b, v25.8b - add v5.2s, v5.2s, v0.2s - add v6.2s, v6.2s, v1.2s - add v7.2s, v7.2s, v2.2s - add v8.2s, v8.2s, v3.2s - add v9.2s, v9.2s, v4.2s - umull v10.2d, v5.2s, v15.2s - umull v11.2d, v5.2s, v16.2s - umull v12.2d, v5.2s, v17.2s - umull v13.2d, v5.2s, v18.2s - umull v14.2d, v5.2s, v19.2s - umlal v10.2d, v6.2s, v23.2s - umlal v11.2d, v6.2s, v15.2s - umlal v12.2d, v6.2s, v16.2s - umlal v13.2d, v6.2s, v17.2s - umlal v14.2d, v6.2s, v18.2s - umlal v10.2d, v7.2s, v22.2s - umlal v11.2d, v7.2s, v23.2s - umlal v12.2d, v7.2s, v15.2s - umlal v13.2d, v7.2s, v16.2s - umlal v14.2d, v7.2s, v17.2s - umlal v10.2d, v8.2s, v21.2s - umlal v11.2d, v8.2s, v22.2s - umlal v12.2d, v8.2s, v23.2s - umlal v13.2d, v8.2s, v15.2s - umlal v14.2d, v8.2s, v16.2s - umlal v10.2d, v9.2s, v20.2s - umlal v11.2d, v9.2s, v21.2s - umlal v12.2d, v9.2s, v22.2s - umlal v13.2d, v9.2s, v23.2s - umlal v14.2d, v9.2s, v15.2s - addp d10, v10.2d - addp d11, v11.2d - addp d12, v12.2d - addp d13, v13.2d - addp d14, v14.2d + mov V15.D[0], V15.D[1] + mov V16.D[0], V16.D[1] + mov V17.D[0], V17.D[1] + mov V18.D[0], V18.D[1] + mov V19.D[0], V19.D[1] + mov V20.D[0], V20.D[1] + mov V21.D[0], V21.D[1] + mov V22.D[0], V22.D[1] + mov V23.D[0], V23.D[1] + ushr V9.2S, V8.2S, #8 + shl V8.2S, V8.2S, #18 + orr V9.8B, V9.8B, V27.8B + sri V8.2S, V7.2S, #14 + shl V7.2S, V7.2S, #12 + and V8.8B, V8.8B, V25.8B + sri V7.2S, V6.2S, #20 + shl V6.2S, V6.2S, #6 + and V7.8B, V7.8B, V25.8B + sri V6.2S, V5.2S, #26 + and V5.8B, V5.8B, V25.8B + and V6.8B, V6.8B, V25.8B + add V5.2S, V5.2S, V0.2S + add V6.2S, V6.2S, V1.2S + add V7.2S, V7.2S, V2.2S + add V8.2S, V8.2S, V3.2S + add V9.2S, V9.2S, V4.2S + umull V10.2D, V5.2S, V15.2S + umull V11.2D, V5.2S, V16.2S + umull V12.2D, V5.2S, V17.2S + umull V13.2D, V5.2S, V18.2S + umull V14.2D, V5.2S, V19.2S + umlal V10.2D, V6.2S, V23.2S + umlal V11.2D, V6.2S, V15.2S + umlal V12.2D, V6.2S, V16.2S + umlal V13.2D, V6.2S, V17.2S + umlal V14.2D, V6.2S, V18.2S + umlal V10.2D, V7.2S, V22.2S + umlal V11.2D, V7.2S, V23.2S + umlal V12.2D, V7.2S, V15.2S + umlal V13.2D, V7.2S, V16.2S + umlal V14.2D, V7.2S, V17.2S + umlal V10.2D, V8.2S, V21.2S + umlal V11.2D, V8.2S, V22.2S + umlal V12.2D, V8.2S, V23.2S + umlal V13.2D, V8.2S, V15.2S + umlal V14.2D, V8.2S, V16.2S + umlal V10.2D, V9.2S, V20.2S + umlal V11.2D, V9.2S, V21.2S + umlal V12.2D, V9.2S, V22.2S + umlal V13.2D, V9.2S, V23.2S + umlal V14.2D, V9.2S, V15.2S + addp D10, V10.2D + addp D11, V11.2D + addp D12, V12.2D + addp D13, V13.2D + addp D14, V14.2D ; Redistribute and handle overflow - usra v11.2d, v10.2d, #26 - and v10.16b, v10.16b, v26.16b - usra v14.2d, v13.2d, #26 - and v3.16b, v13.16b, v26.16b - ushr v2.2d, v14.2d, #26 - usra v12.2d, v11.2d, #26 - shl v0.2d, v2.2d, #2 - and v1.16b, v11.16b, v26.16b - add v0.2d, v0.2d, v2.2d - and v4.16b, v14.16b, v26.16b - add v10.2d, v10.2d, v0.2d - usra v3.2d, v12.2d, #26 - and v2.16b, v12.16b, v26.16b - usra v1.2d, v10.2d, #26 - and v0.16b, v10.16b, v26.16b - usra v4.2d, v3.2d, #26 - and v3.16b, v3.16b, v26.16b + usra V11.2D, V10.2D, #26 + and V10.16B, V10.16B, V26.16B + usra V14.2D, V13.2D, #26 + and V3.16B, V13.16B, V26.16B + ushr V2.2D, V14.2D, #26 + usra V12.2D, V11.2D, #26 + shl V0.2D, V2.2D, #2 + and V1.16B, V11.16B, V26.16B + add V0.2D, V0.2D, V2.2D + and V4.16B, V14.16B, V26.16B + add V10.2D, V10.2D, V0.2D + usra V3.2D, V12.2D, #26 + and V2.16B, V12.16B, V26.16B + usra V1.2D, V10.2D, #26 + and V0.16B, V10.16B, V26.16B + usra V4.2D, V3.2D, #26 + and V3.16B, V3.16B, V26.16B L_poly1305_arm64_blocks_done_32 cmp x2, #16 beq L_poly1305_arm64_blocks_transfer add x14, x0, #0x60 - st4 {v0.s, v1.s, v2.s, v3.s}[0], [x14], #16 - st1 {v4.s}[0], [x14] + st4 {V0.S, V1.S, V2.S, V3.S}[0], [x14], #16 + st1 {V4.S}[0], [x14] b L_poly1305_arm64_blocks_done_all L_poly1305_arm64_blocks_transfer - mov w3, v0.s[0] - mov w4, v1.s[0] - mov w5, v2.s[0] - mov w6, v3.s[0] - mov w7, v4.s[0] + mov w3, V0.S[0] + mov w4, V1.S[0] + mov w5, V2.S[0] + mov w6, V3.S[0] + mov w7, V4.S[0] b L_poly1305_arm64_blocks_start L_poly1305_arm64_blocks_done cmp x2, #16 @@ -404,14 +404,14 @@ L_poly1305_arm64_blocks_loop str w7, [x0, #112] L_poly1305_arm64_blocks_done_all ldr x17, [x29, #24] - ldp d8, d9, [x29, #32] - ldp d10, d11, [x29, #48] - ldp d12, d13, [x29, #64] - ldp d14, d15, [x29, #80] + ldp D8, D9, [x29, #32] + ldp D10, D11, [x29, #48] + ldp D12, D13, [x29, #64] + ldp D14, D15, [x29, #80] ldp x29, x30, [sp], #0x60 ret ENDP - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_poly1305_set_key_arm64_clamp DCD 0x0fffffff, 0x0ffffffc, 0x0ffffffc, 0x0ffffffc diff --git a/wolfcrypt/src/port/arm/armv8-sha256-asm.asm b/wolfcrypt/src/port/arm/armv8-sha256-asm.asm index 877ff66414..42bdd86682 100644 --- a/wolfcrypt/src/port/arm/armv8-sha256-asm.asm +++ b/wolfcrypt/src/port/arm/armv8-sha256-asm.asm @@ -25,7 +25,7 @@ ; ruby ./sha2/sha256.rb arm64 \ ; ../wolfssl/wolfcrypt/src/port/arm/armv8-sha256-asm.asm IF :LNOT::DEF:NO_SHA256 :LOR: :DEF:WOLFSSL_SHA224 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_SHA256_transform_neon_len_k DCD 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5 @@ -54,8 +54,8 @@ Transform_Sha256_Len_neon PROC stp x20, x21, [x29, #40] stp x22, x23, [x29, #56] str x24, [x29, #72] - stp d8, d9, [x29, #80] - stp d10, d11, [x29, #96] + stp D8, D9, [x29, #80] + stp D10, D11, [x29, #96] adrp x3, L_SHA256_transform_neon_len_k add x3, x3, L_SHA256_transform_neon_len_k ; Load digest into working vars @@ -71,29 +71,29 @@ Transform_Sha256_Len_neon PROC L_sha256_len_neon_begin ; Load W ; Copy digest to add in at end - ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x1], #32 + ld1 {V0.8B, V1.8B, V2.8B, V3.8B}, [x1], #32 mov w15, w4 - ld1 {v4.8b, v5.8b, v6.8b, v7.8b}, [x1], #32 + ld1 {V4.8B, V5.8B, V6.8B, V7.8B}, [x1], #32 mov w16, w5 - rev32 v0.8b, v0.8b + rev32 V0.8B, V0.8B mov w17, w6 - rev32 v1.8b, v1.8b + rev32 V1.8B, V1.8B mov w19, w7 - rev32 v2.8b, v2.8b + rev32 V2.8B, V2.8B mov w20, w8 - rev32 v3.8b, v3.8b + rev32 V3.8B, V3.8B mov w21, w9 - rev32 v4.8b, v4.8b + rev32 V4.8B, V4.8B mov w22, w10 - rev32 v5.8b, v5.8b + rev32 V5.8B, V5.8B mov w23, w11 - rev32 v6.8b, v6.8b - rev32 v7.8b, v7.8b + rev32 V6.8B, V6.8B + rev32 V7.8B, V7.8B mov x24, #3 ; Start of 16 rounds L_sha256_len_neon_start ; Round 0 - mov w14, v0.s[0] + mov w14, V0.S[0] ror w12, w8, #6 eor w13, w9, w10 eor w12, w12, w8, ror 11 @@ -116,50 +116,50 @@ L_sha256_len_neon_start add w11, w11, w12 add w11, w11, w13 ; Round 1 - mov w14, v0.s[1] + mov w14, V0.S[1] ; Calc new W[0]-W[1] - ext v10.8b, v0.8b, v1.8b, #4 + ext8 V10.8B, V0.8B, V1.8B, #4 ror w12, w7, #6 - shl v8.2s, v7.2s, #15 + shl V8.2S, V7.2S, #15 eor w13, w8, w9 - sri v8.2s, v7.2s, #17 + sri V8.2S, V7.2S, #17 eor w12, w12, w7, ror 11 - shl v9.2s, v7.2s, #13 + shl V9.2S, V7.2S, #13 and w13, w13, w7 - sri v9.2s, v7.2s, #19 + sri V9.2S, V7.2S, #19 eor w12, w12, w7, ror 25 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w13, w13, w9 - ushr v8.2s, v7.2s, #10 + ushr V8.2S, V7.2S, #10 add w10, w10, w12 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B add w10, w10, w13 - add v0.2s, v0.2s, v9.2s + add V0.2S, V0.2S, V9.2S ldr w12, [x3, #4] - ext v11.8b, v4.8b, v5.8b, #4 + ext8 V11.8B, V4.8B, V5.8B, #4 add w10, w10, w14 - add v0.2s, v0.2s, v11.2s + add V0.2S, V0.2S, V11.2S add w10, w10, w12 - shl v8.2s, v10.2s, #25 + shl V8.2S, V10.2S, #25 add w6, w6, w10 - sri v8.2s, v10.2s, #7 + sri V8.2S, V10.2S, #7 ror w12, w11, #2 - shl v9.2s, v10.2s, #14 + shl V9.2S, V10.2S, #14 eor w13, w11, w4 - sri v9.2s, v10.2s, #18 + sri V9.2S, V10.2S, #18 eor w12, w12, w11, ror 13 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w14, w4, w5 - ushr v10.2s, v10.2s, #3 + ushr V10.2S, V10.2S, #3 and w13, w13, w14 - eor v9.8b, v9.8b, v10.8b + eor V9.8B, V9.8B, V10.8B eor w12, w12, w11, ror 22 - add v0.2s, v0.2s, v9.2s + add V0.2S, V0.2S, V9.2S eor w13, w13, w4 add w10, w10, w12 add w10, w10, w13 ; Round 2 - mov w14, v1.s[0] + mov w14, V1.S[0] ror w12, w6, #6 eor w13, w7, w8 eor w12, w12, w6, ror 11 @@ -182,50 +182,50 @@ L_sha256_len_neon_start add w9, w9, w12 add w9, w9, w13 ; Round 3 - mov w14, v1.s[1] + mov w14, V1.S[1] ; Calc new W[2]-W[3] - ext v10.8b, v1.8b, v2.8b, #4 + ext8 V10.8B, V1.8B, V2.8B, #4 ror w12, w5, #6 - shl v8.2s, v0.2s, #15 + shl V8.2S, V0.2S, #15 eor w13, w6, w7 - sri v8.2s, v0.2s, #17 + sri V8.2S, V0.2S, #17 eor w12, w12, w5, ror 11 - shl v9.2s, v0.2s, #13 + shl V9.2S, V0.2S, #13 and w13, w13, w5 - sri v9.2s, v0.2s, #19 + sri V9.2S, V0.2S, #19 eor w12, w12, w5, ror 25 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w13, w13, w7 - ushr v8.2s, v0.2s, #10 + ushr V8.2S, V0.2S, #10 add w8, w8, w12 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B add w8, w8, w13 - add v1.2s, v1.2s, v9.2s + add V1.2S, V1.2S, V9.2S ldr w12, [x3, #12] - ext v11.8b, v5.8b, v6.8b, #4 + ext8 V11.8B, V5.8B, V6.8B, #4 add w8, w8, w14 - add v1.2s, v1.2s, v11.2s + add V1.2S, V1.2S, V11.2S add w8, w8, w12 - shl v8.2s, v10.2s, #25 + shl V8.2S, V10.2S, #25 add w4, w4, w8 - sri v8.2s, v10.2s, #7 + sri V8.2S, V10.2S, #7 ror w12, w9, #2 - shl v9.2s, v10.2s, #14 + shl V9.2S, V10.2S, #14 eor w13, w9, w10 - sri v9.2s, v10.2s, #18 + sri V9.2S, V10.2S, #18 eor w12, w12, w9, ror 13 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w14, w10, w11 - ushr v10.2s, v10.2s, #3 + ushr V10.2S, V10.2S, #3 and w13, w13, w14 - eor v9.8b, v9.8b, v10.8b + eor V9.8B, V9.8B, V10.8B eor w12, w12, w9, ror 22 - add v1.2s, v1.2s, v9.2s + add V1.2S, V1.2S, V9.2S eor w13, w13, w10 add w8, w8, w12 add w8, w8, w13 ; Round 4 - mov w14, v2.s[0] + mov w14, V2.S[0] ror w12, w4, #6 eor w13, w5, w6 eor w12, w12, w4, ror 11 @@ -248,50 +248,50 @@ L_sha256_len_neon_start add w7, w7, w12 add w7, w7, w13 ; Round 5 - mov w14, v2.s[1] + mov w14, V2.S[1] ; Calc new W[4]-W[5] - ext v10.8b, v2.8b, v3.8b, #4 + ext8 V10.8B, V2.8B, V3.8B, #4 ror w12, w11, #6 - shl v8.2s, v1.2s, #15 + shl V8.2S, V1.2S, #15 eor w13, w4, w5 - sri v8.2s, v1.2s, #17 + sri V8.2S, V1.2S, #17 eor w12, w12, w11, ror 11 - shl v9.2s, v1.2s, #13 + shl V9.2S, V1.2S, #13 and w13, w13, w11 - sri v9.2s, v1.2s, #19 + sri V9.2S, V1.2S, #19 eor w12, w12, w11, ror 25 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w13, w13, w5 - ushr v8.2s, v1.2s, #10 + ushr V8.2S, V1.2S, #10 add w6, w6, w12 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B add w6, w6, w13 - add v2.2s, v2.2s, v9.2s + add V2.2S, V2.2S, V9.2S ldr w12, [x3, #20] - ext v11.8b, v6.8b, v7.8b, #4 + ext8 V11.8B, V6.8B, V7.8B, #4 add w6, w6, w14 - add v2.2s, v2.2s, v11.2s + add V2.2S, V2.2S, V11.2S add w6, w6, w12 - shl v8.2s, v10.2s, #25 + shl V8.2S, V10.2S, #25 add w10, w10, w6 - sri v8.2s, v10.2s, #7 + sri V8.2S, V10.2S, #7 ror w12, w7, #2 - shl v9.2s, v10.2s, #14 + shl V9.2S, V10.2S, #14 eor w13, w7, w8 - sri v9.2s, v10.2s, #18 + sri V9.2S, V10.2S, #18 eor w12, w12, w7, ror 13 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w14, w8, w9 - ushr v10.2s, v10.2s, #3 + ushr V10.2S, V10.2S, #3 and w13, w13, w14 - eor v9.8b, v9.8b, v10.8b + eor V9.8B, V9.8B, V10.8B eor w12, w12, w7, ror 22 - add v2.2s, v2.2s, v9.2s + add V2.2S, V2.2S, V9.2S eor w13, w13, w8 add w6, w6, w12 add w6, w6, w13 ; Round 6 - mov w14, v3.s[0] + mov w14, V3.S[0] ror w12, w10, #6 eor w13, w11, w4 eor w12, w12, w10, ror 11 @@ -314,50 +314,50 @@ L_sha256_len_neon_start add w5, w5, w12 add w5, w5, w13 ; Round 7 - mov w14, v3.s[1] + mov w14, V3.S[1] ; Calc new W[6]-W[7] - ext v10.8b, v3.8b, v4.8b, #4 + ext8 V10.8B, V3.8B, V4.8B, #4 ror w12, w9, #6 - shl v8.2s, v2.2s, #15 + shl V8.2S, V2.2S, #15 eor w13, w10, w11 - sri v8.2s, v2.2s, #17 + sri V8.2S, V2.2S, #17 eor w12, w12, w9, ror 11 - shl v9.2s, v2.2s, #13 + shl V9.2S, V2.2S, #13 and w13, w13, w9 - sri v9.2s, v2.2s, #19 + sri V9.2S, V2.2S, #19 eor w12, w12, w9, ror 25 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w13, w13, w11 - ushr v8.2s, v2.2s, #10 + ushr V8.2S, V2.2S, #10 add w4, w4, w12 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B add w4, w4, w13 - add v3.2s, v3.2s, v9.2s + add V3.2S, V3.2S, V9.2S ldr w12, [x3, #28] - ext v11.8b, v7.8b, v0.8b, #4 + ext8 V11.8B, V7.8B, V0.8B, #4 add w4, w4, w14 - add v3.2s, v3.2s, v11.2s + add V3.2S, V3.2S, V11.2S add w4, w4, w12 - shl v8.2s, v10.2s, #25 + shl V8.2S, V10.2S, #25 add w8, w8, w4 - sri v8.2s, v10.2s, #7 + sri V8.2S, V10.2S, #7 ror w12, w5, #2 - shl v9.2s, v10.2s, #14 + shl V9.2S, V10.2S, #14 eor w13, w5, w6 - sri v9.2s, v10.2s, #18 + sri V9.2S, V10.2S, #18 eor w12, w12, w5, ror 13 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w14, w6, w7 - ushr v10.2s, v10.2s, #3 + ushr V10.2S, V10.2S, #3 and w13, w13, w14 - eor v9.8b, v9.8b, v10.8b + eor V9.8B, V9.8B, V10.8B eor w12, w12, w5, ror 22 - add v3.2s, v3.2s, v9.2s + add V3.2S, V3.2S, V9.2S eor w13, w13, w6 add w4, w4, w12 add w4, w4, w13 ; Round 8 - mov w14, v4.s[0] + mov w14, V4.S[0] ror w12, w8, #6 eor w13, w9, w10 eor w12, w12, w8, ror 11 @@ -380,50 +380,50 @@ L_sha256_len_neon_start add w11, w11, w12 add w11, w11, w13 ; Round 9 - mov w14, v4.s[1] + mov w14, V4.S[1] ; Calc new W[8]-W[9] - ext v10.8b, v4.8b, v5.8b, #4 + ext8 V10.8B, V4.8B, V5.8B, #4 ror w12, w7, #6 - shl v8.2s, v3.2s, #15 + shl V8.2S, V3.2S, #15 eor w13, w8, w9 - sri v8.2s, v3.2s, #17 + sri V8.2S, V3.2S, #17 eor w12, w12, w7, ror 11 - shl v9.2s, v3.2s, #13 + shl V9.2S, V3.2S, #13 and w13, w13, w7 - sri v9.2s, v3.2s, #19 + sri V9.2S, V3.2S, #19 eor w12, w12, w7, ror 25 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w13, w13, w9 - ushr v8.2s, v3.2s, #10 + ushr V8.2S, V3.2S, #10 add w10, w10, w12 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B add w10, w10, w13 - add v4.2s, v4.2s, v9.2s + add V4.2S, V4.2S, V9.2S ldr w12, [x3, #36] - ext v11.8b, v0.8b, v1.8b, #4 + ext8 V11.8B, V0.8B, V1.8B, #4 add w10, w10, w14 - add v4.2s, v4.2s, v11.2s + add V4.2S, V4.2S, V11.2S add w10, w10, w12 - shl v8.2s, v10.2s, #25 + shl V8.2S, V10.2S, #25 add w6, w6, w10 - sri v8.2s, v10.2s, #7 + sri V8.2S, V10.2S, #7 ror w12, w11, #2 - shl v9.2s, v10.2s, #14 + shl V9.2S, V10.2S, #14 eor w13, w11, w4 - sri v9.2s, v10.2s, #18 + sri V9.2S, V10.2S, #18 eor w12, w12, w11, ror 13 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w14, w4, w5 - ushr v10.2s, v10.2s, #3 + ushr V10.2S, V10.2S, #3 and w13, w13, w14 - eor v9.8b, v9.8b, v10.8b + eor V9.8B, V9.8B, V10.8B eor w12, w12, w11, ror 22 - add v4.2s, v4.2s, v9.2s + add V4.2S, V4.2S, V9.2S eor w13, w13, w4 add w10, w10, w12 add w10, w10, w13 ; Round 10 - mov w14, v5.s[0] + mov w14, V5.S[0] ror w12, w6, #6 eor w13, w7, w8 eor w12, w12, w6, ror 11 @@ -446,50 +446,50 @@ L_sha256_len_neon_start add w9, w9, w12 add w9, w9, w13 ; Round 11 - mov w14, v5.s[1] + mov w14, V5.S[1] ; Calc new W[10]-W[11] - ext v10.8b, v5.8b, v6.8b, #4 + ext8 V10.8B, V5.8B, V6.8B, #4 ror w12, w5, #6 - shl v8.2s, v4.2s, #15 + shl V8.2S, V4.2S, #15 eor w13, w6, w7 - sri v8.2s, v4.2s, #17 + sri V8.2S, V4.2S, #17 eor w12, w12, w5, ror 11 - shl v9.2s, v4.2s, #13 + shl V9.2S, V4.2S, #13 and w13, w13, w5 - sri v9.2s, v4.2s, #19 + sri V9.2S, V4.2S, #19 eor w12, w12, w5, ror 25 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w13, w13, w7 - ushr v8.2s, v4.2s, #10 + ushr V8.2S, V4.2S, #10 add w8, w8, w12 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B add w8, w8, w13 - add v5.2s, v5.2s, v9.2s + add V5.2S, V5.2S, V9.2S ldr w12, [x3, #44] - ext v11.8b, v1.8b, v2.8b, #4 + ext8 V11.8B, V1.8B, V2.8B, #4 add w8, w8, w14 - add v5.2s, v5.2s, v11.2s + add V5.2S, V5.2S, V11.2S add w8, w8, w12 - shl v8.2s, v10.2s, #25 + shl V8.2S, V10.2S, #25 add w4, w4, w8 - sri v8.2s, v10.2s, #7 + sri V8.2S, V10.2S, #7 ror w12, w9, #2 - shl v9.2s, v10.2s, #14 + shl V9.2S, V10.2S, #14 eor w13, w9, w10 - sri v9.2s, v10.2s, #18 + sri V9.2S, V10.2S, #18 eor w12, w12, w9, ror 13 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w14, w10, w11 - ushr v10.2s, v10.2s, #3 + ushr V10.2S, V10.2S, #3 and w13, w13, w14 - eor v9.8b, v9.8b, v10.8b + eor V9.8B, V9.8B, V10.8B eor w12, w12, w9, ror 22 - add v5.2s, v5.2s, v9.2s + add V5.2S, V5.2S, V9.2S eor w13, w13, w10 add w8, w8, w12 add w8, w8, w13 ; Round 12 - mov w14, v6.s[0] + mov w14, V6.S[0] ror w12, w4, #6 eor w13, w5, w6 eor w12, w12, w4, ror 11 @@ -512,50 +512,50 @@ L_sha256_len_neon_start add w7, w7, w12 add w7, w7, w13 ; Round 13 - mov w14, v6.s[1] + mov w14, V6.S[1] ; Calc new W[12]-W[13] - ext v10.8b, v6.8b, v7.8b, #4 + ext8 V10.8B, V6.8B, V7.8B, #4 ror w12, w11, #6 - shl v8.2s, v5.2s, #15 + shl V8.2S, V5.2S, #15 eor w13, w4, w5 - sri v8.2s, v5.2s, #17 + sri V8.2S, V5.2S, #17 eor w12, w12, w11, ror 11 - shl v9.2s, v5.2s, #13 + shl V9.2S, V5.2S, #13 and w13, w13, w11 - sri v9.2s, v5.2s, #19 + sri V9.2S, V5.2S, #19 eor w12, w12, w11, ror 25 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w13, w13, w5 - ushr v8.2s, v5.2s, #10 + ushr V8.2S, V5.2S, #10 add w6, w6, w12 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B add w6, w6, w13 - add v6.2s, v6.2s, v9.2s + add V6.2S, V6.2S, V9.2S ldr w12, [x3, #52] - ext v11.8b, v2.8b, v3.8b, #4 + ext8 V11.8B, V2.8B, V3.8B, #4 add w6, w6, w14 - add v6.2s, v6.2s, v11.2s + add V6.2S, V6.2S, V11.2S add w6, w6, w12 - shl v8.2s, v10.2s, #25 + shl V8.2S, V10.2S, #25 add w10, w10, w6 - sri v8.2s, v10.2s, #7 + sri V8.2S, V10.2S, #7 ror w12, w7, #2 - shl v9.2s, v10.2s, #14 + shl V9.2S, V10.2S, #14 eor w13, w7, w8 - sri v9.2s, v10.2s, #18 + sri V9.2S, V10.2S, #18 eor w12, w12, w7, ror 13 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w14, w8, w9 - ushr v10.2s, v10.2s, #3 + ushr V10.2S, V10.2S, #3 and w13, w13, w14 - eor v9.8b, v9.8b, v10.8b + eor V9.8B, V9.8B, V10.8B eor w12, w12, w7, ror 22 - add v6.2s, v6.2s, v9.2s + add V6.2S, V6.2S, V9.2S eor w13, w13, w8 add w6, w6, w12 add w6, w6, w13 ; Round 14 - mov w14, v7.s[0] + mov w14, V7.S[0] ror w12, w10, #6 eor w13, w11, w4 eor w12, w12, w10, ror 11 @@ -578,45 +578,45 @@ L_sha256_len_neon_start add w5, w5, w12 add w5, w5, w13 ; Round 15 - mov w14, v7.s[1] + mov w14, V7.S[1] ; Calc new W[14]-W[15] - ext v10.8b, v7.8b, v0.8b, #4 + ext8 V10.8B, V7.8B, V0.8B, #4 ror w12, w9, #6 - shl v8.2s, v6.2s, #15 + shl V8.2S, V6.2S, #15 eor w13, w10, w11 - sri v8.2s, v6.2s, #17 + sri V8.2S, V6.2S, #17 eor w12, w12, w9, ror 11 - shl v9.2s, v6.2s, #13 + shl V9.2S, V6.2S, #13 and w13, w13, w9 - sri v9.2s, v6.2s, #19 + sri V9.2S, V6.2S, #19 eor w12, w12, w9, ror 25 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w13, w13, w11 - ushr v8.2s, v6.2s, #10 + ushr V8.2S, V6.2S, #10 add w4, w4, w12 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B add w4, w4, w13 - add v7.2s, v7.2s, v9.2s + add V7.2S, V7.2S, V9.2S ldr w12, [x3, #60] - ext v11.8b, v3.8b, v4.8b, #4 + ext8 V11.8B, V3.8B, V4.8B, #4 add w4, w4, w14 - add v7.2s, v7.2s, v11.2s + add V7.2S, V7.2S, V11.2S add w4, w4, w12 - shl v8.2s, v10.2s, #25 + shl V8.2S, V10.2S, #25 add w8, w8, w4 - sri v8.2s, v10.2s, #7 + sri V8.2S, V10.2S, #7 ror w12, w5, #2 - shl v9.2s, v10.2s, #14 + shl V9.2S, V10.2S, #14 eor w13, w5, w6 - sri v9.2s, v10.2s, #18 + sri V9.2S, V10.2S, #18 eor w12, w12, w5, ror 13 - eor v9.8b, v9.8b, v8.8b + eor V9.8B, V9.8B, V8.8B eor w14, w6, w7 - ushr v10.2s, v10.2s, #3 + ushr V10.2S, V10.2S, #3 and w13, w13, w14 - eor v9.8b, v9.8b, v10.8b + eor V9.8B, V9.8B, V10.8B eor w12, w12, w5, ror 22 - add v7.2s, v7.2s, v9.2s + add V7.2S, V7.2S, V9.2S eor w13, w13, w6 add w4, w4, w12 add w4, w4, w13 @@ -624,7 +624,7 @@ L_sha256_len_neon_start subs x24, x24, #1 bne L_sha256_len_neon_start ; Round 0 - mov w14, v0.s[0] + mov w14, V0.S[0] ror w12, w8, #6 eor w13, w9, w10 eor w12, w12, w8, ror 11 @@ -647,7 +647,7 @@ L_sha256_len_neon_start add w11, w11, w12 add w11, w11, w13 ; Round 1 - mov w14, v0.s[1] + mov w14, V0.S[1] ror w12, w7, #6 eor w13, w8, w9 eor w12, w12, w7, ror 11 @@ -670,7 +670,7 @@ L_sha256_len_neon_start add w10, w10, w12 add w10, w10, w13 ; Round 2 - mov w14, v1.s[0] + mov w14, V1.S[0] ror w12, w6, #6 eor w13, w7, w8 eor w12, w12, w6, ror 11 @@ -693,7 +693,7 @@ L_sha256_len_neon_start add w9, w9, w12 add w9, w9, w13 ; Round 3 - mov w14, v1.s[1] + mov w14, V1.S[1] ror w12, w5, #6 eor w13, w6, w7 eor w12, w12, w5, ror 11 @@ -716,7 +716,7 @@ L_sha256_len_neon_start add w8, w8, w12 add w8, w8, w13 ; Round 4 - mov w14, v2.s[0] + mov w14, V2.S[0] ror w12, w4, #6 eor w13, w5, w6 eor w12, w12, w4, ror 11 @@ -739,7 +739,7 @@ L_sha256_len_neon_start add w7, w7, w12 add w7, w7, w13 ; Round 5 - mov w14, v2.s[1] + mov w14, V2.S[1] ror w12, w11, #6 eor w13, w4, w5 eor w12, w12, w11, ror 11 @@ -762,7 +762,7 @@ L_sha256_len_neon_start add w6, w6, w12 add w6, w6, w13 ; Round 6 - mov w14, v3.s[0] + mov w14, V3.S[0] ror w12, w10, #6 eor w13, w11, w4 eor w12, w12, w10, ror 11 @@ -785,7 +785,7 @@ L_sha256_len_neon_start add w5, w5, w12 add w5, w5, w13 ; Round 7 - mov w14, v3.s[1] + mov w14, V3.S[1] ror w12, w9, #6 eor w13, w10, w11 eor w12, w12, w9, ror 11 @@ -808,7 +808,7 @@ L_sha256_len_neon_start add w4, w4, w12 add w4, w4, w13 ; Round 8 - mov w14, v4.s[0] + mov w14, V4.S[0] ror w12, w8, #6 eor w13, w9, w10 eor w12, w12, w8, ror 11 @@ -831,7 +831,7 @@ L_sha256_len_neon_start add w11, w11, w12 add w11, w11, w13 ; Round 9 - mov w14, v4.s[1] + mov w14, V4.S[1] ror w12, w7, #6 eor w13, w8, w9 eor w12, w12, w7, ror 11 @@ -854,7 +854,7 @@ L_sha256_len_neon_start add w10, w10, w12 add w10, w10, w13 ; Round 10 - mov w14, v5.s[0] + mov w14, V5.S[0] ror w12, w6, #6 eor w13, w7, w8 eor w12, w12, w6, ror 11 @@ -877,7 +877,7 @@ L_sha256_len_neon_start add w9, w9, w12 add w9, w9, w13 ; Round 11 - mov w14, v5.s[1] + mov w14, V5.S[1] ror w12, w5, #6 eor w13, w6, w7 eor w12, w12, w5, ror 11 @@ -900,7 +900,7 @@ L_sha256_len_neon_start add w8, w8, w12 add w8, w8, w13 ; Round 12 - mov w14, v6.s[0] + mov w14, V6.S[0] ror w12, w4, #6 eor w13, w5, w6 eor w12, w12, w4, ror 11 @@ -923,7 +923,7 @@ L_sha256_len_neon_start add w7, w7, w12 add w7, w7, w13 ; Round 13 - mov w14, v6.s[1] + mov w14, V6.S[1] ror w12, w11, #6 eor w13, w4, w5 eor w12, w12, w11, ror 11 @@ -946,7 +946,7 @@ L_sha256_len_neon_start add w6, w6, w12 add w6, w6, w13 ; Round 14 - mov w14, v7.s[0] + mov w14, V7.S[0] ror w12, w10, #6 eor w13, w11, w4 eor w12, w12, w10, ror 11 @@ -969,7 +969,7 @@ L_sha256_len_neon_start add w5, w5, w12 add w5, w5, w13 ; Round 15 - mov w14, v7.s[1] + mov w14, V7.S[1] ror w12, w9, #6 eor w13, w10, w11 eor w12, w12, w9, ror 11 @@ -1014,13 +1014,13 @@ L_sha256_len_neon_start ldp x20, x21, [x29, #40] ldp x22, x23, [x29, #56] ldr x24, [x29, #72] - ldp d8, d9, [x29, #80] - ldp d10, d11, [x29, #96] + ldp D8, D9, [x29, #80] + ldp D10, D11, [x29, #96] ldp x29, x30, [sp], #0x70 ret ENDP IF :LNOT::DEF:WOLFSSL_ARMASM_NO_HW_CRYPTO - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 8 L_SHA256_trans_crypto_len_k DCD 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5 @@ -1045,146 +1045,146 @@ L_SHA256_trans_crypto_len_k Transform_Sha256_Len_crypto PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x3, L_SHA256_trans_crypto_len_k add x3, x3, L_SHA256_trans_crypto_len_k ; Load K into vector registers - ld1 {v8.4s, v9.4s, v10.4s, v11.4s}, [x3], #0x40 - ld1 {v12.4s, v13.4s, v14.4s, v15.4s}, [x3], #0x40 - ld1 {v16.4s, v17.4s, v18.4s, v19.4s}, [x3], #0x40 - ld1 {v20.4s, v21.4s, v22.4s, v23.4s}, [x3], #0x40 + ld1 {V8.4S, V9.4S, V10.4S, V11.4S}, [x3], #0x40 + ld1 {V12.4S, V13.4S, V14.4S, V15.4S}, [x3], #0x40 + ld1 {V16.4S, V17.4S, V18.4S, V19.4S}, [x3], #0x40 + ld1 {V20.4S, V21.4S, V22.4S, V23.4S}, [x3], #0x40 ; Load digest into working vars - ld1 {v0.4s, v1.4s}, [x0] + ld1 {V0.4S, V1.4S}, [x0] ; Start of loop processing a block L_sha256_len_crypto_begin ; Load W - ld1 {v4.4s, v5.4s, v6.4s, v7.4s}, [x1], #0x40 - rev32 v4.16b, v4.16b - rev32 v5.16b, v5.16b - rev32 v6.16b, v6.16b - rev32 v7.16b, v7.16b + ld1 {V4.4S, V5.4S, V6.4S, V7.4S}, [x1], #0x40 + rev32 V4.16B, V4.16B + rev32 V5.16B, V5.16B + rev32 V6.16B, V6.16B + rev32 V7.16B, V7.16B ; Copy digest to add in at end - mov v2.16b, v0.16b - mov v3.16b, v1.16b + mov V2.16B, V0.16B + mov V3.16B, V1.16B ; Start 16 rounds ; Round 1 - add v24.4s, v4.4s, v8.4s - mov v25.16b, v0.16b - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + add V24.4S, V4.4S, V8.4S + mov V25.16B, V0.16B + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 2 - sha256su0 v4.4s, v5.4s - add v24.4s, v5.4s, v9.4s - mov v25.16b, v0.16b - sha256su1 v4.4s, v6.4s, v7.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V4.4S, V5.4S + add V24.4S, V5.4S, V9.4S + mov V25.16B, V0.16B + sha256su1 V4.4S, V6.4S, V7.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 3 - sha256su0 v5.4s, v6.4s - add v24.4s, v6.4s, v10.4s - mov v25.16b, v0.16b - sha256su1 v5.4s, v7.4s, v4.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V5.4S, V6.4S + add V24.4S, V6.4S, V10.4S + mov V25.16B, V0.16B + sha256su1 V5.4S, V7.4S, V4.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 4 - sha256su0 v6.4s, v7.4s - add v24.4s, v7.4s, v11.4s - mov v25.16b, v0.16b - sha256su1 v6.4s, v4.4s, v5.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V6.4S, V7.4S + add V24.4S, V7.4S, V11.4S + mov V25.16B, V0.16B + sha256su1 V6.4S, V4.4S, V5.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 5 - sha256su0 v7.4s, v4.4s - add v24.4s, v4.4s, v12.4s - mov v25.16b, v0.16b - sha256su1 v7.4s, v5.4s, v6.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V7.4S, V4.4S + add V24.4S, V4.4S, V12.4S + mov V25.16B, V0.16B + sha256su1 V7.4S, V5.4S, V6.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 6 - sha256su0 v4.4s, v5.4s - add v24.4s, v5.4s, v13.4s - mov v25.16b, v0.16b - sha256su1 v4.4s, v6.4s, v7.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V4.4S, V5.4S + add V24.4S, V5.4S, V13.4S + mov V25.16B, V0.16B + sha256su1 V4.4S, V6.4S, V7.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 7 - sha256su0 v5.4s, v6.4s - add v24.4s, v6.4s, v14.4s - mov v25.16b, v0.16b - sha256su1 v5.4s, v7.4s, v4.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V5.4S, V6.4S + add V24.4S, V6.4S, V14.4S + mov V25.16B, V0.16B + sha256su1 V5.4S, V7.4S, V4.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 8 - sha256su0 v6.4s, v7.4s - add v24.4s, v7.4s, v15.4s - mov v25.16b, v0.16b - sha256su1 v6.4s, v4.4s, v5.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V6.4S, V7.4S + add V24.4S, V7.4S, V15.4S + mov V25.16B, V0.16B + sha256su1 V6.4S, V4.4S, V5.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 9 - sha256su0 v7.4s, v4.4s - add v24.4s, v4.4s, v16.4s - mov v25.16b, v0.16b - sha256su1 v7.4s, v5.4s, v6.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V7.4S, V4.4S + add V24.4S, V4.4S, V16.4S + mov V25.16B, V0.16B + sha256su1 V7.4S, V5.4S, V6.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 10 - sha256su0 v4.4s, v5.4s - add v24.4s, v5.4s, v17.4s - mov v25.16b, v0.16b - sha256su1 v4.4s, v6.4s, v7.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V4.4S, V5.4S + add V24.4S, V5.4S, V17.4S + mov V25.16B, V0.16B + sha256su1 V4.4S, V6.4S, V7.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 11 - sha256su0 v5.4s, v6.4s - add v24.4s, v6.4s, v18.4s - mov v25.16b, v0.16b - sha256su1 v5.4s, v7.4s, v4.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V5.4S, V6.4S + add V24.4S, V6.4S, V18.4S + mov V25.16B, V0.16B + sha256su1 V5.4S, V7.4S, V4.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 12 - sha256su0 v6.4s, v7.4s - add v24.4s, v7.4s, v19.4s - mov v25.16b, v0.16b - sha256su1 v6.4s, v4.4s, v5.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V6.4S, V7.4S + add V24.4S, V7.4S, V19.4S + mov V25.16B, V0.16B + sha256su1 V6.4S, V4.4S, V5.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 13 - sha256su0 v7.4s, v4.4s - add v24.4s, v4.4s, v20.4s - mov v25.16b, v0.16b - sha256su1 v7.4s, v5.4s, v6.4s - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + sha256su0 V7.4S, V4.4S + add V24.4S, V4.4S, V20.4S + mov V25.16B, V0.16B + sha256su1 V7.4S, V5.4S, V6.4S + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 14 - add v24.4s, v5.4s, v21.4s - mov v25.16b, v0.16b - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + add V24.4S, V5.4S, V21.4S + mov V25.16B, V0.16B + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 15 - add v24.4s, v6.4s, v22.4s - mov v25.16b, v0.16b - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + add V24.4S, V6.4S, V22.4S + mov V25.16B, V0.16B + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Round 16 - add v24.4s, v7.4s, v23.4s - mov v25.16b, v0.16b - sha256h q0, q1, v24.4s - sha256h2 q1, q25, v24.4s + add V24.4S, V7.4S, V23.4S + mov V25.16B, V0.16B + sha256h Q0, Q1, V24.4S + sha256h2 Q1, Q25, V24.4S ; Done 16 rounds - add v0.4s, v0.4s, v2.4s - add v1.4s, v1.4s, v3.4s + add V0.4S, V0.4S, V2.4S + add V1.4S, V1.4S, V3.4S subs w2, w2, #0x40 bne L_sha256_len_crypto_begin ; Store digest back - st1 {v0.4s, v1.4s}, [x0] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + st1 {V0.4S, V1.4S}, [x0] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP diff --git a/wolfcrypt/src/port/arm/armv8-sha3-asm.asm b/wolfcrypt/src/port/arm/armv8-sha3-asm.asm index fcd1929a36..f131e69e6d 100644 --- a/wolfcrypt/src/port/arm/armv8-sha3-asm.asm +++ b/wolfcrypt/src/port/arm/armv8-sha3-asm.asm @@ -26,7 +26,7 @@ ; ../wolfssl/wolfcrypt/src/port/arm/armv8-sha3-asm.asm IF :DEF:WOLFSSL_SHA3 IF :DEF:WOLFSSL_ARMASM_CRYPTO_SHA3 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 16 L_SHA3_transform_crypto_r DCQ 0x0000000000000001, 0x0000000000008082 @@ -47,120 +47,120 @@ L_SHA3_transform_crypto_r BlockSha3_crypto PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x1, L_SHA3_transform_crypto_r add x1, x1, L_SHA3_transform_crypto_r ; .arch_extension sha3 - ld4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - ld4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - ld4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - ld4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - ld4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - ld4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - ld1 {v24.1d}, [x0] + ld4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + ld4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + ld4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + ld4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + ld4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + ld4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + ld1 {V24.1D}, [x0] sub x0, x0, #0xc0 mov x2, #24 ; Start of 24 rounds L_sha3_crypto_begin ; Col Mix - eor3 v31.16b, v0.16b, v5.16b, v10.16b - eor3 v27.16b, v1.16b, v6.16b, v11.16b - eor3 v28.16b, v2.16b, v7.16b, v12.16b - eor3 v29.16b, v3.16b, v8.16b, v13.16b - eor3 v30.16b, v4.16b, v9.16b, v14.16b - eor3 v31.16b, v31.16b, v15.16b, v20.16b - eor3 v27.16b, v27.16b, v16.16b, v21.16b - eor3 v28.16b, v28.16b, v17.16b, v22.16b - eor3 v29.16b, v29.16b, v18.16b, v23.16b - eor3 v30.16b, v30.16b, v19.16b, v24.16b - rax1 v25.2d, v30.2d, v27.2d - rax1 v26.2d, v31.2d, v28.2d - rax1 v27.2d, v27.2d, v29.2d - rax1 v28.2d, v28.2d, v30.2d - rax1 v29.2d, v29.2d, v31.2d - eor v0.16b, v0.16b, v25.16b - xar v30.2d, v1.2d, v26.2d, #63 - xar v1.2d, v6.2d, v26.2d, #20 - xar v6.2d, v9.2d, v29.2d, #44 - xar v9.2d, v22.2d, v27.2d, #3 - xar v22.2d, v14.2d, v29.2d, #25 - xar v14.2d, v20.2d, v25.2d, #46 - xar v20.2d, v2.2d, v27.2d, #2 - xar v2.2d, v12.2d, v27.2d, #21 - xar v12.2d, v13.2d, v28.2d, #39 - xar v13.2d, v19.2d, v29.2d, #56 - xar v19.2d, v23.2d, v28.2d, #8 - xar v23.2d, v15.2d, v25.2d, #23 - xar v15.2d, v4.2d, v29.2d, #37 - xar v4.2d, v24.2d, v29.2d, #50 - xar v24.2d, v21.2d, v26.2d, #62 - xar v21.2d, v8.2d, v28.2d, #9 - xar v8.2d, v16.2d, v26.2d, #19 - xar v16.2d, v5.2d, v25.2d, #28 - xar v5.2d, v3.2d, v28.2d, #36 - xar v3.2d, v18.2d, v28.2d, #43 - xar v18.2d, v17.2d, v27.2d, #49 - xar v17.2d, v11.2d, v26.2d, #54 - xar v11.2d, v7.2d, v27.2d, #58 - xar v7.2d, v10.2d, v25.2d, #61 + eor3 V31.16B, V0.16B, V5.16B, V10.16B + eor3 V27.16B, V1.16B, V6.16B, V11.16B + eor3 V28.16B, V2.16B, V7.16B, V12.16B + eor3 V29.16B, V3.16B, V8.16B, V13.16B + eor3 V30.16B, V4.16B, V9.16B, V14.16B + eor3 V31.16B, V31.16B, V15.16B, V20.16B + eor3 V27.16B, V27.16B, V16.16B, V21.16B + eor3 V28.16B, V28.16B, V17.16B, V22.16B + eor3 V29.16B, V29.16B, V18.16B, V23.16B + eor3 V30.16B, V30.16B, V19.16B, V24.16B + rax1 V25.2D, V30.2D, V27.2D + rax1 V26.2D, V31.2D, V28.2D + rax1 V27.2D, V27.2D, V29.2D + rax1 V28.2D, V28.2D, V30.2D + rax1 V29.2D, V29.2D, V31.2D + eor V0.16B, V0.16B, V25.16B + xar V30.2D, V1.2D, V26.2D, #63 + xar V1.2D, V6.2D, V26.2D, #20 + xar V6.2D, V9.2D, V29.2D, #44 + xar V9.2D, V22.2D, V27.2D, #3 + xar V22.2D, V14.2D, V29.2D, #25 + xar V14.2D, V20.2D, V25.2D, #46 + xar V20.2D, V2.2D, V27.2D, #2 + xar V2.2D, V12.2D, V27.2D, #21 + xar V12.2D, V13.2D, V28.2D, #39 + xar V13.2D, V19.2D, V29.2D, #56 + xar V19.2D, V23.2D, V28.2D, #8 + xar V23.2D, V15.2D, V25.2D, #23 + xar V15.2D, V4.2D, V29.2D, #37 + xar V4.2D, V24.2D, V29.2D, #50 + xar V24.2D, V21.2D, V26.2D, #62 + xar V21.2D, V8.2D, V28.2D, #9 + xar V8.2D, V16.2D, V26.2D, #19 + xar V16.2D, V5.2D, V25.2D, #28 + xar V5.2D, V3.2D, V28.2D, #36 + xar V3.2D, V18.2D, V28.2D, #43 + xar V18.2D, V17.2D, V27.2D, #49 + xar V17.2D, V11.2D, V26.2D, #54 + xar V11.2D, V7.2D, V27.2D, #58 + xar V7.2D, V10.2D, V25.2D, #61 ; Row Mix - mov v25.16b, v0.16b - mov v26.16b, v1.16b - bcax v0.16b, v25.16b, v2.16b, v26.16b - bcax v1.16b, v26.16b, v3.16b, v2.16b - bcax v2.16b, v2.16b, v4.16b, v3.16b - bcax v3.16b, v3.16b, v25.16b, v4.16b - bcax v4.16b, v4.16b, v26.16b, v25.16b - mov v25.16b, v5.16b - mov v26.16b, v6.16b - bcax v5.16b, v25.16b, v7.16b, v26.16b - bcax v6.16b, v26.16b, v8.16b, v7.16b - bcax v7.16b, v7.16b, v9.16b, v8.16b - bcax v8.16b, v8.16b, v25.16b, v9.16b - bcax v9.16b, v9.16b, v26.16b, v25.16b - mov v26.16b, v11.16b - bcax v10.16b, v30.16b, v12.16b, v26.16b - bcax v11.16b, v26.16b, v13.16b, v12.16b - bcax v12.16b, v12.16b, v14.16b, v13.16b - bcax v13.16b, v13.16b, v30.16b, v14.16b - bcax v14.16b, v14.16b, v26.16b, v30.16b - mov v25.16b, v15.16b - mov v26.16b, v16.16b - bcax v15.16b, v25.16b, v17.16b, v26.16b - bcax v16.16b, v26.16b, v18.16b, v17.16b - bcax v17.16b, v17.16b, v19.16b, v18.16b - bcax v18.16b, v18.16b, v25.16b, v19.16b - bcax v19.16b, v19.16b, v26.16b, v25.16b - mov v25.16b, v20.16b - mov v26.16b, v21.16b - bcax v20.16b, v25.16b, v22.16b, v26.16b - bcax v21.16b, v26.16b, v23.16b, v22.16b - bcax v22.16b, v22.16b, v24.16b, v23.16b - bcax v23.16b, v23.16b, v25.16b, v24.16b - bcax v24.16b, v24.16b, v26.16b, v25.16b - ld1r {v30.2d}, [x1], #8 + mov V25.16B, V0.16B + mov V26.16B, V1.16B + bcax V0.16B, V25.16B, V2.16B, V26.16B + bcax V1.16B, V26.16B, V3.16B, V2.16B + bcax V2.16B, V2.16B, V4.16B, V3.16B + bcax V3.16B, V3.16B, V25.16B, V4.16B + bcax V4.16B, V4.16B, V26.16B, V25.16B + mov V25.16B, V5.16B + mov V26.16B, V6.16B + bcax V5.16B, V25.16B, V7.16B, V26.16B + bcax V6.16B, V26.16B, V8.16B, V7.16B + bcax V7.16B, V7.16B, V9.16B, V8.16B + bcax V8.16B, V8.16B, V25.16B, V9.16B + bcax V9.16B, V9.16B, V26.16B, V25.16B + mov V26.16B, V11.16B + bcax V10.16B, V30.16B, V12.16B, V26.16B + bcax V11.16B, V26.16B, V13.16B, V12.16B + bcax V12.16B, V12.16B, V14.16B, V13.16B + bcax V13.16B, V13.16B, V30.16B, V14.16B + bcax V14.16B, V14.16B, V26.16B, V30.16B + mov V25.16B, V15.16B + mov V26.16B, V16.16B + bcax V15.16B, V25.16B, V17.16B, V26.16B + bcax V16.16B, V26.16B, V18.16B, V17.16B + bcax V17.16B, V17.16B, V19.16B, V18.16B + bcax V18.16B, V18.16B, V25.16B, V19.16B + bcax V19.16B, V19.16B, V26.16B, V25.16B + mov V25.16B, V20.16B + mov V26.16B, V21.16B + bcax V20.16B, V25.16B, V22.16B, V26.16B + bcax V21.16B, V26.16B, V23.16B, V22.16B + bcax V22.16B, V22.16B, V24.16B, V23.16B + bcax V23.16B, V23.16B, V25.16B, V24.16B + bcax V24.16B, V24.16B, V26.16B, V25.16B + ld1r {V30.2D}, [x1], #8 subs x2, x2, #1 - eor v0.16b, v0.16b, v30.16b + eor V0.16B, V0.16B, V30.16B bne L_sha3_crypto_begin - st4 {v0.d, v1.d, v2.d, v3.d}[0], [x0], #32 - st4 {v4.d, v5.d, v6.d, v7.d}[0], [x0], #32 - st4 {v8.d, v9.d, v10.d, v11.d}[0], [x0], #32 - st4 {v12.d, v13.d, v14.d, v15.d}[0], [x0], #32 - st4 {v16.d, v17.d, v18.d, v19.d}[0], [x0], #32 - st4 {v20.d, v21.d, v22.d, v23.d}[0], [x0], #32 - st1 {v24.1d}, [x0] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + st4 {V0.D, V1.D, V2.D, V3.D}[0], [x0], #32 + st4 {V4.D, V5.D, V6.D, V7.D}[0], [x0], #32 + st4 {V8.D, V9.D, V10.D, V11.D}[0], [x0], #32 + st4 {V12.D, V13.D, V14.D, V15.D}[0], [x0], #32 + st4 {V16.D, V17.D, V18.D, V19.D}[0], [x0], #32 + st4 {V20.D, V21.D, V22.D, V23.D}[0], [x0], #32 + st1 {V24.1D}, [x0] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP ENDIF - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 16 L_SHA3_transform_base_r DCQ 0x0000000000000001, 0x0000000000008082 diff --git a/wolfcrypt/src/port/arm/armv8-sha512-asm.asm b/wolfcrypt/src/port/arm/armv8-sha512-asm.asm index 4c333808e6..c257f9183a 100644 --- a/wolfcrypt/src/port/arm/armv8-sha512-asm.asm +++ b/wolfcrypt/src/port/arm/armv8-sha512-asm.asm @@ -25,7 +25,7 @@ ; ruby ./sha2/sha512.rb arm64 \ ; ../wolfssl/wolfcrypt/src/port/arm/armv8-sha512-asm.asm IF :DEF:WOLFSSL_SHA512 :LOR: :DEF:WOLFSSL_SHA384 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 16 L_SHA512_transform_neon_len_k DCQ 0x428a2f98d728ae22, 0x7137449123ef65cd @@ -68,7 +68,7 @@ L_SHA512_transform_neon_len_k DCQ 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c DCQ 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a DCQ 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 16 L_SHA512_transform_neon_len_r8 DCQ 0x0007060504030201, 0x080f0e0d0c0b0a09 @@ -83,13 +83,13 @@ Transform_Sha512_Len_neon PROC stp x22, x23, [x29, #48] stp x24, x25, [x29, #64] stp x26, x27, [x29, #80] - stp d8, d9, [x29, #96] - stp d10, d11, [x29, #112] + stp D8, D9, [x29, #96] + stp D10, D11, [x29, #112] adrp x3, L_SHA512_transform_neon_len_k add x3, x3, L_SHA512_transform_neon_len_k adrp x27, L_SHA512_transform_neon_len_r8 add x27, x27, L_SHA512_transform_neon_len_r8 - ld1 {v11.16b}, [x27] + ld1 {V11.16B}, [x27] ; Load digest into working vars ldp x4, x5, [x0] ldp x6, x7, [x0, #16] @@ -99,31 +99,31 @@ Transform_Sha512_Len_neon PROC L_sha512_len_neon_begin ; Load W ; Copy digest to add in at end - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 mov x19, x4 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 mov x20, x5 - rev64 v0.16b, v0.16b + rev64 V0.16B, V0.16B mov x21, x6 - rev64 v1.16b, v1.16b + rev64 V1.16B, V1.16B mov x22, x7 - rev64 v2.16b, v2.16b + rev64 V2.16B, V2.16B mov x23, x8 - rev64 v3.16b, v3.16b + rev64 V3.16B, V3.16B mov x24, x9 - rev64 v4.16b, v4.16b + rev64 V4.16B, V4.16B mov x25, x10 - rev64 v5.16b, v5.16b + rev64 V5.16B, V5.16B mov x26, x11 - rev64 v6.16b, v6.16b - rev64 v7.16b, v7.16b + rev64 V6.16B, V6.16B + rev64 V7.16B, V7.16B ; Pre-calc: b ^ c eor x16, x5, x6 mov x27, #4 ; Start of 16 rounds L_sha512_len_neon_start ; Round 0 - mov x13, v0.d[0] + mov x13, V0.D[0] ldr x15, [x3], #8 ror x12, x8, #14 ror x14, x4, #28 @@ -145,47 +145,47 @@ L_sha512_len_neon_start add x7, x7, x11 add x11, x11, x14 ; Round 1 - mov x13, v0.d[1] + mov x13, V0.D[1] ldr x15, [x3], #8 - ext v10.16b, v0.16b, v1.16b, #8 + ext8 V10.16B, V0.16B, V1.16B, #8 ror x12, x7, #14 - shl v8.2d, v7.2d, #45 + shl V8.2D, V7.2D, #45 ror x14, x11, #28 - sri v8.2d, v7.2d, #19 + sri V8.2D, V7.2D, #19 eor x12, x12, x7, ror 18 - shl v9.2d, v7.2d, #3 + shl V9.2D, V7.2D, #3 eor x14, x14, x11, ror 34 - sri v9.2d, v7.2d, #61 + sri V9.2D, V7.2D, #61 eor x12, x12, x7, ror 41 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x14, x14, x11, ror 39 - ushr v8.2d, v7.2d, #6 + ushr V8.2D, V7.2D, #6 add x10, x10, x12 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x16, x11, x4 - add v0.2d, v0.2d, v9.2d + add V0.2D, V0.2D, V9.2D eor x12, x8, x9 - ext v9.16b, v4.16b, v5.16b, #8 + ext8 V9.16B, V4.16B, V5.16B, #8 and x17, x16, x17 - add v0.2d, v0.2d, v9.2d + add V0.2D, V0.2D, V9.2D and x12, x12, x7 - shl v8.2d, v10.2d, #63 + shl V8.2D, V10.2D, #63 add x10, x10, x13 - sri v8.2d, v10.2d, #1 + sri V8.2D, V10.2D, #1 eor x12, x12, x9 - tbl v9.16b, {v10.16b}, v11.16b + tbl V9.16B, {V10.16B}, V11.16B add x10, x10, x15 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x17, x17, x4 - ushr v10.2d, v10.2d, #7 + ushr V10.2D, V10.2D, #7 add x10, x10, x12 - eor v9.16b, v9.16b, v10.16b + eor V9.16B, V9.16B, V10.16B add x14, x14, x17 - add v0.2d, v0.2d, v9.2d + add V0.2D, V0.2D, V9.2D add x6, x6, x10 add x10, x10, x14 ; Round 2 - mov x13, v1.d[0] + mov x13, V1.D[0] ldr x15, [x3], #8 ror x12, x6, #14 ror x14, x10, #28 @@ -207,47 +207,47 @@ L_sha512_len_neon_start add x5, x5, x9 add x9, x9, x14 ; Round 3 - mov x13, v1.d[1] + mov x13, V1.D[1] ldr x15, [x3], #8 - ext v10.16b, v1.16b, v2.16b, #8 + ext8 V10.16B, V1.16B, V2.16B, #8 ror x12, x5, #14 - shl v8.2d, v0.2d, #45 + shl V8.2D, V0.2D, #45 ror x14, x9, #28 - sri v8.2d, v0.2d, #19 + sri V8.2D, V0.2D, #19 eor x12, x12, x5, ror 18 - shl v9.2d, v0.2d, #3 + shl V9.2D, V0.2D, #3 eor x14, x14, x9, ror 34 - sri v9.2d, v0.2d, #61 + sri V9.2D, V0.2D, #61 eor x12, x12, x5, ror 41 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x14, x14, x9, ror 39 - ushr v8.2d, v0.2d, #6 + ushr V8.2D, V0.2D, #6 add x8, x8, x12 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x16, x9, x10 - add v1.2d, v1.2d, v9.2d + add V1.2D, V1.2D, V9.2D eor x12, x6, x7 - ext v9.16b, v5.16b, v6.16b, #8 + ext8 V9.16B, V5.16B, V6.16B, #8 and x17, x16, x17 - add v1.2d, v1.2d, v9.2d + add V1.2D, V1.2D, V9.2D and x12, x12, x5 - shl v8.2d, v10.2d, #63 + shl V8.2D, V10.2D, #63 add x8, x8, x13 - sri v8.2d, v10.2d, #1 + sri V8.2D, V10.2D, #1 eor x12, x12, x7 - tbl v9.16b, {v10.16b}, v11.16b + tbl V9.16B, {V10.16B}, V11.16B add x8, x8, x15 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x17, x17, x10 - ushr v10.2d, v10.2d, #7 + ushr V10.2D, V10.2D, #7 add x8, x8, x12 - eor v9.16b, v9.16b, v10.16b + eor V9.16B, V9.16B, V10.16B add x14, x14, x17 - add v1.2d, v1.2d, v9.2d + add V1.2D, V1.2D, V9.2D add x4, x4, x8 add x8, x8, x14 ; Round 4 - mov x13, v2.d[0] + mov x13, V2.D[0] ldr x15, [x3], #8 ror x12, x4, #14 ror x14, x8, #28 @@ -269,47 +269,47 @@ L_sha512_len_neon_start add x11, x11, x7 add x7, x7, x14 ; Round 5 - mov x13, v2.d[1] + mov x13, V2.D[1] ldr x15, [x3], #8 - ext v10.16b, v2.16b, v3.16b, #8 + ext8 V10.16B, V2.16B, V3.16B, #8 ror x12, x11, #14 - shl v8.2d, v1.2d, #45 + shl V8.2D, V1.2D, #45 ror x14, x7, #28 - sri v8.2d, v1.2d, #19 + sri V8.2D, V1.2D, #19 eor x12, x12, x11, ror 18 - shl v9.2d, v1.2d, #3 + shl V9.2D, V1.2D, #3 eor x14, x14, x7, ror 34 - sri v9.2d, v1.2d, #61 + sri V9.2D, V1.2D, #61 eor x12, x12, x11, ror 41 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x14, x14, x7, ror 39 - ushr v8.2d, v1.2d, #6 + ushr V8.2D, V1.2D, #6 add x6, x6, x12 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x16, x7, x8 - add v2.2d, v2.2d, v9.2d + add V2.2D, V2.2D, V9.2D eor x12, x4, x5 - ext v9.16b, v6.16b, v7.16b, #8 + ext8 V9.16B, V6.16B, V7.16B, #8 and x17, x16, x17 - add v2.2d, v2.2d, v9.2d + add V2.2D, V2.2D, V9.2D and x12, x12, x11 - shl v8.2d, v10.2d, #63 + shl V8.2D, V10.2D, #63 add x6, x6, x13 - sri v8.2d, v10.2d, #1 + sri V8.2D, V10.2D, #1 eor x12, x12, x5 - tbl v9.16b, {v10.16b}, v11.16b + tbl V9.16B, {V10.16B}, V11.16B add x6, x6, x15 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x17, x17, x8 - ushr v10.2d, v10.2d, #7 + ushr V10.2D, V10.2D, #7 add x6, x6, x12 - eor v9.16b, v9.16b, v10.16b + eor V9.16B, V9.16B, V10.16B add x14, x14, x17 - add v2.2d, v2.2d, v9.2d + add V2.2D, V2.2D, V9.2D add x10, x10, x6 add x6, x6, x14 ; Round 6 - mov x13, v3.d[0] + mov x13, V3.D[0] ldr x15, [x3], #8 ror x12, x10, #14 ror x14, x6, #28 @@ -331,47 +331,47 @@ L_sha512_len_neon_start add x9, x9, x5 add x5, x5, x14 ; Round 7 - mov x13, v3.d[1] + mov x13, V3.D[1] ldr x15, [x3], #8 - ext v10.16b, v3.16b, v4.16b, #8 + ext8 V10.16B, V3.16B, V4.16B, #8 ror x12, x9, #14 - shl v8.2d, v2.2d, #45 + shl V8.2D, V2.2D, #45 ror x14, x5, #28 - sri v8.2d, v2.2d, #19 + sri V8.2D, V2.2D, #19 eor x12, x12, x9, ror 18 - shl v9.2d, v2.2d, #3 + shl V9.2D, V2.2D, #3 eor x14, x14, x5, ror 34 - sri v9.2d, v2.2d, #61 + sri V9.2D, V2.2D, #61 eor x12, x12, x9, ror 41 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x14, x14, x5, ror 39 - ushr v8.2d, v2.2d, #6 + ushr V8.2D, V2.2D, #6 add x4, x4, x12 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x16, x5, x6 - add v3.2d, v3.2d, v9.2d + add V3.2D, V3.2D, V9.2D eor x12, x10, x11 - ext v9.16b, v7.16b, v0.16b, #8 + ext8 V9.16B, V7.16B, V0.16B, #8 and x17, x16, x17 - add v3.2d, v3.2d, v9.2d + add V3.2D, V3.2D, V9.2D and x12, x12, x9 - shl v8.2d, v10.2d, #63 + shl V8.2D, V10.2D, #63 add x4, x4, x13 - sri v8.2d, v10.2d, #1 + sri V8.2D, V10.2D, #1 eor x12, x12, x11 - tbl v9.16b, {v10.16b}, v11.16b + tbl V9.16B, {V10.16B}, V11.16B add x4, x4, x15 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x17, x17, x6 - ushr v10.2d, v10.2d, #7 + ushr V10.2D, V10.2D, #7 add x4, x4, x12 - eor v9.16b, v9.16b, v10.16b + eor V9.16B, V9.16B, V10.16B add x14, x14, x17 - add v3.2d, v3.2d, v9.2d + add V3.2D, V3.2D, V9.2D add x8, x8, x4 add x4, x4, x14 ; Round 8 - mov x13, v4.d[0] + mov x13, V4.D[0] ldr x15, [x3], #8 ror x12, x8, #14 ror x14, x4, #28 @@ -393,47 +393,47 @@ L_sha512_len_neon_start add x7, x7, x11 add x11, x11, x14 ; Round 9 - mov x13, v4.d[1] + mov x13, V4.D[1] ldr x15, [x3], #8 - ext v10.16b, v4.16b, v5.16b, #8 + ext8 V10.16B, V4.16B, V5.16B, #8 ror x12, x7, #14 - shl v8.2d, v3.2d, #45 + shl V8.2D, V3.2D, #45 ror x14, x11, #28 - sri v8.2d, v3.2d, #19 + sri V8.2D, V3.2D, #19 eor x12, x12, x7, ror 18 - shl v9.2d, v3.2d, #3 + shl V9.2D, V3.2D, #3 eor x14, x14, x11, ror 34 - sri v9.2d, v3.2d, #61 + sri V9.2D, V3.2D, #61 eor x12, x12, x7, ror 41 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x14, x14, x11, ror 39 - ushr v8.2d, v3.2d, #6 + ushr V8.2D, V3.2D, #6 add x10, x10, x12 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x16, x11, x4 - add v4.2d, v4.2d, v9.2d + add V4.2D, V4.2D, V9.2D eor x12, x8, x9 - ext v9.16b, v0.16b, v1.16b, #8 + ext8 V9.16B, V0.16B, V1.16B, #8 and x17, x16, x17 - add v4.2d, v4.2d, v9.2d + add V4.2D, V4.2D, V9.2D and x12, x12, x7 - shl v8.2d, v10.2d, #63 + shl V8.2D, V10.2D, #63 add x10, x10, x13 - sri v8.2d, v10.2d, #1 + sri V8.2D, V10.2D, #1 eor x12, x12, x9 - tbl v9.16b, {v10.16b}, v11.16b + tbl V9.16B, {V10.16B}, V11.16B add x10, x10, x15 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x17, x17, x4 - ushr v10.2d, v10.2d, #7 + ushr V10.2D, V10.2D, #7 add x10, x10, x12 - eor v9.16b, v9.16b, v10.16b + eor V9.16B, V9.16B, V10.16B add x14, x14, x17 - add v4.2d, v4.2d, v9.2d + add V4.2D, V4.2D, V9.2D add x6, x6, x10 add x10, x10, x14 ; Round 10 - mov x13, v5.d[0] + mov x13, V5.D[0] ldr x15, [x3], #8 ror x12, x6, #14 ror x14, x10, #28 @@ -455,47 +455,47 @@ L_sha512_len_neon_start add x5, x5, x9 add x9, x9, x14 ; Round 11 - mov x13, v5.d[1] + mov x13, V5.D[1] ldr x15, [x3], #8 - ext v10.16b, v5.16b, v6.16b, #8 + ext8 V10.16B, V5.16B, V6.16B, #8 ror x12, x5, #14 - shl v8.2d, v4.2d, #45 + shl V8.2D, V4.2D, #45 ror x14, x9, #28 - sri v8.2d, v4.2d, #19 + sri V8.2D, V4.2D, #19 eor x12, x12, x5, ror 18 - shl v9.2d, v4.2d, #3 + shl V9.2D, V4.2D, #3 eor x14, x14, x9, ror 34 - sri v9.2d, v4.2d, #61 + sri V9.2D, V4.2D, #61 eor x12, x12, x5, ror 41 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x14, x14, x9, ror 39 - ushr v8.2d, v4.2d, #6 + ushr V8.2D, V4.2D, #6 add x8, x8, x12 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x16, x9, x10 - add v5.2d, v5.2d, v9.2d + add V5.2D, V5.2D, V9.2D eor x12, x6, x7 - ext v9.16b, v1.16b, v2.16b, #8 + ext8 V9.16B, V1.16B, V2.16B, #8 and x17, x16, x17 - add v5.2d, v5.2d, v9.2d + add V5.2D, V5.2D, V9.2D and x12, x12, x5 - shl v8.2d, v10.2d, #63 + shl V8.2D, V10.2D, #63 add x8, x8, x13 - sri v8.2d, v10.2d, #1 + sri V8.2D, V10.2D, #1 eor x12, x12, x7 - tbl v9.16b, {v10.16b}, v11.16b + tbl V9.16B, {V10.16B}, V11.16B add x8, x8, x15 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x17, x17, x10 - ushr v10.2d, v10.2d, #7 + ushr V10.2D, V10.2D, #7 add x8, x8, x12 - eor v9.16b, v9.16b, v10.16b + eor V9.16B, V9.16B, V10.16B add x14, x14, x17 - add v5.2d, v5.2d, v9.2d + add V5.2D, V5.2D, V9.2D add x4, x4, x8 add x8, x8, x14 ; Round 12 - mov x13, v6.d[0] + mov x13, V6.D[0] ldr x15, [x3], #8 ror x12, x4, #14 ror x14, x8, #28 @@ -517,47 +517,47 @@ L_sha512_len_neon_start add x11, x11, x7 add x7, x7, x14 ; Round 13 - mov x13, v6.d[1] + mov x13, V6.D[1] ldr x15, [x3], #8 - ext v10.16b, v6.16b, v7.16b, #8 + ext8 V10.16B, V6.16B, V7.16B, #8 ror x12, x11, #14 - shl v8.2d, v5.2d, #45 + shl V8.2D, V5.2D, #45 ror x14, x7, #28 - sri v8.2d, v5.2d, #19 + sri V8.2D, V5.2D, #19 eor x12, x12, x11, ror 18 - shl v9.2d, v5.2d, #3 + shl V9.2D, V5.2D, #3 eor x14, x14, x7, ror 34 - sri v9.2d, v5.2d, #61 + sri V9.2D, V5.2D, #61 eor x12, x12, x11, ror 41 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x14, x14, x7, ror 39 - ushr v8.2d, v5.2d, #6 + ushr V8.2D, V5.2D, #6 add x6, x6, x12 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x16, x7, x8 - add v6.2d, v6.2d, v9.2d + add V6.2D, V6.2D, V9.2D eor x12, x4, x5 - ext v9.16b, v2.16b, v3.16b, #8 + ext8 V9.16B, V2.16B, V3.16B, #8 and x17, x16, x17 - add v6.2d, v6.2d, v9.2d + add V6.2D, V6.2D, V9.2D and x12, x12, x11 - shl v8.2d, v10.2d, #63 + shl V8.2D, V10.2D, #63 add x6, x6, x13 - sri v8.2d, v10.2d, #1 + sri V8.2D, V10.2D, #1 eor x12, x12, x5 - tbl v9.16b, {v10.16b}, v11.16b + tbl V9.16B, {V10.16B}, V11.16B add x6, x6, x15 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x17, x17, x8 - ushr v10.2d, v10.2d, #7 + ushr V10.2D, V10.2D, #7 add x6, x6, x12 - eor v9.16b, v9.16b, v10.16b + eor V9.16B, V9.16B, V10.16B add x14, x14, x17 - add v6.2d, v6.2d, v9.2d + add V6.2D, V6.2D, V9.2D add x10, x10, x6 add x6, x6, x14 ; Round 14 - mov x13, v7.d[0] + mov x13, V7.D[0] ldr x15, [x3], #8 ror x12, x10, #14 ror x14, x6, #28 @@ -579,49 +579,49 @@ L_sha512_len_neon_start add x9, x9, x5 add x5, x5, x14 ; Round 15 - mov x13, v7.d[1] + mov x13, V7.D[1] ldr x15, [x3], #8 - ext v10.16b, v7.16b, v0.16b, #8 + ext8 V10.16B, V7.16B, V0.16B, #8 ror x12, x9, #14 - shl v8.2d, v6.2d, #45 + shl V8.2D, V6.2D, #45 ror x14, x5, #28 - sri v8.2d, v6.2d, #19 + sri V8.2D, V6.2D, #19 eor x12, x12, x9, ror 18 - shl v9.2d, v6.2d, #3 + shl V9.2D, V6.2D, #3 eor x14, x14, x5, ror 34 - sri v9.2d, v6.2d, #61 + sri V9.2D, V6.2D, #61 eor x12, x12, x9, ror 41 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x14, x14, x5, ror 39 - ushr v8.2d, v6.2d, #6 + ushr V8.2D, V6.2D, #6 add x4, x4, x12 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x16, x5, x6 - add v7.2d, v7.2d, v9.2d + add V7.2D, V7.2D, V9.2D eor x12, x10, x11 - ext v9.16b, v3.16b, v4.16b, #8 + ext8 V9.16B, V3.16B, V4.16B, #8 and x17, x16, x17 - add v7.2d, v7.2d, v9.2d + add V7.2D, V7.2D, V9.2D and x12, x12, x9 - shl v8.2d, v10.2d, #63 + shl V8.2D, V10.2D, #63 add x4, x4, x13 - sri v8.2d, v10.2d, #1 + sri V8.2D, V10.2D, #1 eor x12, x12, x11 - tbl v9.16b, {v10.16b}, v11.16b + tbl V9.16B, {V10.16B}, V11.16B add x4, x4, x15 - eor v9.16b, v9.16b, v8.16b + eor V9.16B, V9.16B, V8.16B eor x17, x17, x6 - ushr v10.2d, v10.2d, #7 + ushr V10.2D, V10.2D, #7 add x4, x4, x12 - eor v9.16b, v9.16b, v10.16b + eor V9.16B, V9.16B, V10.16B add x14, x14, x17 - add v7.2d, v7.2d, v9.2d + add V7.2D, V7.2D, V9.2D add x8, x8, x4 add x4, x4, x14 subs x27, x27, #1 bne L_sha512_len_neon_start ; Round 0 - mov x13, v0.d[0] + mov x13, V0.D[0] ldr x15, [x3], #8 ror x12, x8, #14 ror x14, x4, #28 @@ -643,7 +643,7 @@ L_sha512_len_neon_start add x7, x7, x11 add x11, x11, x14 ; Round 1 - mov x13, v0.d[1] + mov x13, V0.D[1] ldr x15, [x3], #8 ror x12, x7, #14 ror x14, x11, #28 @@ -665,7 +665,7 @@ L_sha512_len_neon_start add x6, x6, x10 add x10, x10, x14 ; Round 2 - mov x13, v1.d[0] + mov x13, V1.D[0] ldr x15, [x3], #8 ror x12, x6, #14 ror x14, x10, #28 @@ -687,7 +687,7 @@ L_sha512_len_neon_start add x5, x5, x9 add x9, x9, x14 ; Round 3 - mov x13, v1.d[1] + mov x13, V1.D[1] ldr x15, [x3], #8 ror x12, x5, #14 ror x14, x9, #28 @@ -709,7 +709,7 @@ L_sha512_len_neon_start add x4, x4, x8 add x8, x8, x14 ; Round 4 - mov x13, v2.d[0] + mov x13, V2.D[0] ldr x15, [x3], #8 ror x12, x4, #14 ror x14, x8, #28 @@ -731,7 +731,7 @@ L_sha512_len_neon_start add x11, x11, x7 add x7, x7, x14 ; Round 5 - mov x13, v2.d[1] + mov x13, V2.D[1] ldr x15, [x3], #8 ror x12, x11, #14 ror x14, x7, #28 @@ -753,7 +753,7 @@ L_sha512_len_neon_start add x10, x10, x6 add x6, x6, x14 ; Round 6 - mov x13, v3.d[0] + mov x13, V3.D[0] ldr x15, [x3], #8 ror x12, x10, #14 ror x14, x6, #28 @@ -775,7 +775,7 @@ L_sha512_len_neon_start add x9, x9, x5 add x5, x5, x14 ; Round 7 - mov x13, v3.d[1] + mov x13, V3.D[1] ldr x15, [x3], #8 ror x12, x9, #14 ror x14, x5, #28 @@ -797,7 +797,7 @@ L_sha512_len_neon_start add x8, x8, x4 add x4, x4, x14 ; Round 8 - mov x13, v4.d[0] + mov x13, V4.D[0] ldr x15, [x3], #8 ror x12, x8, #14 ror x14, x4, #28 @@ -819,7 +819,7 @@ L_sha512_len_neon_start add x7, x7, x11 add x11, x11, x14 ; Round 9 - mov x13, v4.d[1] + mov x13, V4.D[1] ldr x15, [x3], #8 ror x12, x7, #14 ror x14, x11, #28 @@ -841,7 +841,7 @@ L_sha512_len_neon_start add x6, x6, x10 add x10, x10, x14 ; Round 10 - mov x13, v5.d[0] + mov x13, V5.D[0] ldr x15, [x3], #8 ror x12, x6, #14 ror x14, x10, #28 @@ -863,7 +863,7 @@ L_sha512_len_neon_start add x5, x5, x9 add x9, x9, x14 ; Round 11 - mov x13, v5.d[1] + mov x13, V5.D[1] ldr x15, [x3], #8 ror x12, x5, #14 ror x14, x9, #28 @@ -885,7 +885,7 @@ L_sha512_len_neon_start add x4, x4, x8 add x8, x8, x14 ; Round 12 - mov x13, v6.d[0] + mov x13, V6.D[0] ldr x15, [x3], #8 ror x12, x4, #14 ror x14, x8, #28 @@ -907,7 +907,7 @@ L_sha512_len_neon_start add x11, x11, x7 add x7, x7, x14 ; Round 13 - mov x13, v6.d[1] + mov x13, V6.D[1] ldr x15, [x3], #8 ror x12, x11, #14 ror x14, x7, #28 @@ -929,7 +929,7 @@ L_sha512_len_neon_start add x10, x10, x6 add x6, x6, x14 ; Round 14 - mov x13, v7.d[0] + mov x13, V7.D[0] ldr x15, [x3], #8 ror x12, x10, #14 ror x14, x6, #28 @@ -951,7 +951,7 @@ L_sha512_len_neon_start add x9, x9, x5 add x5, x5, x14 ; Round 15 - mov x13, v7.d[1] + mov x13, V7.D[1] ldr x15, [x3], #8 ror x12, x9, #14 ror x14, x5, #28 @@ -992,13 +992,13 @@ L_sha512_len_neon_start ldp x22, x23, [x29, #48] ldp x24, x25, [x29, #64] ldp x26, x27, [x29, #80] - ldp d8, d9, [x29, #96] - ldp d10, d11, [x29, #112] + ldp D8, D9, [x29, #96] + ldp D10, D11, [x29, #112] ldp x29, x30, [sp], #0x80 ret ENDP IF :DEF:WOLFSSL_ARMASM_CRYPTO_SHA512 - AREA |.rodata|, DATA, READONLY + AREA |.rodata|, DATA, READONLY, ALIGN=4 ALIGN 16 L_SHA512_trans_crypto_len_k DCQ 0x428a2f98d728ae22, 0x7137449123ef65cd @@ -1047,522 +1047,522 @@ L_SHA512_trans_crypto_len_k Transform_Sha512_Len_crypto PROC stp x29, x30, [sp, #-80]! add x29, sp, #0 - stp d8, d9, [x29, #16] - stp d10, d11, [x29, #32] - stp d12, d13, [x29, #48] - stp d14, d15, [x29, #64] + stp D8, D9, [x29, #16] + stp D10, D11, [x29, #32] + stp D12, D13, [x29, #48] + stp D14, D15, [x29, #64] adrp x4, L_SHA512_trans_crypto_len_k add x4, x4, L_SHA512_trans_crypto_len_k ; .arch_extension sha3 ; Load K into vector registers - ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [x4], #0x40 - ld1 {v12.2d, v13.2d, v14.2d, v15.2d}, [x4], #0x40 + ld1 {V8.2D, V9.2D, V10.2D, V11.2D}, [x4], #0x40 + ld1 {V12.2D, V13.2D, V14.2D, V15.2D}, [x4], #0x40 ; Load digest into working vars - ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x0] + ld1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x0] ; Start of loop processing a block L_sha512_len_crypto_begin mov x3, x4 ; Load W - ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x1], #0x40 - ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x1], #0x40 - rev64 v0.16b, v0.16b - rev64 v1.16b, v1.16b - rev64 v2.16b, v2.16b - rev64 v3.16b, v3.16b - rev64 v4.16b, v4.16b - rev64 v5.16b, v5.16b - rev64 v6.16b, v6.16b - rev64 v7.16b, v7.16b + ld1 {V0.16B, V1.16B, V2.16B, V3.16B}, [x1], #0x40 + ld1 {V4.16B, V5.16B, V6.16B, V7.16B}, [x1], #0x40 + rev64 V0.16B, V0.16B + rev64 V1.16B, V1.16B + rev64 V2.16B, V2.16B + rev64 V3.16B, V3.16B + rev64 V4.16B, V4.16B + rev64 V5.16B, V5.16B + rev64 V6.16B, V6.16B + rev64 V7.16B, V7.16B ; Copy digest to add in at end - mov v28.16b, v24.16b - mov v29.16b, v25.16b - mov v30.16b, v26.16b - mov v31.16b, v27.16b + mov V28.16B, V24.16B + mov V29.16B, V25.16B + mov V30.16B, V26.16B + mov V31.16B, V27.16B ; Start of 16 rounds ; Round 0 - add v20.2d, v0.2d, v8.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v26.16b, v27.16b, #8 - ext v22.16b, v25.16b, v26.16b, #8 - add v27.2d, v27.2d, v20.2d - sha512h q27, q21, v22.2d - add v23.2d, v25.2d, v27.2d - sha512h2 q27, q25, v24.2d + add V20.2D, V0.2D, V8.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V26.16B, V27.16B, #8 + ext8 V22.16B, V25.16B, V26.16B, #8 + add V27.2D, V27.2D, V20.2D + sha512h Q27, Q21, V22.2D + add V23.2D, V25.2D, V27.2D + sha512h2 Q27, Q25, V24.2D ; Round 1 - add v20.2d, v1.2d, v9.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v23.16b, v26.16b, #8 - ext v22.16b, v24.16b, v23.16b, #8 - add v26.2d, v26.2d, v20.2d - sha512h q26, q21, v22.2d - add v25.2d, v24.2d, v26.2d - sha512h2 q26, q24, v27.2d + add V20.2D, V1.2D, V9.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V23.16B, V26.16B, #8 + ext8 V22.16B, V24.16B, V23.16B, #8 + add V26.2D, V26.2D, V20.2D + sha512h Q26, Q21, V22.2D + add V25.2D, V24.2D, V26.2D + sha512h2 Q26, Q24, V27.2D ; Round 2 - add v20.2d, v2.2d, v10.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v25.16b, v23.16b, #8 - ext v22.16b, v27.16b, v25.16b, #8 - add v23.2d, v23.2d, v20.2d - sha512h q23, q21, v22.2d - add v24.2d, v27.2d, v23.2d - sha512h2 q23, q27, v26.2d + add V20.2D, V2.2D, V10.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V25.16B, V23.16B, #8 + ext8 V22.16B, V27.16B, V25.16B, #8 + add V23.2D, V23.2D, V20.2D + sha512h Q23, Q21, V22.2D + add V24.2D, V27.2D, V23.2D + sha512h2 Q23, Q27, V26.2D ; Round 3 - add v20.2d, v3.2d, v11.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v24.16b, v25.16b, #8 - ext v22.16b, v26.16b, v24.16b, #8 - add v25.2d, v25.2d, v20.2d - sha512h q25, q21, v22.2d - add v27.2d, v26.2d, v25.2d - sha512h2 q25, q26, v23.2d + add V20.2D, V3.2D, V11.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V24.16B, V25.16B, #8 + ext8 V22.16B, V26.16B, V24.16B, #8 + add V25.2D, V25.2D, V20.2D + sha512h Q25, Q21, V22.2D + add V27.2D, V26.2D, V25.2D + sha512h2 Q25, Q26, V23.2D ; Round 4 - add v20.2d, v4.2d, v12.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v27.16b, v24.16b, #8 - ext v22.16b, v23.16b, v27.16b, #8 - add v24.2d, v24.2d, v20.2d - sha512h q24, q21, v22.2d - add v26.2d, v23.2d, v24.2d - sha512h2 q24, q23, v25.2d + add V20.2D, V4.2D, V12.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V27.16B, V24.16B, #8 + ext8 V22.16B, V23.16B, V27.16B, #8 + add V24.2D, V24.2D, V20.2D + sha512h Q24, Q21, V22.2D + add V26.2D, V23.2D, V24.2D + sha512h2 Q24, Q23, V25.2D ; Round 5 - add v20.2d, v5.2d, v13.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v26.16b, v27.16b, #8 - ext v22.16b, v25.16b, v26.16b, #8 - add v27.2d, v27.2d, v20.2d - sha512h q27, q21, v22.2d - add v23.2d, v25.2d, v27.2d - sha512h2 q27, q25, v24.2d + add V20.2D, V5.2D, V13.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V26.16B, V27.16B, #8 + ext8 V22.16B, V25.16B, V26.16B, #8 + add V27.2D, V27.2D, V20.2D + sha512h Q27, Q21, V22.2D + add V23.2D, V25.2D, V27.2D + sha512h2 Q27, Q25, V24.2D ; Round 6 - add v20.2d, v6.2d, v14.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v23.16b, v26.16b, #8 - ext v22.16b, v24.16b, v23.16b, #8 - add v26.2d, v26.2d, v20.2d - sha512h q26, q21, v22.2d - add v25.2d, v24.2d, v26.2d - sha512h2 q26, q24, v27.2d + add V20.2D, V6.2D, V14.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V23.16B, V26.16B, #8 + ext8 V22.16B, V24.16B, V23.16B, #8 + add V26.2D, V26.2D, V20.2D + sha512h Q26, Q21, V22.2D + add V25.2D, V24.2D, V26.2D + sha512h2 Q26, Q24, V27.2D ; Round 7 - add v20.2d, v7.2d, v15.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v25.16b, v23.16b, #8 - ext v22.16b, v27.16b, v25.16b, #8 - add v23.2d, v23.2d, v20.2d - sha512h q23, q21, v22.2d - add v24.2d, v27.2d, v23.2d - sha512h2 q23, q27, v26.2d + add V20.2D, V7.2D, V15.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V25.16B, V23.16B, #8 + ext8 V22.16B, V27.16B, V25.16B, #8 + add V23.2D, V23.2D, V20.2D + sha512h Q23, Q21, V22.2D + add V24.2D, V27.2D, V23.2D + sha512h2 Q23, Q27, V26.2D ; Load next 8 64-bit words of K - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 ; Round 8 - sha512su0 v0.2d, v1.2d - ext v21.16b, v4.16b, v5.16b, #8 - sha512su1 v0.2d, v7.2d, v21.2d - add v20.2d, v0.2d, v16.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v24.16b, v25.16b, #8 - ext v22.16b, v26.16b, v24.16b, #8 - add v25.2d, v25.2d, v20.2d - sha512h q25, q21, v22.2d - add v27.2d, v26.2d, v25.2d - sha512h2 q25, q26, v23.2d + sha512su0 V0.2D, V1.2D + ext8 V21.16B, V4.16B, V5.16B, #8 + sha512su1 V0.2D, V7.2D, V21.2D + add V20.2D, V0.2D, V16.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V24.16B, V25.16B, #8 + ext8 V22.16B, V26.16B, V24.16B, #8 + add V25.2D, V25.2D, V20.2D + sha512h Q25, Q21, V22.2D + add V27.2D, V26.2D, V25.2D + sha512h2 Q25, Q26, V23.2D ; Round 9 - sha512su0 v1.2d, v2.2d - ext v21.16b, v5.16b, v6.16b, #8 - sha512su1 v1.2d, v0.2d, v21.2d - add v20.2d, v1.2d, v17.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v27.16b, v24.16b, #8 - ext v22.16b, v23.16b, v27.16b, #8 - add v24.2d, v24.2d, v20.2d - sha512h q24, q21, v22.2d - add v26.2d, v23.2d, v24.2d - sha512h2 q24, q23, v25.2d + sha512su0 V1.2D, V2.2D + ext8 V21.16B, V5.16B, V6.16B, #8 + sha512su1 V1.2D, V0.2D, V21.2D + add V20.2D, V1.2D, V17.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V27.16B, V24.16B, #8 + ext8 V22.16B, V23.16B, V27.16B, #8 + add V24.2D, V24.2D, V20.2D + sha512h Q24, Q21, V22.2D + add V26.2D, V23.2D, V24.2D + sha512h2 Q24, Q23, V25.2D ; Round 10 - sha512su0 v2.2d, v3.2d - ext v21.16b, v6.16b, v7.16b, #8 - sha512su1 v2.2d, v1.2d, v21.2d - add v20.2d, v2.2d, v18.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v26.16b, v27.16b, #8 - ext v22.16b, v25.16b, v26.16b, #8 - add v27.2d, v27.2d, v20.2d - sha512h q27, q21, v22.2d - add v23.2d, v25.2d, v27.2d - sha512h2 q27, q25, v24.2d + sha512su0 V2.2D, V3.2D + ext8 V21.16B, V6.16B, V7.16B, #8 + sha512su1 V2.2D, V1.2D, V21.2D + add V20.2D, V2.2D, V18.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V26.16B, V27.16B, #8 + ext8 V22.16B, V25.16B, V26.16B, #8 + add V27.2D, V27.2D, V20.2D + sha512h Q27, Q21, V22.2D + add V23.2D, V25.2D, V27.2D + sha512h2 Q27, Q25, V24.2D ; Round 11 - sha512su0 v3.2d, v4.2d - ext v21.16b, v7.16b, v0.16b, #8 - sha512su1 v3.2d, v2.2d, v21.2d - add v20.2d, v3.2d, v19.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v23.16b, v26.16b, #8 - ext v22.16b, v24.16b, v23.16b, #8 - add v26.2d, v26.2d, v20.2d - sha512h q26, q21, v22.2d - add v25.2d, v24.2d, v26.2d - sha512h2 q26, q24, v27.2d + sha512su0 V3.2D, V4.2D + ext8 V21.16B, V7.16B, V0.16B, #8 + sha512su1 V3.2D, V2.2D, V21.2D + add V20.2D, V3.2D, V19.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V23.16B, V26.16B, #8 + ext8 V22.16B, V24.16B, V23.16B, #8 + add V26.2D, V26.2D, V20.2D + sha512h Q26, Q21, V22.2D + add V25.2D, V24.2D, V26.2D + sha512h2 Q26, Q24, V27.2D ; Load next 8 64-bit words of K - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 ; Round 12 - sha512su0 v4.2d, v5.2d - ext v21.16b, v0.16b, v1.16b, #8 - sha512su1 v4.2d, v3.2d, v21.2d - add v20.2d, v4.2d, v16.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v25.16b, v23.16b, #8 - ext v22.16b, v27.16b, v25.16b, #8 - add v23.2d, v23.2d, v20.2d - sha512h q23, q21, v22.2d - add v24.2d, v27.2d, v23.2d - sha512h2 q23, q27, v26.2d + sha512su0 V4.2D, V5.2D + ext8 V21.16B, V0.16B, V1.16B, #8 + sha512su1 V4.2D, V3.2D, V21.2D + add V20.2D, V4.2D, V16.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V25.16B, V23.16B, #8 + ext8 V22.16B, V27.16B, V25.16B, #8 + add V23.2D, V23.2D, V20.2D + sha512h Q23, Q21, V22.2D + add V24.2D, V27.2D, V23.2D + sha512h2 Q23, Q27, V26.2D ; Round 13 - sha512su0 v5.2d, v6.2d - ext v21.16b, v1.16b, v2.16b, #8 - sha512su1 v5.2d, v4.2d, v21.2d - add v20.2d, v5.2d, v17.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v24.16b, v25.16b, #8 - ext v22.16b, v26.16b, v24.16b, #8 - add v25.2d, v25.2d, v20.2d - sha512h q25, q21, v22.2d - add v27.2d, v26.2d, v25.2d - sha512h2 q25, q26, v23.2d + sha512su0 V5.2D, V6.2D + ext8 V21.16B, V1.16B, V2.16B, #8 + sha512su1 V5.2D, V4.2D, V21.2D + add V20.2D, V5.2D, V17.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V24.16B, V25.16B, #8 + ext8 V22.16B, V26.16B, V24.16B, #8 + add V25.2D, V25.2D, V20.2D + sha512h Q25, Q21, V22.2D + add V27.2D, V26.2D, V25.2D + sha512h2 Q25, Q26, V23.2D ; Round 14 - sha512su0 v6.2d, v7.2d - ext v21.16b, v2.16b, v3.16b, #8 - sha512su1 v6.2d, v5.2d, v21.2d - add v20.2d, v6.2d, v18.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v27.16b, v24.16b, #8 - ext v22.16b, v23.16b, v27.16b, #8 - add v24.2d, v24.2d, v20.2d - sha512h q24, q21, v22.2d - add v26.2d, v23.2d, v24.2d - sha512h2 q24, q23, v25.2d + sha512su0 V6.2D, V7.2D + ext8 V21.16B, V2.16B, V3.16B, #8 + sha512su1 V6.2D, V5.2D, V21.2D + add V20.2D, V6.2D, V18.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V27.16B, V24.16B, #8 + ext8 V22.16B, V23.16B, V27.16B, #8 + add V24.2D, V24.2D, V20.2D + sha512h Q24, Q21, V22.2D + add V26.2D, V23.2D, V24.2D + sha512h2 Q24, Q23, V25.2D ; Round 15 - sha512su0 v7.2d, v0.2d - ext v21.16b, v3.16b, v4.16b, #8 - sha512su1 v7.2d, v6.2d, v21.2d - add v20.2d, v7.2d, v19.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v26.16b, v27.16b, #8 - ext v22.16b, v25.16b, v26.16b, #8 - add v27.2d, v27.2d, v20.2d - sha512h q27, q21, v22.2d - add v23.2d, v25.2d, v27.2d - sha512h2 q27, q25, v24.2d + sha512su0 V7.2D, V0.2D + ext8 V21.16B, V3.16B, V4.16B, #8 + sha512su1 V7.2D, V6.2D, V21.2D + add V20.2D, V7.2D, V19.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V26.16B, V27.16B, #8 + ext8 V22.16B, V25.16B, V26.16B, #8 + add V27.2D, V27.2D, V20.2D + sha512h Q27, Q21, V22.2D + add V23.2D, V25.2D, V27.2D + sha512h2 Q27, Q25, V24.2D ; Load next 8 64-bit words of K - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 ; Round 16 - sha512su0 v0.2d, v1.2d - ext v21.16b, v4.16b, v5.16b, #8 - sha512su1 v0.2d, v7.2d, v21.2d - add v20.2d, v0.2d, v16.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v23.16b, v26.16b, #8 - ext v22.16b, v24.16b, v23.16b, #8 - add v26.2d, v26.2d, v20.2d - sha512h q26, q21, v22.2d - add v25.2d, v24.2d, v26.2d - sha512h2 q26, q24, v27.2d + sha512su0 V0.2D, V1.2D + ext8 V21.16B, V4.16B, V5.16B, #8 + sha512su1 V0.2D, V7.2D, V21.2D + add V20.2D, V0.2D, V16.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V23.16B, V26.16B, #8 + ext8 V22.16B, V24.16B, V23.16B, #8 + add V26.2D, V26.2D, V20.2D + sha512h Q26, Q21, V22.2D + add V25.2D, V24.2D, V26.2D + sha512h2 Q26, Q24, V27.2D ; Round 17 - sha512su0 v1.2d, v2.2d - ext v21.16b, v5.16b, v6.16b, #8 - sha512su1 v1.2d, v0.2d, v21.2d - add v20.2d, v1.2d, v17.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v25.16b, v23.16b, #8 - ext v22.16b, v27.16b, v25.16b, #8 - add v23.2d, v23.2d, v20.2d - sha512h q23, q21, v22.2d - add v24.2d, v27.2d, v23.2d - sha512h2 q23, q27, v26.2d + sha512su0 V1.2D, V2.2D + ext8 V21.16B, V5.16B, V6.16B, #8 + sha512su1 V1.2D, V0.2D, V21.2D + add V20.2D, V1.2D, V17.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V25.16B, V23.16B, #8 + ext8 V22.16B, V27.16B, V25.16B, #8 + add V23.2D, V23.2D, V20.2D + sha512h Q23, Q21, V22.2D + add V24.2D, V27.2D, V23.2D + sha512h2 Q23, Q27, V26.2D ; Round 18 - sha512su0 v2.2d, v3.2d - ext v21.16b, v6.16b, v7.16b, #8 - sha512su1 v2.2d, v1.2d, v21.2d - add v20.2d, v2.2d, v18.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v24.16b, v25.16b, #8 - ext v22.16b, v26.16b, v24.16b, #8 - add v25.2d, v25.2d, v20.2d - sha512h q25, q21, v22.2d - add v27.2d, v26.2d, v25.2d - sha512h2 q25, q26, v23.2d + sha512su0 V2.2D, V3.2D + ext8 V21.16B, V6.16B, V7.16B, #8 + sha512su1 V2.2D, V1.2D, V21.2D + add V20.2D, V2.2D, V18.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V24.16B, V25.16B, #8 + ext8 V22.16B, V26.16B, V24.16B, #8 + add V25.2D, V25.2D, V20.2D + sha512h Q25, Q21, V22.2D + add V27.2D, V26.2D, V25.2D + sha512h2 Q25, Q26, V23.2D ; Round 19 - sha512su0 v3.2d, v4.2d - ext v21.16b, v7.16b, v0.16b, #8 - sha512su1 v3.2d, v2.2d, v21.2d - add v20.2d, v3.2d, v19.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v27.16b, v24.16b, #8 - ext v22.16b, v23.16b, v27.16b, #8 - add v24.2d, v24.2d, v20.2d - sha512h q24, q21, v22.2d - add v26.2d, v23.2d, v24.2d - sha512h2 q24, q23, v25.2d + sha512su0 V3.2D, V4.2D + ext8 V21.16B, V7.16B, V0.16B, #8 + sha512su1 V3.2D, V2.2D, V21.2D + add V20.2D, V3.2D, V19.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V27.16B, V24.16B, #8 + ext8 V22.16B, V23.16B, V27.16B, #8 + add V24.2D, V24.2D, V20.2D + sha512h Q24, Q21, V22.2D + add V26.2D, V23.2D, V24.2D + sha512h2 Q24, Q23, V25.2D ; Load next 8 64-bit words of K - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 ; Round 20 - sha512su0 v4.2d, v5.2d - ext v21.16b, v0.16b, v1.16b, #8 - sha512su1 v4.2d, v3.2d, v21.2d - add v20.2d, v4.2d, v16.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v26.16b, v27.16b, #8 - ext v22.16b, v25.16b, v26.16b, #8 - add v27.2d, v27.2d, v20.2d - sha512h q27, q21, v22.2d - add v23.2d, v25.2d, v27.2d - sha512h2 q27, q25, v24.2d + sha512su0 V4.2D, V5.2D + ext8 V21.16B, V0.16B, V1.16B, #8 + sha512su1 V4.2D, V3.2D, V21.2D + add V20.2D, V4.2D, V16.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V26.16B, V27.16B, #8 + ext8 V22.16B, V25.16B, V26.16B, #8 + add V27.2D, V27.2D, V20.2D + sha512h Q27, Q21, V22.2D + add V23.2D, V25.2D, V27.2D + sha512h2 Q27, Q25, V24.2D ; Round 21 - sha512su0 v5.2d, v6.2d - ext v21.16b, v1.16b, v2.16b, #8 - sha512su1 v5.2d, v4.2d, v21.2d - add v20.2d, v5.2d, v17.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v23.16b, v26.16b, #8 - ext v22.16b, v24.16b, v23.16b, #8 - add v26.2d, v26.2d, v20.2d - sha512h q26, q21, v22.2d - add v25.2d, v24.2d, v26.2d - sha512h2 q26, q24, v27.2d + sha512su0 V5.2D, V6.2D + ext8 V21.16B, V1.16B, V2.16B, #8 + sha512su1 V5.2D, V4.2D, V21.2D + add V20.2D, V5.2D, V17.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V23.16B, V26.16B, #8 + ext8 V22.16B, V24.16B, V23.16B, #8 + add V26.2D, V26.2D, V20.2D + sha512h Q26, Q21, V22.2D + add V25.2D, V24.2D, V26.2D + sha512h2 Q26, Q24, V27.2D ; Round 22 - sha512su0 v6.2d, v7.2d - ext v21.16b, v2.16b, v3.16b, #8 - sha512su1 v6.2d, v5.2d, v21.2d - add v20.2d, v6.2d, v18.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v25.16b, v23.16b, #8 - ext v22.16b, v27.16b, v25.16b, #8 - add v23.2d, v23.2d, v20.2d - sha512h q23, q21, v22.2d - add v24.2d, v27.2d, v23.2d - sha512h2 q23, q27, v26.2d + sha512su0 V6.2D, V7.2D + ext8 V21.16B, V2.16B, V3.16B, #8 + sha512su1 V6.2D, V5.2D, V21.2D + add V20.2D, V6.2D, V18.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V25.16B, V23.16B, #8 + ext8 V22.16B, V27.16B, V25.16B, #8 + add V23.2D, V23.2D, V20.2D + sha512h Q23, Q21, V22.2D + add V24.2D, V27.2D, V23.2D + sha512h2 Q23, Q27, V26.2D ; Round 23 - sha512su0 v7.2d, v0.2d - ext v21.16b, v3.16b, v4.16b, #8 - sha512su1 v7.2d, v6.2d, v21.2d - add v20.2d, v7.2d, v19.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v24.16b, v25.16b, #8 - ext v22.16b, v26.16b, v24.16b, #8 - add v25.2d, v25.2d, v20.2d - sha512h q25, q21, v22.2d - add v27.2d, v26.2d, v25.2d - sha512h2 q25, q26, v23.2d + sha512su0 V7.2D, V0.2D + ext8 V21.16B, V3.16B, V4.16B, #8 + sha512su1 V7.2D, V6.2D, V21.2D + add V20.2D, V7.2D, V19.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V24.16B, V25.16B, #8 + ext8 V22.16B, V26.16B, V24.16B, #8 + add V25.2D, V25.2D, V20.2D + sha512h Q25, Q21, V22.2D + add V27.2D, V26.2D, V25.2D + sha512h2 Q25, Q26, V23.2D ; Load next 8 64-bit words of K - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 ; Round 24 - sha512su0 v0.2d, v1.2d - ext v21.16b, v4.16b, v5.16b, #8 - sha512su1 v0.2d, v7.2d, v21.2d - add v20.2d, v0.2d, v16.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v27.16b, v24.16b, #8 - ext v22.16b, v23.16b, v27.16b, #8 - add v24.2d, v24.2d, v20.2d - sha512h q24, q21, v22.2d - add v26.2d, v23.2d, v24.2d - sha512h2 q24, q23, v25.2d + sha512su0 V0.2D, V1.2D + ext8 V21.16B, V4.16B, V5.16B, #8 + sha512su1 V0.2D, V7.2D, V21.2D + add V20.2D, V0.2D, V16.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V27.16B, V24.16B, #8 + ext8 V22.16B, V23.16B, V27.16B, #8 + add V24.2D, V24.2D, V20.2D + sha512h Q24, Q21, V22.2D + add V26.2D, V23.2D, V24.2D + sha512h2 Q24, Q23, V25.2D ; Round 25 - sha512su0 v1.2d, v2.2d - ext v21.16b, v5.16b, v6.16b, #8 - sha512su1 v1.2d, v0.2d, v21.2d - add v20.2d, v1.2d, v17.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v26.16b, v27.16b, #8 - ext v22.16b, v25.16b, v26.16b, #8 - add v27.2d, v27.2d, v20.2d - sha512h q27, q21, v22.2d - add v23.2d, v25.2d, v27.2d - sha512h2 q27, q25, v24.2d + sha512su0 V1.2D, V2.2D + ext8 V21.16B, V5.16B, V6.16B, #8 + sha512su1 V1.2D, V0.2D, V21.2D + add V20.2D, V1.2D, V17.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V26.16B, V27.16B, #8 + ext8 V22.16B, V25.16B, V26.16B, #8 + add V27.2D, V27.2D, V20.2D + sha512h Q27, Q21, V22.2D + add V23.2D, V25.2D, V27.2D + sha512h2 Q27, Q25, V24.2D ; Round 26 - sha512su0 v2.2d, v3.2d - ext v21.16b, v6.16b, v7.16b, #8 - sha512su1 v2.2d, v1.2d, v21.2d - add v20.2d, v2.2d, v18.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v23.16b, v26.16b, #8 - ext v22.16b, v24.16b, v23.16b, #8 - add v26.2d, v26.2d, v20.2d - sha512h q26, q21, v22.2d - add v25.2d, v24.2d, v26.2d - sha512h2 q26, q24, v27.2d + sha512su0 V2.2D, V3.2D + ext8 V21.16B, V6.16B, V7.16B, #8 + sha512su1 V2.2D, V1.2D, V21.2D + add V20.2D, V2.2D, V18.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V23.16B, V26.16B, #8 + ext8 V22.16B, V24.16B, V23.16B, #8 + add V26.2D, V26.2D, V20.2D + sha512h Q26, Q21, V22.2D + add V25.2D, V24.2D, V26.2D + sha512h2 Q26, Q24, V27.2D ; Round 27 - sha512su0 v3.2d, v4.2d - ext v21.16b, v7.16b, v0.16b, #8 - sha512su1 v3.2d, v2.2d, v21.2d - add v20.2d, v3.2d, v19.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v25.16b, v23.16b, #8 - ext v22.16b, v27.16b, v25.16b, #8 - add v23.2d, v23.2d, v20.2d - sha512h q23, q21, v22.2d - add v24.2d, v27.2d, v23.2d - sha512h2 q23, q27, v26.2d + sha512su0 V3.2D, V4.2D + ext8 V21.16B, V7.16B, V0.16B, #8 + sha512su1 V3.2D, V2.2D, V21.2D + add V20.2D, V3.2D, V19.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V25.16B, V23.16B, #8 + ext8 V22.16B, V27.16B, V25.16B, #8 + add V23.2D, V23.2D, V20.2D + sha512h Q23, Q21, V22.2D + add V24.2D, V27.2D, V23.2D + sha512h2 Q23, Q27, V26.2D ; Load next 8 64-bit words of K - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 ; Round 28 - sha512su0 v4.2d, v5.2d - ext v21.16b, v0.16b, v1.16b, #8 - sha512su1 v4.2d, v3.2d, v21.2d - add v20.2d, v4.2d, v16.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v24.16b, v25.16b, #8 - ext v22.16b, v26.16b, v24.16b, #8 - add v25.2d, v25.2d, v20.2d - sha512h q25, q21, v22.2d - add v27.2d, v26.2d, v25.2d - sha512h2 q25, q26, v23.2d + sha512su0 V4.2D, V5.2D + ext8 V21.16B, V0.16B, V1.16B, #8 + sha512su1 V4.2D, V3.2D, V21.2D + add V20.2D, V4.2D, V16.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V24.16B, V25.16B, #8 + ext8 V22.16B, V26.16B, V24.16B, #8 + add V25.2D, V25.2D, V20.2D + sha512h Q25, Q21, V22.2D + add V27.2D, V26.2D, V25.2D + sha512h2 Q25, Q26, V23.2D ; Round 29 - sha512su0 v5.2d, v6.2d - ext v21.16b, v1.16b, v2.16b, #8 - sha512su1 v5.2d, v4.2d, v21.2d - add v20.2d, v5.2d, v17.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v27.16b, v24.16b, #8 - ext v22.16b, v23.16b, v27.16b, #8 - add v24.2d, v24.2d, v20.2d - sha512h q24, q21, v22.2d - add v26.2d, v23.2d, v24.2d - sha512h2 q24, q23, v25.2d + sha512su0 V5.2D, V6.2D + ext8 V21.16B, V1.16B, V2.16B, #8 + sha512su1 V5.2D, V4.2D, V21.2D + add V20.2D, V5.2D, V17.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V27.16B, V24.16B, #8 + ext8 V22.16B, V23.16B, V27.16B, #8 + add V24.2D, V24.2D, V20.2D + sha512h Q24, Q21, V22.2D + add V26.2D, V23.2D, V24.2D + sha512h2 Q24, Q23, V25.2D ; Round 30 - sha512su0 v6.2d, v7.2d - ext v21.16b, v2.16b, v3.16b, #8 - sha512su1 v6.2d, v5.2d, v21.2d - add v20.2d, v6.2d, v18.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v26.16b, v27.16b, #8 - ext v22.16b, v25.16b, v26.16b, #8 - add v27.2d, v27.2d, v20.2d - sha512h q27, q21, v22.2d - add v23.2d, v25.2d, v27.2d - sha512h2 q27, q25, v24.2d + sha512su0 V6.2D, V7.2D + ext8 V21.16B, V2.16B, V3.16B, #8 + sha512su1 V6.2D, V5.2D, V21.2D + add V20.2D, V6.2D, V18.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V26.16B, V27.16B, #8 + ext8 V22.16B, V25.16B, V26.16B, #8 + add V27.2D, V27.2D, V20.2D + sha512h Q27, Q21, V22.2D + add V23.2D, V25.2D, V27.2D + sha512h2 Q27, Q25, V24.2D ; Round 31 - sha512su0 v7.2d, v0.2d - ext v21.16b, v3.16b, v4.16b, #8 - sha512su1 v7.2d, v6.2d, v21.2d - add v20.2d, v7.2d, v19.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v23.16b, v26.16b, #8 - ext v22.16b, v24.16b, v23.16b, #8 - add v26.2d, v26.2d, v20.2d - sha512h q26, q21, v22.2d - add v25.2d, v24.2d, v26.2d - sha512h2 q26, q24, v27.2d + sha512su0 V7.2D, V0.2D + ext8 V21.16B, V3.16B, V4.16B, #8 + sha512su1 V7.2D, V6.2D, V21.2D + add V20.2D, V7.2D, V19.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V23.16B, V26.16B, #8 + ext8 V22.16B, V24.16B, V23.16B, #8 + add V26.2D, V26.2D, V20.2D + sha512h Q26, Q21, V22.2D + add V25.2D, V24.2D, V26.2D + sha512h2 Q26, Q24, V27.2D ; Load next 8 64-bit words of K - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 ; Round 32 - sha512su0 v0.2d, v1.2d - ext v21.16b, v4.16b, v5.16b, #8 - sha512su1 v0.2d, v7.2d, v21.2d - add v20.2d, v0.2d, v16.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v25.16b, v23.16b, #8 - ext v22.16b, v27.16b, v25.16b, #8 - add v23.2d, v23.2d, v20.2d - sha512h q23, q21, v22.2d - add v24.2d, v27.2d, v23.2d - sha512h2 q23, q27, v26.2d + sha512su0 V0.2D, V1.2D + ext8 V21.16B, V4.16B, V5.16B, #8 + sha512su1 V0.2D, V7.2D, V21.2D + add V20.2D, V0.2D, V16.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V25.16B, V23.16B, #8 + ext8 V22.16B, V27.16B, V25.16B, #8 + add V23.2D, V23.2D, V20.2D + sha512h Q23, Q21, V22.2D + add V24.2D, V27.2D, V23.2D + sha512h2 Q23, Q27, V26.2D ; Round 33 - sha512su0 v1.2d, v2.2d - ext v21.16b, v5.16b, v6.16b, #8 - sha512su1 v1.2d, v0.2d, v21.2d - add v20.2d, v1.2d, v17.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v24.16b, v25.16b, #8 - ext v22.16b, v26.16b, v24.16b, #8 - add v25.2d, v25.2d, v20.2d - sha512h q25, q21, v22.2d - add v27.2d, v26.2d, v25.2d - sha512h2 q25, q26, v23.2d + sha512su0 V1.2D, V2.2D + ext8 V21.16B, V5.16B, V6.16B, #8 + sha512su1 V1.2D, V0.2D, V21.2D + add V20.2D, V1.2D, V17.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V24.16B, V25.16B, #8 + ext8 V22.16B, V26.16B, V24.16B, #8 + add V25.2D, V25.2D, V20.2D + sha512h Q25, Q21, V22.2D + add V27.2D, V26.2D, V25.2D + sha512h2 Q25, Q26, V23.2D ; Round 34 - sha512su0 v2.2d, v3.2d - ext v21.16b, v6.16b, v7.16b, #8 - sha512su1 v2.2d, v1.2d, v21.2d - add v20.2d, v2.2d, v18.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v27.16b, v24.16b, #8 - ext v22.16b, v23.16b, v27.16b, #8 - add v24.2d, v24.2d, v20.2d - sha512h q24, q21, v22.2d - add v26.2d, v23.2d, v24.2d - sha512h2 q24, q23, v25.2d + sha512su0 V2.2D, V3.2D + ext8 V21.16B, V6.16B, V7.16B, #8 + sha512su1 V2.2D, V1.2D, V21.2D + add V20.2D, V2.2D, V18.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V27.16B, V24.16B, #8 + ext8 V22.16B, V23.16B, V27.16B, #8 + add V24.2D, V24.2D, V20.2D + sha512h Q24, Q21, V22.2D + add V26.2D, V23.2D, V24.2D + sha512h2 Q24, Q23, V25.2D ; Round 35 - sha512su0 v3.2d, v4.2d - ext v21.16b, v7.16b, v0.16b, #8 - sha512su1 v3.2d, v2.2d, v21.2d - add v20.2d, v3.2d, v19.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v26.16b, v27.16b, #8 - ext v22.16b, v25.16b, v26.16b, #8 - add v27.2d, v27.2d, v20.2d - sha512h q27, q21, v22.2d - add v23.2d, v25.2d, v27.2d - sha512h2 q27, q25, v24.2d + sha512su0 V3.2D, V4.2D + ext8 V21.16B, V7.16B, V0.16B, #8 + sha512su1 V3.2D, V2.2D, V21.2D + add V20.2D, V3.2D, V19.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V26.16B, V27.16B, #8 + ext8 V22.16B, V25.16B, V26.16B, #8 + add V27.2D, V27.2D, V20.2D + sha512h Q27, Q21, V22.2D + add V23.2D, V25.2D, V27.2D + sha512h2 Q27, Q25, V24.2D ; Load next 8 64-bit words of K - ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [x3], #0x40 + ld1 {V16.2D, V17.2D, V18.2D, V19.2D}, [x3], #0x40 ; Round 36 - sha512su0 v4.2d, v5.2d - ext v21.16b, v0.16b, v1.16b, #8 - sha512su1 v4.2d, v3.2d, v21.2d - add v20.2d, v4.2d, v16.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v23.16b, v26.16b, #8 - ext v22.16b, v24.16b, v23.16b, #8 - add v26.2d, v26.2d, v20.2d - sha512h q26, q21, v22.2d - add v25.2d, v24.2d, v26.2d - sha512h2 q26, q24, v27.2d + sha512su0 V4.2D, V5.2D + ext8 V21.16B, V0.16B, V1.16B, #8 + sha512su1 V4.2D, V3.2D, V21.2D + add V20.2D, V4.2D, V16.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V23.16B, V26.16B, #8 + ext8 V22.16B, V24.16B, V23.16B, #8 + add V26.2D, V26.2D, V20.2D + sha512h Q26, Q21, V22.2D + add V25.2D, V24.2D, V26.2D + sha512h2 Q26, Q24, V27.2D ; Round 37 - sha512su0 v5.2d, v6.2d - ext v21.16b, v1.16b, v2.16b, #8 - sha512su1 v5.2d, v4.2d, v21.2d - add v20.2d, v5.2d, v17.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v25.16b, v23.16b, #8 - ext v22.16b, v27.16b, v25.16b, #8 - add v23.2d, v23.2d, v20.2d - sha512h q23, q21, v22.2d - add v24.2d, v27.2d, v23.2d - sha512h2 q23, q27, v26.2d + sha512su0 V5.2D, V6.2D + ext8 V21.16B, V1.16B, V2.16B, #8 + sha512su1 V5.2D, V4.2D, V21.2D + add V20.2D, V5.2D, V17.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V25.16B, V23.16B, #8 + ext8 V22.16B, V27.16B, V25.16B, #8 + add V23.2D, V23.2D, V20.2D + sha512h Q23, Q21, V22.2D + add V24.2D, V27.2D, V23.2D + sha512h2 Q23, Q27, V26.2D ; Round 38 - sha512su0 v6.2d, v7.2d - ext v21.16b, v2.16b, v3.16b, #8 - sha512su1 v6.2d, v5.2d, v21.2d - add v20.2d, v6.2d, v18.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v24.16b, v25.16b, #8 - ext v22.16b, v26.16b, v24.16b, #8 - add v25.2d, v25.2d, v20.2d - sha512h q25, q21, v22.2d - add v27.2d, v26.2d, v25.2d - sha512h2 q25, q26, v23.2d + sha512su0 V6.2D, V7.2D + ext8 V21.16B, V2.16B, V3.16B, #8 + sha512su1 V6.2D, V5.2D, V21.2D + add V20.2D, V6.2D, V18.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V24.16B, V25.16B, #8 + ext8 V22.16B, V26.16B, V24.16B, #8 + add V25.2D, V25.2D, V20.2D + sha512h Q25, Q21, V22.2D + add V27.2D, V26.2D, V25.2D + sha512h2 Q25, Q26, V23.2D ; Round 39 - sha512su0 v7.2d, v0.2d - ext v21.16b, v3.16b, v4.16b, #8 - sha512su1 v7.2d, v6.2d, v21.2d - add v20.2d, v7.2d, v19.2d - ext v20.16b, v20.16b, v20.16b, #8 - ext v21.16b, v27.16b, v24.16b, #8 - ext v22.16b, v23.16b, v27.16b, #8 - add v24.2d, v24.2d, v20.2d - sha512h q24, q21, v22.2d - add v26.2d, v23.2d, v24.2d - sha512h2 q24, q23, v25.2d - add v27.2d, v27.2d, v31.2d - add v26.2d, v26.2d, v30.2d - add v25.2d, v25.2d, v29.2d - add v24.2d, v24.2d, v28.2d + sha512su0 V7.2D, V0.2D + ext8 V21.16B, V3.16B, V4.16B, #8 + sha512su1 V7.2D, V6.2D, V21.2D + add V20.2D, V7.2D, V19.2D + ext8 V20.16B, V20.16B, V20.16B, #8 + ext8 V21.16B, V27.16B, V24.16B, #8 + ext8 V22.16B, V23.16B, V27.16B, #8 + add V24.2D, V24.2D, V20.2D + sha512h Q24, Q21, V22.2D + add V26.2D, V23.2D, V24.2D + sha512h2 Q24, Q23, V25.2D + add V27.2D, V27.2D, V31.2D + add V26.2D, V26.2D, V30.2D + add V25.2D, V25.2D, V29.2D + add V24.2D, V24.2D, V28.2D subs w2, w2, #0x80 bne L_sha512_len_crypto_begin ; Store digest back - st1 {v24.2d, v25.2d, v26.2d, v27.2d}, [x0] - ldp d8, d9, [x29, #16] - ldp d10, d11, [x29, #32] - ldp d12, d13, [x29, #48] - ldp d14, d15, [x29, #64] + st1 {V24.2D, V25.2D, V26.2D, V27.2D}, [x0] + ldp D8, D9, [x29, #16] + ldp D10, D11, [x29, #32] + ldp D12, D13, [x29, #48] + ldp D14, D15, [x29, #64] ldp x29, x30, [sp], #0x50 ret ENDP diff --git a/wolfcrypt/src/wc_mldsa_asm.asm b/wolfcrypt/src/wc_mldsa_asm.asm index 16ad868c23..2495d4894a 100644 --- a/wolfcrypt/src/wc_mldsa_asm.asm +++ b/wolfcrypt/src/wc_mldsa_asm.asm @@ -27314,6 +27314,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_0: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -27398,6 +27400,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_1: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -27482,6 +27486,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_2: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -27566,6 +27572,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_3: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -27650,6 +27658,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_4: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -27734,6 +27744,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_5: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -27818,6 +27830,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_6: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -27902,6 +27916,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_7: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -27986,6 +28002,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_8: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28070,6 +28088,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_9: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28154,6 +28174,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_10: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28238,6 +28260,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_11: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28322,6 +28346,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_12: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28406,6 +28432,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_13: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28490,6 +28518,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_14: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28574,6 +28604,8 @@ L_mldsa_use_hint_88_avx2_hints_done_0_15: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28659,6 +28691,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_0: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28743,6 +28777,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_1: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28827,6 +28863,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_2: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28911,6 +28949,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_3: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -28995,6 +29035,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_4: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29079,6 +29121,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_5: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29163,6 +29207,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_6: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29247,6 +29293,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_7: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29331,6 +29379,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_8: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29415,6 +29465,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_9: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29499,6 +29551,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_10: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29583,6 +29637,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_11: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29667,6 +29723,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_12: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29751,6 +29809,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_13: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29835,6 +29895,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_14: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -29919,6 +29981,8 @@ L_mldsa_use_hint_88_avx2_hints_done_1_15: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30004,6 +30068,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_0: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30088,6 +30154,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_1: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30172,6 +30240,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_2: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30256,6 +30326,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_3: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30340,6 +30412,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_4: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30424,6 +30498,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_5: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30508,6 +30584,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_6: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30592,6 +30670,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_7: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30676,6 +30756,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_8: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30760,6 +30842,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_9: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30844,6 +30928,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_10: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -30928,6 +31014,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_11: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31012,6 +31100,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_12: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31096,6 +31186,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_13: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31180,6 +31272,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_14: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31264,6 +31358,8 @@ L_mldsa_use_hint_88_avx2_hints_done_2_15: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31349,6 +31445,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_0: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31433,6 +31531,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_1: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31517,6 +31617,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_2: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31601,6 +31703,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_3: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31685,6 +31789,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_4: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31769,6 +31875,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_5: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31853,6 +31961,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_6: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -31937,6 +32047,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_7: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32021,6 +32133,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_8: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32105,6 +32219,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_9: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32189,6 +32305,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_10: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32273,6 +32391,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_11: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32357,6 +32477,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_12: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32441,6 +32563,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_13: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32525,6 +32649,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_14: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32609,6 +32735,8 @@ L_mldsa_use_hint_88_avx2_hints_done_3_15: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32779,6 +32907,8 @@ L_mldsa_use_hint_32_avx2_hints_done__0: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32851,6 +32981,8 @@ L_mldsa_use_hint_32_avx2_hints_done__1: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32923,6 +33055,8 @@ L_mldsa_use_hint_32_avx2_hints_done__2: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -32995,6 +33129,8 @@ L_mldsa_use_hint_32_avx2_hints_done__3: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33067,6 +33203,8 @@ L_mldsa_use_hint_32_avx2_hints_done__4: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33139,6 +33277,8 @@ L_mldsa_use_hint_32_avx2_hints_done__5: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33211,6 +33351,8 @@ L_mldsa_use_hint_32_avx2_hints_done__6: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33283,6 +33425,8 @@ L_mldsa_use_hint_32_avx2_hints_done__7: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33355,6 +33499,8 @@ L_mldsa_use_hint_32_avx2_hints_done__8: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33427,6 +33573,8 @@ L_mldsa_use_hint_32_avx2_hints_done__9: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33499,6 +33647,8 @@ L_mldsa_use_hint_32_avx2_hints_done__10: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33571,6 +33721,8 @@ L_mldsa_use_hint_32_avx2_hints_done__11: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33643,6 +33795,8 @@ L_mldsa_use_hint_32_avx2_hints_done__12: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33715,6 +33869,8 @@ L_mldsa_use_hint_32_avx2_hints_done__13: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33787,6 +33943,8 @@ L_mldsa_use_hint_32_avx2_hints_done__14: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 @@ -33859,6 +34017,8 @@ L_mldsa_use_hint_32_avx2_hints_done__15: vpsllvd ymm7, ymm7, ymm13 vpsrad ymm6, ymm6, 31 vpsrad ymm7, ymm7, 31 + vpsubd ymm2, ymm2, ymm14 + vpsubd ymm3, ymm3, ymm14 vpsrld ymm2, ymm2, 31 vpsrld ymm3, ymm3, 31 vpslld ymm2, ymm2, 1 diff --git a/wolfssl-VS2022.vcxproj b/wolfssl-VS2022.vcxproj index 71cc6bbda2..672ead6059 100644 --- a/wolfssl-VS2022.vcxproj +++ b/wolfssl-VS2022.vcxproj @@ -76,7 +76,7 @@ the WOLFSSL_ARMASM* defines below); a symbol that is left undefined here simply drops the matching assembly (safe - the C caller then uses a C fallback), while a symbol enabled here but not in C is dead code. --> - --predefine "HAVE_AES_CBC SETL {TRUE}" --predefine "HAVE_AESCCM SETL {TRUE}" --predefine "HAVE_AESGCM SETL {TRUE}" --predefine "HAVE_AES_ECB SETL {TRUE}" --predefine "HAVE_AES_DECRYPT SETL {TRUE}" --predefine "WOLFSSL_AES_COUNTER SETL {TRUE}" --predefine "WOLFSSL_AES_DIRECT SETL {TRUE}" --predefine "WOLFSSL_AES_XTS SETL {TRUE}" --predefine "WOLFSSL_AESGCM_STREAM SETL {TRUE}" --predefine "WOLFSSL_SHA224 SETL {TRUE}" --predefine "WOLFSSL_SHA3 SETL {TRUE}" --predefine "WOLFSSL_ARMASM_CRYPTO_SHA3 SETL {TRUE}" --predefine "WOLFSSL_SHA384 SETL {TRUE}" --predefine "WOLFSSL_SHA512 SETL {TRUE}" --predefine "WOLFSSL_ARMASM_CRYPTO_SHA512 SETL {TRUE}" --predefine "HAVE_CHACHA SETL {TRUE}" --predefine "HAVE_CURVE25519 SETL {TRUE}" --predefine "HAVE_ED25519 SETL {TRUE}" --predefine "WOLFSSL_HAVE_MLKEM SETL {TRUE}" + -PreDefine "HAVE_AES_CBC SETL {TRUE}" -PreDefine "HAVE_AESCCM SETL {TRUE}" -PreDefine "HAVE_AESGCM SETL {TRUE}" -PreDefine "HAVE_AES_ECB SETL {TRUE}" -PreDefine "HAVE_AES_DECRYPT SETL {TRUE}" -PreDefine "WOLFSSL_AES_COUNTER SETL {TRUE}" -PreDefine "WOLFSSL_AES_DIRECT SETL {TRUE}" -PreDefine "WOLFSSL_AES_XTS SETL {TRUE}" -PreDefine "WOLFSSL_AESGCM_STREAM SETL {TRUE}" -PreDefine "WOLFSSL_SHA224 SETL {TRUE}" -PreDefine "WOLFSSL_SHA3 SETL {TRUE}" -PreDefine "WOLFSSL_ARMASM_CRYPTO_SHA3 SETL {TRUE}" -PreDefine "WOLFSSL_SHA384 SETL {TRUE}" -PreDefine "WOLFSSL_SHA512 SETL {TRUE}" -PreDefine "WOLFSSL_ARMASM_CRYPTO_SHA512 SETL {TRUE}" -PreDefine "HAVE_CHACHA SETL {TRUE}" -PreDefine "HAVE_CURVE25519 SETL {TRUE}" -PreDefine "HAVE_ED25519 SETL {TRUE}" -PreDefine "WOLFSSL_HAVE_MLKEM SETL {TRUE}" StaticLibrary diff --git a/wolfssl.vcxproj b/wolfssl.vcxproj index f565549501..c7ee00da15 100644 --- a/wolfssl.vcxproj +++ b/wolfssl.vcxproj @@ -75,7 +75,7 @@ the WOLFSSL_ARMASM* defines below); a symbol that is left undefined here simply drops the matching assembly (safe - the C caller then uses a C fallback), while a symbol enabled here but not in C is dead code. --> - --predefine "HAVE_AES_CBC SETL {TRUE}" --predefine "HAVE_AESCCM SETL {TRUE}" --predefine "HAVE_AESGCM SETL {TRUE}" --predefine "HAVE_AES_ECB SETL {TRUE}" --predefine "HAVE_AES_DECRYPT SETL {TRUE}" --predefine "WOLFSSL_AES_COUNTER SETL {TRUE}" --predefine "WOLFSSL_AES_DIRECT SETL {TRUE}" --predefine "WOLFSSL_AES_XTS SETL {TRUE}" --predefine "WOLFSSL_AESGCM_STREAM SETL {TRUE}" --predefine "WOLFSSL_SHA224 SETL {TRUE}" --predefine "WOLFSSL_SHA3 SETL {TRUE}" --predefine "WOLFSSL_ARMASM_CRYPTO_SHA3 SETL {TRUE}" --predefine "WOLFSSL_SHA384 SETL {TRUE}" --predefine "WOLFSSL_SHA512 SETL {TRUE}" --predefine "WOLFSSL_ARMASM_CRYPTO_SHA512 SETL {TRUE}" --predefine "HAVE_CHACHA SETL {TRUE}" --predefine "HAVE_CURVE25519 SETL {TRUE}" --predefine "HAVE_ED25519 SETL {TRUE}" --predefine "WOLFSSL_HAVE_MLKEM SETL {TRUE}" + -PreDefine "HAVE_AES_CBC SETL {TRUE}" -PreDefine "HAVE_AESCCM SETL {TRUE}" -PreDefine "HAVE_AESGCM SETL {TRUE}" -PreDefine "HAVE_AES_ECB SETL {TRUE}" -PreDefine "HAVE_AES_DECRYPT SETL {TRUE}" -PreDefine "WOLFSSL_AES_COUNTER SETL {TRUE}" -PreDefine "WOLFSSL_AES_DIRECT SETL {TRUE}" -PreDefine "WOLFSSL_AES_XTS SETL {TRUE}" -PreDefine "WOLFSSL_AESGCM_STREAM SETL {TRUE}" -PreDefine "WOLFSSL_SHA224 SETL {TRUE}" -PreDefine "WOLFSSL_SHA3 SETL {TRUE}" -PreDefine "WOLFSSL_ARMASM_CRYPTO_SHA3 SETL {TRUE}" -PreDefine "WOLFSSL_SHA384 SETL {TRUE}" -PreDefine "WOLFSSL_SHA512 SETL {TRUE}" -PreDefine "WOLFSSL_ARMASM_CRYPTO_SHA512 SETL {TRUE}" -PreDefine "HAVE_CHACHA SETL {TRUE}" -PreDefine "HAVE_CURVE25519 SETL {TRUE}" -PreDefine "HAVE_ED25519 SETL {TRUE}" -PreDefine "WOLFSSL_HAVE_MLKEM SETL {TRUE}" StaticLibrary diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index 07f5829f1e..3e1a4d3f12 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -1897,6 +1897,10 @@ WOLFSSL_ABI WOLFSSL_API int wolfCrypt_Cleanup(void); #define XFENCE() XASM_VOLATILE("lfence") #elif defined (__arm__) && (__ARM_ARCH > 6) #define XFENCE() XASM_VOLATILE("isb") + #elif defined(_MSC_VER) && defined(_M_ARM64) + /* MSVC on ARM64 has no __asm__; use the ISB intrinsic barrier. */ + #include + #define XFENCE() __isb(_ARM64_BARRIER_SY) #elif defined(__aarch64__) /* Change ".inst 0xd50330ff" to "sb" when compilers support it. */ #ifdef WOLFSSL_ARMASM_BARRIER_SB