From b8753e3daf5d4bb46d7b2db6315b847beaf36a3e Mon Sep 17 00:00:00 2001 From: Matthew Barr Date: Thu, 22 Jun 2017 10:28:44 +1000 Subject: [PATCH] clean up loops and add AVX-512 --- util/cross_compile.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/util/cross_compile.cpp b/util/cross_compile.cpp index f937f42f..b987ccaf 100644 --- a/util/cross_compile.cpp +++ b/util/cross_compile.cpp @@ -39,11 +39,12 @@ 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 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; }