diff options
Diffstat (limited to 'src/analysis/scan/patterns/backends/bitap.c')
-rw-r--r-- | src/analysis/scan/patterns/backends/bitap.c | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/src/analysis/scan/patterns/backends/bitap.c b/src/analysis/scan/patterns/backends/bitap.c index adf66d6..99e16e5 100644 --- a/src/analysis/scan/patterns/backends/bitap.c +++ b/src/analysis/scan/patterns/backends/bitap.c @@ -73,6 +73,8 @@ static void g_bitap_backend_output_stats(const GBitapBackend *); /* ---------------------- OPTIMISATIONS POUR ARCHITECTURE AVX2 ---------------------- */ +#ifdef HAVE_AVX2 + /* Indique la valeur portée par une expression rationnelle. */ static void extend_grouped_strings_avx2(grouped_strings_avx2_t ***, size_t *); @@ -82,13 +84,15 @@ static patid_t enroll_plain_pattern_avx2(GBitapBackend *, GScanContext *, const /* Parcours un contenu binaire à la recherche de motifs. */ static void run_scan_avx2(const GBitapBackend *, GScanContext *, const bin_t *, phys_t); - +#endif /* --------------------- OPTIMISATIONS POUR ARCHITECTURE AVX512 --------------------- */ +#ifdef HAVE_AVX512_F + /* Indique la valeur portée par une expression rationnelle. */ static void extend_grouped_strings_avx512(grouped_strings_avx512_t ***, size_t *); @@ -98,7 +102,7 @@ static patid_t enroll_plain_pattern_avx512(GBitapBackend *, GScanContext *, cons /* Parcours un contenu binaire à la recherche de motifs. */ static void run_scan_avx512(const GBitapBackend *, GScanContext *, const bin_t *, phys_t); - +#endif @@ -270,21 +274,19 @@ static patid_t g_bitap_backend_enroll_plain_pattern(GBitapBackend *backend, GSca { patid_t result; /* Identifiant à retourner */ - - - result = INVALID_PATTERN_ID; - - - - +#ifdef HAVE_AVX512_F if (0) + result = enroll_plain_pattern_avx512(backend, context, plain, len); + else +#endif +#ifdef HAVE_AVX2 + if (0) result = enroll_plain_pattern_avx2(backend, context, plain, len); - else +#endif - result = enroll_plain_pattern_avx512(backend, context, plain, len); - + result = INVALID_PATTERN_ID; return result; @@ -351,13 +353,22 @@ static void g_bitap_backend_run_scan(const GBitapBackend *backend, GScanContext assert(data != NULL); + + + +#ifdef HAVE_AVX512_F if (0) + run_scan_avx512(backend, context, data, dlen); + else +#endif +#ifdef HAVE_AVX2 + if (0) run_scan_avx2(backend, context, data, dlen); - else +#endif - run_scan_avx512(backend, context, data, dlen); + ; g_object_unref(G_OBJECT(content)); @@ -397,6 +408,7 @@ static void g_bitap_backend_output_stats(const GBitapBackend *backend) * Cf. https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#techs=AVX,AVX2 */ +#ifdef HAVE_AVX2 /****************************************************************************** * * @@ -1481,6 +1493,8 @@ static void run_scan_avx2(const GBitapBackend *backend, GScanContext *context, G +#endif + /* ---------------------------------------------------------------------------------- */ @@ -1494,6 +1508,7 @@ static void run_scan_avx2(const GBitapBackend *backend, GScanContext *context, G * - https://uops.info/table.html */ +#ifdef HAVE_AVX512_F /****************************************************************************** * * @@ -1619,9 +1634,6 @@ static patid_t enroll_plain_pattern_avx512(GBitapBackend *backend, GScanContext } - - - /****************************************************************************** * * * Paramètres : backend = moteur de recherche à manipuler. * @@ -2762,3 +2774,4 @@ static void run_scan_avx512__saved(const GBitapBackend *backend, GScanContext *c +#endif |