summaryrefslogtreecommitdiff
path: root/arm64/crypto
diff options
context:
space:
mode:
authorMamone Tarsha <maamoun.tk@googlemail.com>2021-08-08 15:09:59 +0300
committerMamone Tarsha <maamoun.tk@googlemail.com>2021-08-08 15:09:59 +0300
commit5f7740a3872e076688ec4767c5942d8b49c6efa7 (patch)
tree9bf9523c46a5eae0728a2165ad2a7098bb4d4234 /arm64/crypto
parentf7bc3e1bc2783d6c1bb9eb64e99ff96264e20fcc (diff)
downloadnettle-5f7740a3872e076688ec4767c5942d8b49c6efa7.tar.gz
[AArch64] Load AES keys at function prologue
Diffstat (limited to 'arm64/crypto')
-rw-r--r--arm64/crypto/aes128-decrypt.asm13
-rw-r--r--arm64/crypto/aes128-encrypt.asm13
-rw-r--r--arm64/crypto/aes192-decrypt.asm16
-rw-r--r--arm64/crypto/aes192-encrypt.asm16
-rw-r--r--arm64/crypto/aes256-decrypt.asm16
-rw-r--r--arm64/crypto/aes256-encrypt.asm16
6 files changed, 28 insertions, 62 deletions
diff --git a/arm64/crypto/aes128-decrypt.asm b/arm64/crypto/aes128-decrypt.asm
index cd970471..aadfc480 100644
--- a/arm64/crypto/aes128-decrypt.asm
+++ b/arm64/crypto/aes128-decrypt.asm
@@ -63,14 +63,13 @@ C size_t length, uint8_t *dst,
C const uint8_t *src)
PROLOGUE(nettle_aes128_decrypt)
+ ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
+ ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
+ ld1 {K8.4s,K9.4s,K10.4s},[KEYS]
+
ands x4,LENGTH,#-64
b.eq L1B
- mov x5,KEYS
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[x5],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[x5],#64
- ld1 {K8.4s,K9.4s,K10.4s},[x5]
-
L4B_loop:
ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
@@ -95,10 +94,6 @@ L4B_loop:
L1B:
cbz LENGTH,Ldone
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
- ld1 {K8.4s,K9.4s,K10.4s},[KEYS]
-
L1B_loop:
ld1 {S0.16b},[SRC],#16
diff --git a/arm64/crypto/aes128-encrypt.asm b/arm64/crypto/aes128-encrypt.asm
index 5db609e5..3d9b9d90 100644
--- a/arm64/crypto/aes128-encrypt.asm
+++ b/arm64/crypto/aes128-encrypt.asm
@@ -63,14 +63,13 @@ C size_t length, uint8_t *dst,
C const uint8_t *src)
PROLOGUE(nettle_aes128_encrypt)
+ ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
+ ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
+ ld1 {K8.4s,K9.4s,K10.4s},[KEYS]
+
ands x4,LENGTH,#-64
b.eq L1B
- mov x5,KEYS
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[x5],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[x5],#64
- ld1 {K8.4s,K9.4s,K10.4s},[x5]
-
L4B_loop:
ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
@@ -95,10 +94,6 @@ L4B_loop:
L1B:
cbz LENGTH,Ldone
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
- ld1 {K8.4s,K9.4s,K10.4s},[KEYS]
-
L1B_loop:
ld1 {S0.16b},[SRC],#16
diff --git a/arm64/crypto/aes192-decrypt.asm b/arm64/crypto/aes192-decrypt.asm
index 87a4ca73..769edd15 100644
--- a/arm64/crypto/aes192-decrypt.asm
+++ b/arm64/crypto/aes192-decrypt.asm
@@ -65,15 +65,14 @@ C size_t length, uint8_t *dst,
C const uint8_t *src)
PROLOGUE(nettle_aes192_decrypt)
+ ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
+ ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
+ ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[KEYS],#64
+ ld1 {K12.4s},[KEYS]
+
ands x4,LENGTH,#-64
b.eq L1B
- mov x5,KEYS
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[x5],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[x5],#64
- ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[x5],#64
- ld1 {K12.4s},[x5]
-
L4B_loop:
ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
@@ -100,11 +99,6 @@ L4B_loop:
L1B:
cbz LENGTH,Ldone
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
- ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[KEYS],#64
- ld1 {K12.4s},[KEYS]
-
L1B_loop:
ld1 {S0.16b},[SRC],#16
diff --git a/arm64/crypto/aes192-encrypt.asm b/arm64/crypto/aes192-encrypt.asm
index ad6be9b5..5e57d4a4 100644
--- a/arm64/crypto/aes192-encrypt.asm
+++ b/arm64/crypto/aes192-encrypt.asm
@@ -65,15 +65,14 @@ C size_t length, uint8_t *dst,
C const uint8_t *src)
PROLOGUE(nettle_aes192_encrypt)
+ ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
+ ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
+ ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[KEYS],#64
+ ld1 {K12.4s},[KEYS]
+
ands x4,LENGTH,#-64
b.eq L1B
- mov x5,KEYS
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[x5],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[x5],#64
- ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[x5],#64
- ld1 {K12.4s},[x5]
-
L4B_loop:
ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
@@ -100,11 +99,6 @@ L4B_loop:
L1B:
cbz LENGTH,Ldone
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
- ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[KEYS],#64
- ld1 {K12.4s},[KEYS]
-
L1B_loop:
ld1 {S0.16b},[SRC],#16
diff --git a/arm64/crypto/aes256-decrypt.asm b/arm64/crypto/aes256-decrypt.asm
index 758bb143..d787a74a 100644
--- a/arm64/crypto/aes256-decrypt.asm
+++ b/arm64/crypto/aes256-decrypt.asm
@@ -67,15 +67,14 @@ C size_t length, uint8_t *dst,
C const uint8_t *src)
PROLOGUE(nettle_aes256_decrypt)
+ ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
+ ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
+ ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[KEYS],#64
+ ld1 {K12.4s,K13.4s,K14.4s},[KEYS]
+
ands x4,LENGTH,#-64
b.eq L1B
- mov x5,KEYS
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[x5],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[x5],#64
- ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[x5],#64
- ld1 {K12.4s,K13.4s,K14.4s},[x5]
-
L4B_loop:
ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
@@ -104,11 +103,6 @@ L4B_loop:
L1B:
cbz LENGTH,Ldone
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
- ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[KEYS],#64
- ld1 {K12.4s,K13.4s,K14.4s},[KEYS]
-
L1B_loop:
ld1 {S0.16b},[SRC],#16
diff --git a/arm64/crypto/aes256-encrypt.asm b/arm64/crypto/aes256-encrypt.asm
index c02cb679..a6321b82 100644
--- a/arm64/crypto/aes256-encrypt.asm
+++ b/arm64/crypto/aes256-encrypt.asm
@@ -67,15 +67,14 @@ C size_t length, uint8_t *dst,
C const uint8_t *src)
PROLOGUE(nettle_aes256_encrypt)
+ ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
+ ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
+ ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[KEYS],#64
+ ld1 {K12.4s,K13.4s,K14.4s},[KEYS]
+
ands x4,LENGTH,#-64
b.eq L1B
- mov x5,KEYS
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[x5],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[x5],#64
- ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[x5],#64
- ld1 {K12.4s,K13.4s,K14.4s},[x5]
-
L4B_loop:
ld1 {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
@@ -104,11 +103,6 @@ L4B_loop:
L1B:
cbz LENGTH,Ldone
- ld1 {K0.4s,K1.4s,K2.4s,K3.4s},[KEYS],#64
- ld1 {K4.4s,K5.4s,K6.4s,K7.4s},[KEYS],#64
- ld1 {K8.4s,K9.4s,K10.4s,K11.4s},[KEYS],#64
- ld1 {K12.4s,K13.4s,K14.4s},[KEYS]
-
L1B_loop:
ld1 {S0.16b},[SRC],#16