]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
clean up loops and add AVX-512
authorMatthew Barr <matthew.barr@intel.com>
Thu, 22 Jun 2017 00:28:44 +0000 (10:28 +1000)
committerMatthew Barr <matthew.barr@intel.com>
Mon, 21 Aug 2017 01:20:22 +0000 (11:20 +1000)
util/cross_compile.cpp

index f937f42f61b8df559e7eeac4f57f438dca7cd0a3..b987ccaf9b87ede52d34b5365c15b768726d18aa 100644 (file)
 using namespace std;
 
 struct XcompileMode {
-    const char *name;
+    const string name;
     unsigned long long cpu_features;
 };
 
 static const XcompileMode xcompile_options[] = {
+    { "avx512", HS_CPU_FEATURES_AVX512 },
     { "avx2", HS_CPU_FEATURES_AVX2 },
     { "base", 0 },
 };
@@ -60,12 +61,10 @@ unique_ptr<hs_platform_info> xcompileReadMode(const char *s) {
     bool found_mode = false;
 
     if (!opt.empty()) {
-        const size_t numOpts = ARRAY_LENGTH(xcompile_options);
-        for (size_t i = 0; i < numOpts; i++) {
-            if (opt == xcompile_options[i].name) {
-                DEBUG_PRINTF("found opt %zu:%llu\n", i,
-                             xcompile_options[i].cpu_features);
-                rv.cpu_features = xcompile_options[i].cpu_features;
+        for (const auto &xcompile : xcompile_options) {
+            if (opt == xcompile.name) {
+                DEBUG_PRINTF("found opt %zu:%llu\n", i, xcompile.cpu_features);
+                rv.cpu_features = xcompile.cpu_features;
                 found_mode = true;
                 break;
             }
@@ -88,6 +87,11 @@ string to_string(const hs_platform_info &p) {
 
     if (p.cpu_features) {
         u64a features = p.cpu_features;
+        if (features & HS_CPU_FEATURES_AVX512) {
+            out << " avx512";
+            features &= ~HS_CPU_FEATURES_AVX512;
+        }
+
         if (features & HS_CPU_FEATURES_AVX2) {
             out << " avx2";
             features &= ~HS_CPU_FEATURES_AVX2;
@@ -103,13 +107,11 @@ string to_string(const hs_platform_info &p) {
 
 string xcompileUsage(void) {
     string variants = "Instruction set options: ";
-    const size_t numOpts = ARRAY_LENGTH(xcompile_options);
-    for (size_t i = 0; i < numOpts; i++) {
-        variants += xcompile_options[i].name;
-        if (i + 1 != numOpts) {
-            variants += ", ";
-        }
+    const auto commaspace = ", ";
+    auto sep = "";
+    for (const auto &xcompile : xcompile_options) {
+        variants += sep + xcompile.name;
+        sep = commaspace;
     }
-
     return variants;
 }