From 3ae2c8e29a7b154a2a0423d314233621ce867299 Mon Sep 17 00:00:00 2001 From: "fisher.yu" Date: Tue, 20 Jun 2023 06:46:24 +0000 Subject: [PATCH] Add SVE to tested arch list of ipsec_xvalid.c Change-Id: Idb4ffa337e6a42b209fb12c8a66562886b772918 --- lib/aarch64/mb_mgr_aarch64.c | 2 -- lib/aarch64/mb_mgr_aarch64_no_aesni.c | 2 -- lib/aarch64/mb_mgr_aarch64_sve256.c | 2 -- test/ipsec_xvalid.c | 21 +++++++++++--- test/misc.h | 5 +++- test/misc_aarch64.S | 41 +++++++++++++++++++++++++++ test/utils.c | 2 ++ 7 files changed, 64 insertions(+), 11 deletions(-) diff --git a/lib/aarch64/mb_mgr_aarch64.c b/lib/aarch64/mb_mgr_aarch64.c index 80899876..28612733 100644 --- a/lib/aarch64/mb_mgr_aarch64.c +++ b/lib/aarch64/mb_mgr_aarch64.c @@ -235,7 +235,6 @@ reset_ooo_mgrs(IMB_MGR *state) snow3g_uea2_ooo->init_done = 0; memset(snow3g_uea2_ooo->ks, 0, sizeof(snow3g_uea2_ooo->ks)); - snow3g_uea2_ooo->road_block = 0; memset(snow3g_uia2_ooo->lens, 0, sizeof(snow3g_uia2_ooo->lens)); @@ -252,7 +251,6 @@ reset_ooo_mgrs(IMB_MGR *state) snow3g_uia2_ooo->init_done = 0; memset(snow3g_uia2_ooo->ks, 0, sizeof(snow3g_uia2_ooo->ks)); - snow3g_uia2_ooo->road_block = 0; return; } diff --git a/lib/aarch64/mb_mgr_aarch64_no_aesni.c b/lib/aarch64/mb_mgr_aarch64_no_aesni.c index a3c4a9d9..d66f8d92 100644 --- a/lib/aarch64/mb_mgr_aarch64_no_aesni.c +++ b/lib/aarch64/mb_mgr_aarch64_no_aesni.c @@ -162,7 +162,6 @@ reset_ooo_mgrs(IMB_MGR *state) snow3g_uea2_ooo->init_done = 0; memset(snow3g_uea2_ooo->ks, 0, sizeof(snow3g_uea2_ooo->ks)); - snow3g_uea2_ooo->road_block = 0; memset(snow3g_uia2_ooo->lens, 0, sizeof(snow3g_uia2_ooo->lens)); @@ -179,7 +178,6 @@ reset_ooo_mgrs(IMB_MGR *state) snow3g_uia2_ooo->init_done = 0; memset(snow3g_uia2_ooo->ks, 0, sizeof(snow3g_uia2_ooo->ks)); - snow3g_uia2_ooo->road_block = 0; return; } diff --git a/lib/aarch64/mb_mgr_aarch64_sve256.c b/lib/aarch64/mb_mgr_aarch64_sve256.c index 24929bb0..ea759a88 100644 --- a/lib/aarch64/mb_mgr_aarch64_sve256.c +++ b/lib/aarch64/mb_mgr_aarch64_sve256.c @@ -235,7 +235,6 @@ reset_ooo_mgrs(IMB_MGR *state) snow3g_uea2_ooo->init_done = 0; memset(snow3g_uea2_ooo->ks, 0, sizeof(snow3g_uea2_ooo->ks)); - snow3g_uea2_ooo->road_block = 0; memset(snow3g_uia2_ooo->lens, 0, sizeof(snow3g_uia2_ooo->lens)); @@ -252,7 +251,6 @@ reset_ooo_mgrs(IMB_MGR *state) snow3g_uia2_ooo->init_done = 0; memset(snow3g_uia2_ooo->ks, 0, sizeof(snow3g_uia2_ooo->ks)); - snow3g_uia2_ooo->road_block = 0; return; } diff --git a/test/ipsec_xvalid.c b/test/ipsec_xvalid.c index 7d083f10..8fdd557d 100644 --- a/test/ipsec_xvalid.c +++ b/test/ipsec_xvalid.c @@ -166,6 +166,7 @@ const struct str_value_mapping arch_str_map[] = { {.name = "AVX2", .values.arch_type = IMB_ARCH_AVX2 }, {.name = "AVX512", .values.arch_type = IMB_ARCH_AVX512 }, {.name = "AARCH64", .values.arch_type = IMB_ARCH_AARCH64 }, + {.name = "SVE256", .values.arch_type = IMB_ARCH_SVE256 }, }; struct str_value_mapping cipher_algo_str_map[] = { @@ -690,8 +691,8 @@ struct custom_job_params custom_job_params = { }; /* AESNI_EMU disabled by default */ -uint8_t enc_archs[IMB_ARCH_NUM] = {0, 0, 1, 1, 1, 1, 1}; -uint8_t dec_archs[IMB_ARCH_NUM] = {0, 0, 1, 1, 1, 1, 1}; +uint8_t enc_archs[IMB_ARCH_NUM] = {0, 0, 1, 1, 1, 1, 1, 1}; +uint8_t dec_archs[IMB_ARCH_NUM] = {0, 0, 1, 1, 1, 1, 1, 1}; uint64_t flags = 0; /* flags passed to alloc_mb_mgr() */ @@ -1716,6 +1717,10 @@ perform_safe_checks(IMB_MGR *mgr, const IMB_ARCH arch, const char *dir) dump_simd_regs(); simd_size = SIMD_MEM_SIZE; break; + case IMB_ARCH_SVE256: + dump_sve256_regs(); + simd_size = SVE256_MEM_SIZE; + break; #endif default: fprintf(stderr, @@ -2519,6 +2524,10 @@ run_test(const IMB_ARCH enc_arch, const IMB_ARCH dec_arch, case IMB_ARCH_AARCH64: init_mb_mgr_aarch64(enc_mgr); break; + case IMB_ARCH_SVE256: + init_mb_mgr_aarch64_sve256(enc_mgr); + break; + #endif default: fprintf(stderr, "Invalid architecture\n"); @@ -2573,6 +2582,9 @@ run_test(const IMB_ARCH enc_arch, const IMB_ARCH dec_arch, case IMB_ARCH_AARCH64: init_mb_mgr_aarch64(dec_mgr); break; + case IMB_ARCH_SVE256: + init_mb_mgr_aarch64_sve256(dec_mgr); + break; #endif default: fprintf(stderr, "Invalid architecture\n"); @@ -2766,9 +2778,9 @@ static void usage(const char *app_name) "-v: verbose, prints extra information\n" #ifdef __aarch64__ "--enc-arch: encrypting with architecture " - "(NO-AESNI/AARCH64)\n" + "(NO-AESNI/AARCH64/SVE256)\n" "--dec-arch: decrypting with architecture " - "(NO-AESNI/AARCH64)\n" + "(NO-AESNI/AARCH64/SVE256)\n" #else "--enc-arch: encrypting with architecture " "(NO-AESNI/SSE/AVX/AVX2/AVX512)\n" @@ -2781,6 +2793,7 @@ static void usage(const char *app_name) "--aead-algo: Select AEAD algorithm to run on the custom test\n" #ifdef __aarch64__ "--no-aarch64: Don't do AARCH64\n" + "--no-sve256: Don't do SVE256\n" #else "--no-avx512: Don't do AVX512\n" "--no-avx2: Don't do AVX2\n" diff --git a/test/misc.h b/test/misc.h index daaa5664..42af339c 100644 --- a/test/misc.h +++ b/test/misc.h @@ -331,9 +331,11 @@ static const char *misc_hash_alg_to_str(const IMB_HASH_ALG mode) #define SIMD_MEM_SIZE 32*16 +#define SVE256_MEM_SIZE 32*32 + /* Memory allocated */ uint8_t gps[GP_MEM_SIZE]; -uint8_t simd_regs[SIMD_MEM_SIZE]; +uint8_t simd_regs[SVE256_MEM_SIZE]; /* Read the stack pointer */ void *rdrsp(void); @@ -341,6 +343,7 @@ void *rdrsp(void); /* Functions to dump all registers into predefined memory */ void dump_gps(void); void dump_simd_regs(void); +void dump_sve256_regs(void); #endif /* __aarch64__ */ diff --git a/test/misc_aarch64.S b/test/misc_aarch64.S index a355ca2f..a1357fae 100644 --- a/test/misc_aarch64.S +++ b/test/misc_aarch64.S @@ -26,6 +26,8 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **********************************************************************/ +.arch armv8-a+sve + .global dump_gps .type dump_gps,%function .align 5 @@ -77,6 +79,45 @@ dump_simd_regs: ret +.global dump_sve256_regs +.type dump_sve256_regs,%function +.align 5 +dump_sve256_regs: + ldr x0,=simd_regs + str z0,[x0, #0, MUL VL] + str z1,[x0, #1, MUL VL] + str z2,[x0, #2, MUL VL] + str z3,[x0, #3, MUL VL] + str z4,[x0, #4, MUL VL] + str z5,[x0, #5, MUL VL] + str z6,[x0, #6, MUL VL] + str z7,[x0, #7, MUL VL] + str z8,[x0, #8, MUL VL] + str z9,[x0, #9, MUL VL] + str z10,[x0, #10, MUL VL] + str z11,[x0, #11, MUL VL] + str z12,[x0, #12, MUL VL] + str z13,[x0, #13, MUL VL] + str z14,[x0, #14, MUL VL] + str z15,[x0, #15, MUL VL] + str z16,[x0, #16, MUL VL] + str z17,[x0, #17, MUL VL] + str z18,[x0, #18, MUL VL] + str z19,[x0, #19, MUL VL] + str z20,[x0, #20, MUL VL] + str z21,[x0, #21, MUL VL] + str z22,[x0, #22, MUL VL] + str z23,[x0, #23, MUL VL] + str z24,[x0, #24, MUL VL] + str z25,[x0, #25, MUL VL] + str z26,[x0, #26, MUL VL] + str z27,[x0, #27, MUL VL] + str z28,[x0, #28, MUL VL] + str z29,[x0, #29, MUL VL] + str z30,[x0, #30, MUL VL] + str z31,[x0, #31, MUL VL] + + ret .global rdrsp .type rdrsp,%function diff --git a/test/utils.c b/test/utils.c index 44e8b36d..0d931398 100644 --- a/test/utils.c +++ b/test/utils.c @@ -183,6 +183,8 @@ update_flags_and_archs(const char *arg, arch_support[IMB_ARCH_SSE] = 0; else if (strcmp(arg, "--no-aarch64") ==0) arch_support[IMB_ARCH_AARCH64] = 0; + else if (strcmp(arg, "--no-sve256") ==0) + arch_support[IMB_ARCH_SVE256] = 0; else if (strcmp(arg, "--aesni-emu") == 0) arch_support[IMB_ARCH_NOAESNI] = 1; else if (strcmp(arg, "--no-aesni-emu") == 0) -- GitLab