aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Bobek <jan.bobek@gmail.com>2019-05-23 16:44:09 -0400
committerPeter Maydell <peter.maydell@linaro.org>2019-06-07 14:28:22 +0100
commita1b4a95c1b8fcaa26c3b1146b8e8e004a2844de6 (patch)
tree2f12e743144c7a83c3d8a818ec8f68374e5beac4
parentbb2149a61987665acad38391e23ca5561732d5ac (diff)
downloadrisu-a1b4a95c1b8fcaa26c3b1146b8e8e004a2844de6.tar.gz
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.c19
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)