]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
[AArch64] Move AES round macros to machine.m4
authorMamone Tarsha <maamoun.tk@googlemail.com>
Sun, 1 Aug 2021 11:23:11 +0000 (14:23 +0300)
committerMamone Tarsha <maamoun.tk@googlemail.com>
Sun, 1 Aug 2021 11:23:11 +0000 (14:23 +0300)
arm64/crypto/aes128-decrypt.asm
arm64/crypto/aes128-encrypt.asm
arm64/crypto/aes192-decrypt.asm
arm64/crypto/aes192-encrypt.asm
arm64/crypto/aes256-decrypt.asm
arm64/crypto/aes256-encrypt.asm
arm64/machine.m4

index f459bb15227d204df47fb4446908b93ac770f449..cd970471a992d610bc40e6de5f855c72d3d6578a 100644 (file)
@@ -57,46 +57,6 @@ define(`K8', `v24')
 define(`K9', `v25')
 define(`K10', `v26')
 
-C AES decryption round of 4-blocks
-C AESD_ROUND_4B(KEY)
-define(`AESD_ROUND_4B', m4_assert_numargs(1)`
-    aesd           S0.16b,$1.16b
-    aesimc         S0.16b,S0.16b
-    aesd           S1.16b,$1.16b
-    aesimc         S1.16b,S1.16b
-    aesd           S2.16b,$1.16b
-    aesimc         S2.16b,S2.16b
-    aesd           S3.16b,$1.16b
-    aesimc         S3.16b,S3.16b
-')
-
-C AES last decryption round of 4-blocks
-C AESD_LAST_ROUND_4B(KEY)
-define(`AESD_LAST_ROUND_4B', m4_assert_numargs(2)`
-    aesd           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-    aesd           S1.16b,$1.16b
-    eor            S1.16b,S1.16b,$2.16b
-    aesd           S2.16b,$1.16b
-    eor            S2.16b,S2.16b,$2.16b
-    aesd           S3.16b,$1.16b
-    eor            S3.16b,S3.16b,$2.16b
-')
-
-C AES decryption round of 1-block
-C AESD_ROUND_1B(KEY)
-define(`AESD_ROUND_1B', m4_assert_numargs(1)`
-    aesd           S0.16b,$1.16b
-    aesimc         S0.16b,S0.16b
-')
-
-C AES last decryption round of 1-block
-C AESD_LAST_ROUND_1B(KEY)
-define(`AESD_LAST_ROUND_1B', m4_assert_numargs(2)`
-    aesd           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-')
-
 C void
 C aes128_decrypt(const struct aes128_ctx *ctx,
 C                size_t length, uint8_t *dst,
@@ -114,16 +74,16 @@ PROLOGUE(nettle_aes128_decrypt)
 L4B_loop:
     ld1            {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
     
-    AESD_ROUND_4B(K0)
-    AESD_ROUND_4B(K1)
-    AESD_ROUND_4B(K2)
-    AESD_ROUND_4B(K3)
-    AESD_ROUND_4B(K4)
-    AESD_ROUND_4B(K5)
-    AESD_ROUND_4B(K6)
-    AESD_ROUND_4B(K7)
-    AESD_ROUND_4B(K8)
-    AESD_LAST_ROUND_4B(K9,K10)
+    AESD_ROUND_4B(S0,S1,S2,S3,K0)
+    AESD_ROUND_4B(S0,S1,S2,S3,K1)
+    AESD_ROUND_4B(S0,S1,S2,S3,K2)
+    AESD_ROUND_4B(S0,S1,S2,S3,K3)
+    AESD_ROUND_4B(S0,S1,S2,S3,K4)
+    AESD_ROUND_4B(S0,S1,S2,S3,K5)
+    AESD_ROUND_4B(S0,S1,S2,S3,K6)
+    AESD_ROUND_4B(S0,S1,S2,S3,K7)
+    AESD_ROUND_4B(S0,S1,S2,S3,K8)
+    AESD_LAST_ROUND_4B(S0,S1,S2,S3,K9,K10)
 
     st1            {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64
 
@@ -142,16 +102,16 @@ L1B:
 L1B_loop:
     ld1            {S0.16b},[SRC],#16
     
-    AESD_ROUND_1B(K0)
-    AESD_ROUND_1B(K1)
-    AESD_ROUND_1B(K2)
-    AESD_ROUND_1B(K3)
-    AESD_ROUND_1B(K4)
-    AESD_ROUND_1B(K5)
-    AESD_ROUND_1B(K6)
-    AESD_ROUND_1B(K7)
-    AESD_ROUND_1B(K8)
-    AESD_LAST_ROUND_1B(K9,K10)
+    AESD_ROUND_1B(S0,K0)
+    AESD_ROUND_1B(S0,K1)
+    AESD_ROUND_1B(S0,K2)
+    AESD_ROUND_1B(S0,K3)
+    AESD_ROUND_1B(S0,K4)
+    AESD_ROUND_1B(S0,K5)
+    AESD_ROUND_1B(S0,K6)
+    AESD_ROUND_1B(S0,K7)
+    AESD_ROUND_1B(S0,K8)
+    AESD_LAST_ROUND_1B(S0,K9,K10)
 
     st1            {S0.16b},[DST],#16
 
index b3c3b9ce335d1c3eb2ff6bdf9cbaf8bf841bb024..5db609e5a93a880d281dd19836dc24727330bd6d 100644 (file)
@@ -57,46 +57,6 @@ define(`K8', `v24')
 define(`K9', `v25')
 define(`K10', `v26')
 
-C AES encryption round of 4-blocks
-C AESE_ROUND_4B(KEY)
-define(`AESE_ROUND_4B', m4_assert_numargs(1)`
-    aese           S0.16b,$1.16b
-    aesmc          S0.16b,S0.16b
-    aese           S1.16b,$1.16b
-    aesmc          S1.16b,S1.16b
-    aese           S2.16b,$1.16b
-    aesmc          S2.16b,S2.16b
-    aese           S3.16b,$1.16b
-    aesmc          S3.16b,S3.16b
-')
-
-C AES last encryption round of 4-blocks
-C AESE_LAST_ROUND_4B(KEY)
-define(`AESE_LAST_ROUND_4B', m4_assert_numargs(2)`
-    aese           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-    aese           S1.16b,$1.16b
-    eor            S1.16b,S1.16b,$2.16b
-    aese           S2.16b,$1.16b
-    eor            S2.16b,S2.16b,$2.16b
-    aese           S3.16b,$1.16b
-    eor            S3.16b,S3.16b,$2.16b
-')
-
-C AES encryption round of 1-block
-C AESE_ROUND_1B(KEY)
-define(`AESE_ROUND_1B', m4_assert_numargs(1)`
-    aese           S0.16b,$1.16b
-    aesmc          S0.16b,S0.16b
-')
-
-C AES last encryption round of 1-block
-C AESE_LAST_ROUND_1B(KEY)
-define(`AESE_LAST_ROUND_1B', m4_assert_numargs(2)`
-    aese           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-')
-
 C void
 C aes128_encrypt(const struct aes128_ctx *ctx,
 C                size_t length, uint8_t *dst,
@@ -114,16 +74,16 @@ PROLOGUE(nettle_aes128_encrypt)
 L4B_loop:
     ld1            {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
     
-    AESE_ROUND_4B(K0)
-    AESE_ROUND_4B(K1)
-    AESE_ROUND_4B(K2)
-    AESE_ROUND_4B(K3)
-    AESE_ROUND_4B(K4)
-    AESE_ROUND_4B(K5)
-    AESE_ROUND_4B(K6)
-    AESE_ROUND_4B(K7)
-    AESE_ROUND_4B(K8)
-    AESE_LAST_ROUND_4B(K9,K10)
+    AESE_ROUND_4B(S0,S1,S2,S3,K0)
+    AESE_ROUND_4B(S0,S1,S2,S3,K1)
+    AESE_ROUND_4B(S0,S1,S2,S3,K2)
+    AESE_ROUND_4B(S0,S1,S2,S3,K3)
+    AESE_ROUND_4B(S0,S1,S2,S3,K4)
+    AESE_ROUND_4B(S0,S1,S2,S3,K5)
+    AESE_ROUND_4B(S0,S1,S2,S3,K6)
+    AESE_ROUND_4B(S0,S1,S2,S3,K7)
+    AESE_ROUND_4B(S0,S1,S2,S3,K8)
+    AESE_LAST_ROUND_4B(S0,S1,S2,S3,K9,K10)
 
     st1            {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64
 
@@ -142,16 +102,16 @@ L1B:
 L1B_loop:
     ld1            {S0.16b},[SRC],#16
     
-    AESE_ROUND_1B(K0)
-    AESE_ROUND_1B(K1)
-    AESE_ROUND_1B(K2)
-    AESE_ROUND_1B(K3)
-    AESE_ROUND_1B(K4)
-    AESE_ROUND_1B(K5)
-    AESE_ROUND_1B(K6)
-    AESE_ROUND_1B(K7)
-    AESE_ROUND_1B(K8)
-    AESE_LAST_ROUND_1B(K9,K10)
+    AESE_ROUND_1B(S0,K0)
+    AESE_ROUND_1B(S0,K1)
+    AESE_ROUND_1B(S0,K2)
+    AESE_ROUND_1B(S0,K3)
+    AESE_ROUND_1B(S0,K4)
+    AESE_ROUND_1B(S0,K5)
+    AESE_ROUND_1B(S0,K6)
+    AESE_ROUND_1B(S0,K7)
+    AESE_ROUND_1B(S0,K8)
+    AESE_LAST_ROUND_1B(S0,K9,K10)
 
     st1            {S0.16b},[DST],#16
 
index 8d6bca79406919e3dc2be35c96d7f51b2e01c422..87a4ca73a2c1c36efad994efe69d7cacf2a8e170 100644 (file)
@@ -59,46 +59,6 @@ define(`K10', `v26')
 define(`K11', `v27')
 define(`K12', `v28')
 
-C AES decryption round of 4-blocks
-C AESD_ROUND_4B(KEY)
-define(`AESD_ROUND_4B', m4_assert_numargs(1)`
-    aesd           S0.16b,$1.16b
-    aesimc         S0.16b,S0.16b
-    aesd           S1.16b,$1.16b
-    aesimc         S1.16b,S1.16b
-    aesd           S2.16b,$1.16b
-    aesimc         S2.16b,S2.16b
-    aesd           S3.16b,$1.16b
-    aesimc         S3.16b,S3.16b
-')
-
-C AES last decryption round of 4-blocks
-C AESD_LAST_ROUND_4B(KEY)
-define(`AESD_LAST_ROUND_4B', m4_assert_numargs(2)`
-    aesd           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-    aesd           S1.16b,$1.16b
-    eor            S1.16b,S1.16b,$2.16b
-    aesd           S2.16b,$1.16b
-    eor            S2.16b,S2.16b,$2.16b
-    aesd           S3.16b,$1.16b
-    eor            S3.16b,S3.16b,$2.16b
-')
-
-C AES decryption round of 1-block
-C AESD_ROUND_1B(KEY)
-define(`AESD_ROUND_1B', m4_assert_numargs(1)`
-    aesd           S0.16b,$1.16b
-    aesimc         S0.16b,S0.16b
-')
-
-C AES last decryption round of 1-block
-C AESD_LAST_ROUND_1B(KEY)
-define(`AESD_LAST_ROUND_1B', m4_assert_numargs(2)`
-    aesd           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-')
-
 C void
 C aes192_decrypt(const struct aes192_ctx *ctx,
 C                size_t length, uint8_t *dst,
@@ -117,18 +77,18 @@ PROLOGUE(nettle_aes192_decrypt)
 L4B_loop:
     ld1            {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
     
-    AESD_ROUND_4B(K0)
-    AESD_ROUND_4B(K1)
-    AESD_ROUND_4B(K2)
-    AESD_ROUND_4B(K3)
-    AESD_ROUND_4B(K4)
-    AESD_ROUND_4B(K5)
-    AESD_ROUND_4B(K6)
-    AESD_ROUND_4B(K7)
-    AESD_ROUND_4B(K8)
-    AESD_ROUND_4B(K9)
-    AESD_ROUND_4B(K10)
-    AESD_LAST_ROUND_4B(K11,K12)
+    AESD_ROUND_4B(S0,S1,S2,S3,K0)
+    AESD_ROUND_4B(S0,S1,S2,S3,K1)
+    AESD_ROUND_4B(S0,S1,S2,S3,K2)
+    AESD_ROUND_4B(S0,S1,S2,S3,K3)
+    AESD_ROUND_4B(S0,S1,S2,S3,K4)
+    AESD_ROUND_4B(S0,S1,S2,S3,K5)
+    AESD_ROUND_4B(S0,S1,S2,S3,K6)
+    AESD_ROUND_4B(S0,S1,S2,S3,K7)
+    AESD_ROUND_4B(S0,S1,S2,S3,K8)
+    AESD_ROUND_4B(S0,S1,S2,S3,K9)
+    AESD_ROUND_4B(S0,S1,S2,S3,K10)
+    AESD_LAST_ROUND_4B(S0,S1,S2,S3,K11,K12)
 
     st1            {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64
 
@@ -148,18 +108,18 @@ L1B:
 L1B_loop:
     ld1            {S0.16b},[SRC],#16
     
-    AESD_ROUND_1B(K0)
-    AESD_ROUND_1B(K1)
-    AESD_ROUND_1B(K2)
-    AESD_ROUND_1B(K3)
-    AESD_ROUND_1B(K4)
-    AESD_ROUND_1B(K5)
-    AESD_ROUND_1B(K6)
-    AESD_ROUND_1B(K7)
-    AESD_ROUND_1B(K8)
-    AESD_ROUND_1B(K9)
-    AESD_ROUND_1B(K10)
-    AESD_LAST_ROUND_1B(K11,K12)
+    AESD_ROUND_1B(S0,K0)
+    AESD_ROUND_1B(S0,K1)
+    AESD_ROUND_1B(S0,K2)
+    AESD_ROUND_1B(S0,K3)
+    AESD_ROUND_1B(S0,K4)
+    AESD_ROUND_1B(S0,K5)
+    AESD_ROUND_1B(S0,K6)
+    AESD_ROUND_1B(S0,K7)
+    AESD_ROUND_1B(S0,K8)
+    AESD_ROUND_1B(S0,K9)
+    AESD_ROUND_1B(S0,K10)
+    AESD_LAST_ROUND_1B(S0,K11,K12)
 
     st1            {S0.16b},[DST],#16
 
index 5a71786d4558d7f58197c3841a332a57e3acb5ec..ad6be9b546c6e7a7fb3d006de7e3ce10b3aa1e2a 100644 (file)
@@ -59,46 +59,6 @@ define(`K10', `v26')
 define(`K11', `v27')
 define(`K12', `v28')
 
-C AES encryption round of 4-blocks
-C AESE_ROUND_4B(KEY)
-define(`AESE_ROUND_4B', m4_assert_numargs(1)`
-    aese           S0.16b,$1.16b
-    aesmc          S0.16b,S0.16b
-    aese           S1.16b,$1.16b
-    aesmc          S1.16b,S1.16b
-    aese           S2.16b,$1.16b
-    aesmc          S2.16b,S2.16b
-    aese           S3.16b,$1.16b
-    aesmc          S3.16b,S3.16b
-')
-
-C AES last encryption round of 4-blocks
-C AESE_LAST_ROUND_4B(KEY)
-define(`AESE_LAST_ROUND_4B', m4_assert_numargs(2)`
-    aese           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-    aese           S1.16b,$1.16b
-    eor            S1.16b,S1.16b,$2.16b
-    aese           S2.16b,$1.16b
-    eor            S2.16b,S2.16b,$2.16b
-    aese           S3.16b,$1.16b
-    eor            S3.16b,S3.16b,$2.16b
-')
-
-C AES encryption round of 1-block
-C AESE_ROUND_1B(KEY)
-define(`AESE_ROUND_1B', m4_assert_numargs(1)`
-    aese           S0.16b,$1.16b
-    aesmc          S0.16b,S0.16b
-')
-
-C AES last encryption round of 1-block
-C AESE_LAST_ROUND_1B(KEY)
-define(`AESE_LAST_ROUND_1B', m4_assert_numargs(2)`
-    aese           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-')
-
 C void
 C aes192_encrypt(const struct aes192_ctx *ctx,
 C                size_t length, uint8_t *dst,
@@ -117,18 +77,18 @@ PROLOGUE(nettle_aes192_encrypt)
 L4B_loop:
     ld1            {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
     
-    AESE_ROUND_4B(K0)
-    AESE_ROUND_4B(K1)
-    AESE_ROUND_4B(K2)
-    AESE_ROUND_4B(K3)
-    AESE_ROUND_4B(K4)
-    AESE_ROUND_4B(K5)
-    AESE_ROUND_4B(K6)
-    AESE_ROUND_4B(K7)
-    AESE_ROUND_4B(K8)
-    AESE_ROUND_4B(K9)
-    AESE_ROUND_4B(K10)
-    AESE_LAST_ROUND_4B(K11,K12)
+    AESE_ROUND_4B(S0,S1,S2,S3,K0)
+    AESE_ROUND_4B(S0,S1,S2,S3,K1)
+    AESE_ROUND_4B(S0,S1,S2,S3,K2)
+    AESE_ROUND_4B(S0,S1,S2,S3,K3)
+    AESE_ROUND_4B(S0,S1,S2,S3,K4)
+    AESE_ROUND_4B(S0,S1,S2,S3,K5)
+    AESE_ROUND_4B(S0,S1,S2,S3,K6)
+    AESE_ROUND_4B(S0,S1,S2,S3,K7)
+    AESE_ROUND_4B(S0,S1,S2,S3,K8)
+    AESE_ROUND_4B(S0,S1,S2,S3,K9)
+    AESE_ROUND_4B(S0,S1,S2,S3,K10)
+    AESE_LAST_ROUND_4B(S0,S1,S2,S3,K11,K12)
 
     st1            {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64
 
@@ -148,18 +108,18 @@ L1B:
 L1B_loop:
     ld1            {S0.16b},[SRC],#16
     
-    AESE_ROUND_1B(K0)
-    AESE_ROUND_1B(K1)
-    AESE_ROUND_1B(K2)
-    AESE_ROUND_1B(K3)
-    AESE_ROUND_1B(K4)
-    AESE_ROUND_1B(K5)
-    AESE_ROUND_1B(K6)
-    AESE_ROUND_1B(K7)
-    AESE_ROUND_1B(K8)
-    AESE_ROUND_1B(K9)
-    AESE_ROUND_1B(K10)
-    AESE_LAST_ROUND_1B(K11,K12)
+    AESE_ROUND_1B(S0,K0)
+    AESE_ROUND_1B(S0,K1)
+    AESE_ROUND_1B(S0,K2)
+    AESE_ROUND_1B(S0,K3)
+    AESE_ROUND_1B(S0,K4)
+    AESE_ROUND_1B(S0,K5)
+    AESE_ROUND_1B(S0,K6)
+    AESE_ROUND_1B(S0,K7)
+    AESE_ROUND_1B(S0,K8)
+    AESE_ROUND_1B(S0,K9)
+    AESE_ROUND_1B(S0,K10)
+    AESE_LAST_ROUND_1B(S0,K11,K12)
 
     st1            {S0.16b},[DST],#16
 
index 6191d7b6b83d5ca331e3c380455bd0c48b7ccc68..758bb143b40ed7f0ce3b8663185170051e59daf5 100644 (file)
@@ -61,46 +61,6 @@ define(`K12', `v28')
 define(`K13', `v29')
 define(`K14', `v30')
 
-C AES decryption round of 4-blocks
-C AESD_ROUND_4B(KEY)
-define(`AESD_ROUND_4B', m4_assert_numargs(1)`
-    aesd           S0.16b,$1.16b
-    aesimc         S0.16b,S0.16b
-    aesd           S1.16b,$1.16b
-    aesimc         S1.16b,S1.16b
-    aesd           S2.16b,$1.16b
-    aesimc         S2.16b,S2.16b
-    aesd           S3.16b,$1.16b
-    aesimc         S3.16b,S3.16b
-')
-
-C AES last decryption round of 4-blocks
-C AESD_LAST_ROUND_4B(KEY)
-define(`AESD_LAST_ROUND_4B', m4_assert_numargs(2)`
-    aesd           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-    aesd           S1.16b,$1.16b
-    eor            S1.16b,S1.16b,$2.16b
-    aesd           S2.16b,$1.16b
-    eor            S2.16b,S2.16b,$2.16b
-    aesd           S3.16b,$1.16b
-    eor            S3.16b,S3.16b,$2.16b
-')
-
-C AES decryption round of 1-block
-C AESD_ROUND_1B(KEY)
-define(`AESD_ROUND_1B', m4_assert_numargs(1)`
-    aesd           S0.16b,$1.16b
-    aesimc         S0.16b,S0.16b
-')
-
-C AES last decryption round of 1-block
-C AESD_LAST_ROUND_1B(KEY)
-define(`AESD_LAST_ROUND_1B', m4_assert_numargs(2)`
-    aesd           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-')
-
 C void
 C aes256_decrypt(const struct aes256_ctx *ctx,
 C                size_t length, uint8_t *dst,
@@ -119,20 +79,20 @@ PROLOGUE(nettle_aes256_decrypt)
 L4B_loop:
     ld1            {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
     
-    AESD_ROUND_4B(K0)
-    AESD_ROUND_4B(K1)
-    AESD_ROUND_4B(K2)
-    AESD_ROUND_4B(K3)
-    AESD_ROUND_4B(K4)
-    AESD_ROUND_4B(K5)
-    AESD_ROUND_4B(K6)
-    AESD_ROUND_4B(K7)
-    AESD_ROUND_4B(K8)
-    AESD_ROUND_4B(K9)
-    AESD_ROUND_4B(K10)
-    AESD_ROUND_4B(K11)
-    AESD_ROUND_4B(K12)
-    AESD_LAST_ROUND_4B(K13,K14)
+    AESD_ROUND_4B(S0,S1,S2,S3,K0)
+    AESD_ROUND_4B(S0,S1,S2,S3,K1)
+    AESD_ROUND_4B(S0,S1,S2,S3,K2)
+    AESD_ROUND_4B(S0,S1,S2,S3,K3)
+    AESD_ROUND_4B(S0,S1,S2,S3,K4)
+    AESD_ROUND_4B(S0,S1,S2,S3,K5)
+    AESD_ROUND_4B(S0,S1,S2,S3,K6)
+    AESD_ROUND_4B(S0,S1,S2,S3,K7)
+    AESD_ROUND_4B(S0,S1,S2,S3,K8)
+    AESD_ROUND_4B(S0,S1,S2,S3,K9)
+    AESD_ROUND_4B(S0,S1,S2,S3,K10)
+    AESD_ROUND_4B(S0,S1,S2,S3,K11)
+    AESD_ROUND_4B(S0,S1,S2,S3,K12)
+    AESD_LAST_ROUND_4B(S0,S1,S2,S3,K13,K14)
 
     st1            {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64
 
@@ -152,20 +112,20 @@ L1B:
 L1B_loop:
     ld1            {S0.16b},[SRC],#16
     
-    AESD_ROUND_1B(K0)
-    AESD_ROUND_1B(K1)
-    AESD_ROUND_1B(K2)
-    AESD_ROUND_1B(K3)
-    AESD_ROUND_1B(K4)
-    AESD_ROUND_1B(K5)
-    AESD_ROUND_1B(K6)
-    AESD_ROUND_1B(K7)
-    AESD_ROUND_1B(K8)
-    AESD_ROUND_1B(K9)
-    AESD_ROUND_1B(K10)
-    AESD_ROUND_1B(K11)
-    AESD_ROUND_1B(K12)
-    AESD_LAST_ROUND_1B(K13,K14)
+    AESD_ROUND_1B(S0,K0)
+    AESD_ROUND_1B(S0,K1)
+    AESD_ROUND_1B(S0,K2)
+    AESD_ROUND_1B(S0,K3)
+    AESD_ROUND_1B(S0,K4)
+    AESD_ROUND_1B(S0,K5)
+    AESD_ROUND_1B(S0,K6)
+    AESD_ROUND_1B(S0,K7)
+    AESD_ROUND_1B(S0,K8)
+    AESD_ROUND_1B(S0,K9)
+    AESD_ROUND_1B(S0,K10)
+    AESD_ROUND_1B(S0,K11)
+    AESD_ROUND_1B(S0,K12)
+    AESD_LAST_ROUND_1B(S0,K13,K14)
 
     st1            {S0.16b},[DST],#16
 
index 4a53c0c1cc93626ee9f7d312183f67a6e60904e9..c02cb6792ed6e531f926586d82eac3a1296d6869 100644 (file)
@@ -61,46 +61,6 @@ define(`K12', `v28')
 define(`K13', `v29')
 define(`K14', `v30')
 
-C AES encryption round of 4-blocks
-C AESE_ROUND_4B(KEY)
-define(`AESE_ROUND_4B', m4_assert_numargs(1)`
-    aese           S0.16b,$1.16b
-    aesmc          S0.16b,S0.16b
-    aese           S1.16b,$1.16b
-    aesmc          S1.16b,S1.16b
-    aese           S2.16b,$1.16b
-    aesmc          S2.16b,S2.16b
-    aese           S3.16b,$1.16b
-    aesmc          S3.16b,S3.16b
-')
-
-C AES last encryption round of 4-blocks
-C AESE_LAST_ROUND_4B(KEY)
-define(`AESE_LAST_ROUND_4B', m4_assert_numargs(2)`
-    aese           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-    aese           S1.16b,$1.16b
-    eor            S1.16b,S1.16b,$2.16b
-    aese           S2.16b,$1.16b
-    eor            S2.16b,S2.16b,$2.16b
-    aese           S3.16b,$1.16b
-    eor            S3.16b,S3.16b,$2.16b
-')
-
-C AES encryption round of 1-block
-C AESE_ROUND_1B(KEY)
-define(`AESE_ROUND_1B', m4_assert_numargs(1)`
-    aese           S0.16b,$1.16b
-    aesmc          S0.16b,S0.16b
-')
-
-C AES last encryption round of 1-block
-C AESE_LAST_ROUND_1B(KEY)
-define(`AESE_LAST_ROUND_1B', m4_assert_numargs(2)`
-    aese           S0.16b,$1.16b
-    eor            S0.16b,S0.16b,$2.16b
-')
-
 C void
 C aes256_encrypt(const struct aes256_ctx *ctx,
 C                size_t length, uint8_t *dst,
@@ -119,20 +79,20 @@ PROLOGUE(nettle_aes256_encrypt)
 L4B_loop:
     ld1            {S0.16b,S1.16b,S2.16b,S3.16b},[SRC],#64
     
-    AESE_ROUND_4B(K0)
-    AESE_ROUND_4B(K1)
-    AESE_ROUND_4B(K2)
-    AESE_ROUND_4B(K3)
-    AESE_ROUND_4B(K4)
-    AESE_ROUND_4B(K5)
-    AESE_ROUND_4B(K6)
-    AESE_ROUND_4B(K7)
-    AESE_ROUND_4B(K8)
-    AESE_ROUND_4B(K9)
-    AESE_ROUND_4B(K10)
-    AESE_ROUND_4B(K11)
-    AESE_ROUND_4B(K12)
-    AESE_LAST_ROUND_4B(K13,K14)
+    AESE_ROUND_4B(S0,S1,S2,S3,K0)
+    AESE_ROUND_4B(S0,S1,S2,S3,K1)
+    AESE_ROUND_4B(S0,S1,S2,S3,K2)
+    AESE_ROUND_4B(S0,S1,S2,S3,K3)
+    AESE_ROUND_4B(S0,S1,S2,S3,K4)
+    AESE_ROUND_4B(S0,S1,S2,S3,K5)
+    AESE_ROUND_4B(S0,S1,S2,S3,K6)
+    AESE_ROUND_4B(S0,S1,S2,S3,K7)
+    AESE_ROUND_4B(S0,S1,S2,S3,K8)
+    AESE_ROUND_4B(S0,S1,S2,S3,K9)
+    AESE_ROUND_4B(S0,S1,S2,S3,K10)
+    AESE_ROUND_4B(S0,S1,S2,S3,K11)
+    AESE_ROUND_4B(S0,S1,S2,S3,K12)
+    AESE_LAST_ROUND_4B(S0,S1,S2,S3,K13,K14)
 
     st1            {S0.16b,S1.16b,S2.16b,S3.16b},[DST],#64
 
@@ -152,20 +112,20 @@ L1B:
 L1B_loop:
     ld1            {S0.16b},[SRC],#16
     
-    AESE_ROUND_1B(K0)
-    AESE_ROUND_1B(K1)
-    AESE_ROUND_1B(K2)
-    AESE_ROUND_1B(K3)
-    AESE_ROUND_1B(K4)
-    AESE_ROUND_1B(K5)
-    AESE_ROUND_1B(K6)
-    AESE_ROUND_1B(K7)
-    AESE_ROUND_1B(K8)
-    AESE_ROUND_1B(K9)
-    AESE_ROUND_1B(K10)
-    AESE_ROUND_1B(K11)
-    AESE_ROUND_1B(K12)
-    AESE_LAST_ROUND_1B(K13,K14)
+    AESE_ROUND_1B(S0,K0)
+    AESE_ROUND_1B(S0,K1)
+    AESE_ROUND_1B(S0,K2)
+    AESE_ROUND_1B(S0,K3)
+    AESE_ROUND_1B(S0,K4)
+    AESE_ROUND_1B(S0,K5)
+    AESE_ROUND_1B(S0,K6)
+    AESE_ROUND_1B(S0,K7)
+    AESE_ROUND_1B(S0,K8)
+    AESE_ROUND_1B(S0,K9)
+    AESE_ROUND_1B(S0,K10)
+    AESE_ROUND_1B(S0,K11)
+    AESE_ROUND_1B(S0,K12)
+    AESE_LAST_ROUND_1B(S0,K13,K14)
 
     st1            {S0.16b},[DST],#16
 
index 7df62bccbdcf8fa78d4c7fdf7622852c9e8c4644..8256febd2307ad5ea3f65876a936572ee35e1fe0 100644 (file)
@@ -5,3 +5,83 @@ define(`SFP',``s'substr($1,1,len($1))')
 C Get 128-bit floating-point register from vector register
 C QFP(VR)
 define(`QFP',``q'substr($1,1,len($1))')
+
+C AES encryption round of 4-blocks
+C AESE_ROUND_4B(BLOCK0, BLOCK1, BLOCK2, BLOCK3, KEY)
+define(`AESE_ROUND_4B', m4_assert_numargs(5)`
+    aese           $1.16b,$5.16b
+    aesmc          $1.16b,$1.16b
+    aese           $2.16b,$5.16b
+    aesmc          $2.16b,$2.16b
+    aese           $3.16b,$5.16b
+    aesmc          $3.16b,$3.16b
+    aese           $4.16b,$5.16b
+    aesmc          $4.16b,$4.16b
+')
+
+C AES last encryption round of 4-blocks
+C AESE_LAST_ROUND_4B(BLOCK0, BLOCK1, BLOCK2, BLOCK3, KEY0, KEY1)
+define(`AESE_LAST_ROUND_4B', m4_assert_numargs(6)`
+    aese           $1.16b,$5.16b
+    eor            $1.16b,$1.16b,$6.16b
+    aese           $2.16b,$5.16b
+    eor            $2.16b,$2.16b,$6.16b
+    aese           $3.16b,$5.16b
+    eor            $3.16b,$3.16b,$6.16b
+    aese           $4.16b,$5.16b
+    eor            $4.16b,$4.16b,$6.16b
+')
+
+C AES encryption round of 1-block
+C AESE_ROUND_1B(BLOCK, KEY)
+define(`AESE_ROUND_1B', m4_assert_numargs(2)`
+    aese           $1.16b,$2.16b
+    aesmc          $1.16b,$1.16b
+')
+
+C AES last encryption round of 1-block
+C AESE_LAST_ROUND_1B(BLOCK, KEY0, KEY1)
+define(`AESE_LAST_ROUND_1B', m4_assert_numargs(3)`
+    aese           $1.16b,$2.16b
+    eor            $1.16b,$1.16b,$3.16b
+')
+
+C AES decryption round of 4-blocks
+C AESD_ROUND_4B(BLOCK0, BLOCK1, BLOCK2, BLOCK3, KEY)
+define(`AESD_ROUND_4B', m4_assert_numargs(5)`
+    aesd           $1.16b,$5.16b
+    aesimc         $1.16b,$1.16b
+    aesd           $2.16b,$5.16b
+    aesimc         $2.16b,$2.16b
+    aesd           $3.16b,$5.16b
+    aesimc         $3.16b,$3.16b
+    aesd           $4.16b,$5.16b
+    aesimc         $4.16b,$4.16b
+')
+
+C AES last decryption round of 4-blocks
+C AESD_LAST_ROUND_4B(BLOCK0, BLOCK1, BLOCK2, BLOCK3, KEY0, KEY1)
+define(`AESD_LAST_ROUND_4B', m4_assert_numargs(6)`
+    aesd           $1.16b,$5.16b
+    eor            $1.16b,$1.16b,$6.16b
+    aesd           $2.16b,$5.16b
+    eor            $2.16b,$2.16b,$6.16b
+    aesd           $3.16b,$5.16b
+    eor            $3.16b,$3.16b,$6.16b
+    aesd           $4.16b,$5.16b
+    eor            $4.16b,$4.16b,$6.16b
+')
+
+C AES decryption round of 1-block
+C AESD_ROUND_1B(BLOCK, KEY)
+define(`AESD_ROUND_1B', m4_assert_numargs(2)`
+    aesd           $1.16b,$2.16b
+    aesimc         $1.16b,$1.16b
+')
+
+C AES last decryption round of 1-block
+C AESD_LAST_ROUND_1B(BLOCK, KEY0, KEY1)
+define(`AESD_LAST_ROUND_1B', m4_assert_numargs(3)`
+    aesd           $1.16b,$2.16b
+    eor            $1.16b,$1.16b,$3.16b
+')