diff options
author | Jan Bobek <jan.bobek@gmail.com> | 2019-05-23 16:44:09 -0400 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2019-06-07 14:28:22 +0100 |
commit | a1b4a95c1b8fcaa26c3b1146b8e8e004a2844de6 (patch) | |
tree | 2f12e743144c7a83c3d8a818ec8f68374e5beac4 | |
parent | bb2149a61987665acad38391e23ca5561732d5ac (diff) |
risu_reginfo_i386: rework --xfeatures value parsing
Have the --xfeatures option accept "sse", "avx" and "avx512" in
addition to a plain numerical value, purely for users' convenience.
Don't fail silently when an incorrect value is specified, to avoid
confusion.
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Jan Bobek <jan.bobek@gmail.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | risu_reginfo_i386.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/risu_reginfo_i386.c b/risu_reginfo_i386.c index 01ea179..194e0ad 100644 --- a/risu_reginfo_i386.c +++ b/risu_reginfo_i386.c @@ -53,8 +53,25 @@ const char * const arch_extra_help void process_arch_opt(int opt, const char *arg) { + char *endptr; + assert(opt == FIRST_ARCH_OPT); - xfeatures = strtoull(arg, 0, 0); + + if (!strcmp(arg, "sse")) { + xfeatures = XFEAT_X87 | XFEAT_SSE; + } else if (!strcmp(arg, "avx")) { + xfeatures = XFEAT_X87 | XFEAT_SSE | XFEAT_AVX; + } else if (!strcmp(arg, "avx512")) { + xfeatures = XFEAT_X87 | XFEAT_SSE | XFEAT_AVX | XFEAT_AVX512; + } else { + xfeatures = strtoull(arg, &endptr, 0); + if (*endptr) { + fprintf(stderr, + "Unable to parse '%s' in '%s' into an xfeatures integer mask\n", + endptr, arg); + exit(1); + } + } } const int reginfo_size(void) |