Skip to content

Commit a342eba

Browse files
committed
Intel x64 ASM: Add new assembly for AES
Support AES-XTS AVX512/VAES Support AES-GCM AVX512/VAES Support AES-ECB/CBC/CTR AVX512/VAES/AVX1/AES-NI. Remove code from aes_asm.S/aes_asm.asm Add CPU defines for AVX512 and VAES Updated ASM files with new defines for AVX512. Added support for printing out the new CPU Id flags in benchmark. Added new files to Windows projects. aes.c: Supports ECB/CBC/CTR in assembly. Supports calling AVX512/VAES assembly.
1 parent dd6da70 commit a342eba

28 files changed

Lines changed: 47480 additions & 3449 deletions

.github/workflows/symbol-prefixes.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
{
5050
if (($7 !~ /^[0-9]+$/) ||
5151
($8 ~ /^(wc_|wolf|WOLF|__pfx|fe_|sp_[a-zA-Z090-0_]*[0-9])/) ||
52-
($8 ~ /(_avx[12]|_AVX[12]|_sse[12]|_SSE[12]|_aesni|_AESNI|_bmi2|_x64$)/))
52+
($8 ~ /(_avx[12]|_AVX[12]|_sse[12]|_SSE[12]|_aesni|_AESNI|_vaes|_VAES|_avx512|_AVX512|_bmi2|_x64$)/))
5353
{
5454
next;
5555
}

.wolfssl_known_macro_extras

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ NO_AES_DECRYPT
381381
NO_ARDUINO_DEFAULT
382382
NO_ASM
383383
NO_ASN_OLD_TYPE_NAMES
384+
NO_AVX512_SUPPORT
384385
NO_CAMELLIA_CBC
385386
NO_CERT
386387
NO_CERT_IN_TICKET
@@ -459,6 +460,7 @@ NO_STDIO_FGETS_REMAP
459460
NO_STM32_HMAC
460461
NO_TKERNEL_MEM_POOL
461462
NO_TLSX_PSKKEM_PLAIN_ANNOUNCE
463+
NO_VAES_SUPPORT
462464
NO_VERIFY_OID
463465
NO_WC_DHGENERATEPUBLIC
464466
NO_WC_SHE_GETUID

linuxkm/Kbuild

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ $(obj)/wolfcrypt/src/aes_gcm_asm.o: asflags-y := $(WOLFSSL_ASFLAGS) $(ASFLAGS_FP
200200
$(obj)/wolfcrypt/src/aes_gcm_asm.o: OBJECT_FILES_NON_STANDARD := y
201201
$(obj)/wolfcrypt/src/aes_xts_asm.o: asflags-y := $(WOLFSSL_ASFLAGS) $(ASFLAGS_FPU_DISABLE_SIMD_ENABLE)
202202
$(obj)/wolfcrypt/src/aes_xts_asm.o: OBJECT_FILES_NON_STANDARD := y
203+
$(obj)/wolfcrypt/src/aes_x86_64_asm.o: asflags-y := $(WOLFSSL_ASFLAGS) $(ASFLAGS_FPU_DISABLE_SIMD_ENABLE)
204+
$(obj)/wolfcrypt/src/aes_x86_64_asm.o: OBJECT_FILES_NON_STANDARD := y
203205
$(obj)/wolfcrypt/src/sp_x86_64_asm.o: asflags-y := $(WOLFSSL_ASFLAGS) $(ASFLAGS_FPU_DISABLE_SIMD_ENABLE)
204206
$(obj)/wolfcrypt/src/sp_x86_64_asm.o: OBJECT_FILES_NON_STANDARD := y
205207
$(obj)/wolfcrypt/src/sha256_asm.o: asflags-y := $(WOLFSSL_ASFLAGS) $(ASFLAGS_FPU_DISABLE_SIMD_ENABLE)

src/include.am

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ endif
109109

110110
if BUILD_AESNI
111111
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_asm.S
112+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_x86_64_asm.S
112113
if BUILD_X86_ASM
113114
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_gcm_x86_asm.S
114115
else
@@ -259,6 +260,7 @@ endif BUILD_PPC64_ASM
259260

260261
if BUILD_AESNI
261262
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_asm.S
263+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_x86_64_asm.S
262264
if BUILD_X86_ASM
263265
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_gcm_x86_asm.S
264266
else
@@ -532,6 +534,7 @@ endif BUILD_PPC64_ASM
532534

533535
if BUILD_AESNI
534536
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_asm.S
537+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_x86_64_asm.S
535538
if BUILD_X86_ASM
536539
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_gcm_x86_asm.S
537540
else
@@ -867,6 +870,7 @@ endif BUILD_AES
867870

868871
if BUILD_AESNI
869872
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_asm.S
873+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_x86_64_asm.S
870874
if BUILD_X86_ASM
871875
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_gcm_x86_asm.S
872876
else
@@ -1708,6 +1712,7 @@ endif
17081712
if !BUILD_FIPS_V2_PLUS
17091713
if BUILD_AESNI
17101714
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_asm.S
1715+
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_x86_64_asm.S
17111716
if BUILD_X86_ASM
17121717
src_libwolfssl@LIBSUFFIX@_la_SOURCES += wolfcrypt/src/aes_gcm_x86_asm.S
17131718
else

wolfcrypt/benchmark/benchmark.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4794,6 +4794,8 @@ static void print_cpu_features(void)
47944794
if (IS_INTEL_MOVBE(cpuid_flags)) printf(" movbe");
47954795
if (IS_INTEL_BMI1(cpuid_flags)) printf(" bmi1");
47964796
if (IS_INTEL_SHA(cpuid_flags)) printf(" sha");
4797+
if (IS_INTEL_VAES(cpuid_flags)) printf(" vaes");
4798+
if (IS_INTEL_AVX512(cpuid_flags)) printf(" avx512");
47974799
#endif
47984800
#ifdef __aarch64__
47994801
printf("Aarch64 -");

0 commit comments

Comments
 (0)