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,
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
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
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,
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
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
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,
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
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
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,
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
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
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,
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
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
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,
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
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
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
+')