[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 04/37] crypto/aes: Add AES_SH, AES_ISH macros
From: |
Richard Henderson |
Subject: |
[PATCH v4 04/37] crypto/aes: Add AES_SH, AES_ISH macros |
Date: |
Mon, 3 Jul 2023 12:04:47 +0200 |
These macros will constant fold and avoid the indirection through
memory when fully unrolling some new primitives.
Acked-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
crypto/aes.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/crypto/aes.c b/crypto/aes.c
index 67bb74b8e3..e65c97e0c1 100644
--- a/crypto/aes.c
+++ b/crypto/aes.c
@@ -108,12 +108,24 @@ const uint8_t AES_isbox[256] = {
0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D,
};
+/* AES ShiftRows, for complete unrolling. */
+#define AES_SH(X) (((X) * 5) & 15)
+
const uint8_t AES_shifts[16] = {
- 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12, 1, 6, 11
+ AES_SH(0x0), AES_SH(0x1), AES_SH(0x2), AES_SH(0x3),
+ AES_SH(0x4), AES_SH(0x5), AES_SH(0x6), AES_SH(0x7),
+ AES_SH(0x8), AES_SH(0x9), AES_SH(0xA), AES_SH(0xB),
+ AES_SH(0xC), AES_SH(0xD), AES_SH(0xE), AES_SH(0xF),
};
+/* AES InvShiftRows, for complete unrolling. */
+#define AES_ISH(X) (((X) * 13) & 15)
+
const uint8_t AES_ishifts[16] = {
- 0, 13, 10, 7, 4, 1, 14, 11, 8, 5, 2, 15, 12, 9, 6, 3
+ AES_ISH(0x0), AES_ISH(0x1), AES_ISH(0x2), AES_ISH(0x3),
+ AES_ISH(0x4), AES_ISH(0x5), AES_ISH(0x6), AES_ISH(0x7),
+ AES_ISH(0x8), AES_ISH(0x9), AES_ISH(0xA), AES_ISH(0xB),
+ AES_ISH(0xC), AES_ISH(0xD), AES_ISH(0xE), AES_ISH(0xF),
};
/*
--
2.34.1
- [PATCH v4 00/37] crypto: Provide aes-round.h and host accel, Richard Henderson, 2023/07/03
- [PATCH v4 02/37] tests/multiarch: Add test-aes, Richard Henderson, 2023/07/03
- [PATCH v4 03/37] target/arm: Move aesmc and aesimc tables to crypto/aes.c, Richard Henderson, 2023/07/03
- [PATCH v4 12/37] host/include/i386: Implement aes-round.h, Richard Henderson, 2023/07/03
- [PATCH v4 01/37] util: Add cpuinfo-ppc.c, Richard Henderson, 2023/07/03
- [PATCH v4 17/37] target/ppc: Use aesenc_SB_SR_MC_AK, Richard Henderson, 2023/07/03
- [PATCH v4 10/37] crypto: Add aesdec_ISB_ISR_IMC_AK, Richard Henderson, 2023/07/03
- [PATCH v4 04/37] crypto/aes: Add AES_SH, AES_ISH macros,
Richard Henderson <=
- [PATCH v4 07/37] crypto: Add aesenc_MC, Richard Henderson, 2023/07/03
- [PATCH v4 14/37] host/include/ppc: Implement aes-round.h, Richard Henderson, 2023/07/03
- [PATCH v4 15/37] target/ppc: Use aesenc_SB_SR_AK, Richard Henderson, 2023/07/03
- [PATCH v4 13/37] host/include/aarch64: Implement aes-round.h, Richard Henderson, 2023/07/03
- [PATCH v4 19/37] target/i386: Use aesenc_SB_SR_AK, Richard Henderson, 2023/07/03
- [PATCH v4 08/37] crypto: Add aesdec_IMC, Richard Henderson, 2023/07/03
- [PATCH v4 16/37] target/ppc: Use aesdec_ISB_ISR_AK, Richard Henderson, 2023/07/03
- [PATCH v4 18/37] target/ppc: Use aesdec_ISB_ISR_AK_IMC, Richard Henderson, 2023/07/03
- [PATCH v4 06/37] crypto: Add aesdec_ISB_ISR_AK, Richard Henderson, 2023/07/03