diff --git a/lib/aarch64/mb_mgr_aarch64.c b/lib/aarch64/mb_mgr_aarch64.c index 808998768508bd507e4060756c3aa034ecdf75b8..2861273369e8aa5d984ee23eb8473cede278adca 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 a3c4a9d9b096a25771dff4257a84b2886cf0c9c8..d66f8d929cdfed835405cfcfd8ba9690428dfa36 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 24929bb04f4c1afdd4339a6e4977ba3cb7a2289c..ea759a8892cef0d081eab2b2f983ecb42ffda389 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 7d083f10cfd8f04a07ea5d3f4cf1dbecf0954bd6..8fdd557db4c4d4c75df9e832bdaf82a4960870b2 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 daaa56644aec21f2c0897b8931d36414fe8002bc..42af339ca2e1519f897f6607010cd443b1adf37c 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 a355ca2ff0594385abcbecd3deaf9f16dfa445c7..a1357fae93cef0689cf4943edf956c49e0a32b9b 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 44e8b36da35f1cba42960b175a8a6646b2056ea1..0d931398c58a4619e637ea5d52e6aeecc12cff63 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)